[PATCHSET] workqueue: break local execution guarantee of unbound work items

From: Tejun Heo
Date: Tue Feb 09 2016 - 18:15:01 EST


Hello,

Workqueue used to implicitly guarantee local execution of unbound work
items. Recent timer updates broke that for delayed work items and the
attempt to restore it ended up causing more harm than good. It has
been decided to take the chance and officially break it.

This patchset reverts 874bbfe600a6 ("workqueue: make sure delayed work
run in local cpu"), expands wq_unbound_cpu_mask so that it also
applies to unbound work items queued on percpu workqueues, and
implements a debug feature which forces wq_unbound_cpu_mask based
round-robin selection to flush out usages which depend on the local
execution guarantee.

I'll push the patchset through wq/for-4.5-fixes soon.

The patchset contains the following three patches.

0001-Revert-workqueue-make-sure-delayed-work-run-in-local.patch
0002-workqueue-schedule-WORK_CPU_UNBOUND-work-on-wq_unbou.patch
0003-workqueue-implement-workqueue.debug_force_rr_cpu-deb.patch

and available in the following git branch.

git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git review-rr_cpu

Documentation/kernel-parameters.txt | 11 ++++++
kernel/workqueue.c | 61 ++++++++++++++++++++++++++++++++----
lib/Kconfig.debug | 15 ++++++++
3 files changed, 81 insertions(+), 6 deletions(-)

Thanks.

--
tejun