lkml.org 
[lkml]   [2014]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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


\
 
 \ /
  Last update: 2014-06-19 18:41    [W:0.028 / U:0.536 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site