workqueue: separate iteration role from worker_idr
authorLai Jiangshan <laijs@cn.fujitsu.com>
Tue, 20 May 2014 09:46:31 +0000 (17:46 +0800)
committerTejun Heo <tj@kernel.org>
Tue, 20 May 2014 14:59:31 +0000 (10:59 -0400)
commitda028469ba173e9c634b6ecf80bb0c69c7d1024d
tree03fb68749d70240606157675161a47d9c367e213
parent3347fc9f36e7e5d3ebe504fc4034745b5d8971d3
workqueue: separate iteration role from worker_idr

worker_idr has the iteration (iterating for attached workers) and
worker ID duties. These two duties don't have to be tied together. We
can separate them and use a list for tracking attached workers and
iteration.

Before this separation, it wasn't possible to add rescuer workers to
worker_idr due to rescuer workers couldn't allocate ID dynamically
because ID-allocation depends on memory-allocation, which rescuer
can't depend on.

After separation, we can easily add the rescuer workers to the list for
iteration without any memory-allocation. It is required when we attach
the rescuer worker to the pool in later patch.

tj: Minor description updates.

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