Messages in this thread | | | Date | Thu, 19 Jun 2014 12:25:13 -0400 | From | Tejun Heo <> | Subject | Re: [PATCH] workqueue: remove the empty check in too_many_workers() |
| |
On Tue, Jun 03, 2014 at 03:32:07PM +0800, Lai Jiangshan wrote: > The commit ea1abd6197d5 ("workqueue: reimplement idle worker rebinding") > used a trick which simply removes all to-be-bound idle workers from the > idle list and lets them add themselves back after completing rebinding. > > And this trick caused the @worker_pool->nr_idle may deviate than the actual > number of idle workers on @worker_pool->idle_list. More specifically, > nr_idle may be non-zero while ->idle_list is empty. All users of > ->nr_idle and ->idle_list are audited. The only affected one is > too_many_workers() which is updated to check %false if ->idle_list is > empty regardless of ->nr_idle. > > The commit/trick was complicated due to it just tried to simplify an even > more complicated problem (workers had to rebind itself). But the commit > a9ab775bcadf ("workqueue: directly restore CPU affinity of workers > from CPU_ONLINE") fixed all these problems and the mentioned trick was > useless and is gone. > > So, now the @worker_pool->nr_idle is exactly the actual number of workers > on @worker_pool->idle_list. too_many_workers() should recover as it was > before the trick. So we remove the empty check. > > Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Applied to wq/for-3.17.
Thanks.
-- tejun
| |