diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-02-10 14:04:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-02-10 14:04:05 -0500 |
commit | 9aece75c138d93bde79a2baeb9187a1109b4e952 (patch) | |
tree | 6232a1670592937d5aa5d4250aeb991b686381b1 /include | |
parent | 2178cbc68f3602dc0b5949b9be2c8383ad3d93ef (diff) | |
parent | d6e022f1d207a161cd88e08ef0371554680ffc46 (diff) |
Merge branch 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue fixes from Tejun Heo:
"Workqueue fixes for v4.5-rc3.
- Remove a spurious triggering of flush dependency warning.
- Officially break local execution guarantee of unbound work items
and add a debug feature to flush out usages which depend on it.
- Work around CPU -> NODE mapping becoming invalid on CPU offline.
The branch is young but pushing out early as stable kernels are being
affected"
* 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup
workqueue: implement "workqueue.debug_force_rr_cpu" debug feature
workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs
Revert "workqueue: make sure delayed work run in local cpu"
workqueue: skip flush dependency checks for legacy workqueues
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/workqueue.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 0e32bc71245e..ca73c503b92a 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
@@ -311,6 +311,7 @@ enum { | |||
311 | 311 | ||
312 | __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */ | 312 | __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */ |
313 | __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */ | 313 | __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */ |
314 | __WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */ | ||
314 | 315 | ||
315 | WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ | 316 | WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ |
316 | WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */ | 317 | WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */ |
@@ -411,12 +412,12 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, | |||
411 | alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args) | 412 | alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args) |
412 | 413 | ||
413 | #define create_workqueue(name) \ | 414 | #define create_workqueue(name) \ |
414 | alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, (name)) | 415 | alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name)) |
415 | #define create_freezable_workqueue(name) \ | 416 | #define create_freezable_workqueue(name) \ |
416 | alloc_workqueue("%s", WQ_FREEZABLE | WQ_UNBOUND | WQ_MEM_RECLAIM, \ | 417 | alloc_workqueue("%s", __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND | \ |
417 | 1, (name)) | 418 | WQ_MEM_RECLAIM, 1, (name)) |
418 | #define create_singlethread_workqueue(name) \ | 419 | #define create_singlethread_workqueue(name) \ |
419 | alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name) | 420 | alloc_ordered_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, name) |
420 | 421 | ||
421 | extern void destroy_workqueue(struct workqueue_struct *wq); | 422 | extern void destroy_workqueue(struct workqueue_struct *wq); |
422 | 423 | ||