workqueue: wake up a worker when a rescuer is leaving a gcwq
commit1257389b28b59639173c961b49fefe06820f6fb6
authorTejun Heo <tj@kernel.org>
Mon, 14 Feb 2011 13:04:46 +0000 (14 14:04 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 24 Feb 2011 22:54:32 +0000 (24 14:54 -0800)
treed3045e36a7fe586520a84c2a6ab424990f848421
parentd72ffd63dfec63e7998533b867b5e27a0cb19ed7
workqueue: wake up a worker when a rescuer is leaving a gcwq

commit 7576958a9d5a4a677ad7dd40901cdbb6c1110c98 upstream.

After executing the matching works, a rescuer leaves the gcwq whether
there are more pending works or not.  This may decrease the
concurrency level to zero and stall execution until a new work item is
queued on the gcwq.

Make rescuer wake up a regular worker when it leaves a gcwq if there
are more works to execute, so that execution isn't stalled.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/workqueue.c