It has become necessary to be able to optionally disable
direct memory reclaim for certain taskqs. To support
this the TASKQ_NORECLAIM flags has been added which sets
the PF_MEMALLOC bit for all threads in the taskq.
#define TASKQ_DYNAMIC 0x00000004
#define TASKQ_THREADS_CPU_PCT 0x00000008
#define TASKQ_DC_BATCH 0x00000010
+#define TASKQ_NORECLAIM 0x00000020
typedef unsigned long taskqid_t;
typedef void (task_func_t)(void *);
ASSERT(tq);
current->flags |= PF_NOFREEZE;
+ /* Disable the direct memory reclaim path */
+ if (tq->tq_flags & TASKQ_NORECLAIM)
+ current->flags |= PF_MEMALLOC;
+
sigfillset(&blocked);
sigprocmask(SIG_BLOCK, &blocked, NULL);
flush_signals(current);