]> git.baikalelectronics.ru Git - kernel.git/commit
workqueue: restore POOL_MANAGING_WORKERS
authorLai Jiangshan <laijs@cn.fujitsu.com>
Mon, 10 Sep 2012 17:03:33 +0000 (10:03 -0700)
committerTejun Heo <tj@kernel.org>
Mon, 10 Sep 2012 17:04:54 +0000 (10:04 -0700)
commitc0584c4f512310ff68a208c3e8ab62d19429a625
tree00d89d5778d4ab8320f6bf24d81e33a290f9fcb1
parent8353b2db99299ac1147112a92d9cbc8ee9ba5e6f
workqueue: restore POOL_MANAGING_WORKERS

This patch restores POOL_MANAGING_WORKERS which was replaced by
pool->manager_mutex by bd564bfef6 "workqueue: use mutex for global_cwq
manager exclusion".

There's a subtle idle worker depletion bug across CPU hotplug events
and we need to distinguish an actual manager and CPU hotplug
preventing management.  POOL_MANAGING_WORKERS will be used for the
former and manager_mutex the later.

This patch just lays POOL_MANAGING_WORKERS on top of the existing
manager_mutex and doesn't introduce any synchronization changes.  The
next patch will update it.

Note that this patch fixes a non-critical anomaly where
too_many_workers() may return %true spuriously while CPU hotplug is in
progress.  While the issue could schedule idle timer spuriously, it
didn't trigger any actual misbehavior.

tj: Rewrote patch description.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c