workqueue: move nr_running into worker_pool
authorTejun Heo <tj@kernel.org>
Thu, 24 Jan 2013 19:39:44 +0000 (11:39 -0800)
committerTejun Heo <tj@kernel.org>
Thu, 7 Feb 2013 21:14:20 +0000 (13:14 -0800)
commite19e397a85f33100bfa4210e256bec82fe22e167
tree18b9b0f883561584027a0085586d4f31abcba213
parent1606283622689bdc460052b4a1281c36de13fe49
workqueue: move nr_running into worker_pool

As nr_running is likely to be accessed from other CPUs during
try_to_wake_up(), it was kept outside worker_pool; however, while less
frequent, other fields in worker_pool are accessed from other CPUs
for, e.g., non-reentrancy check.  Also, with recent pool related
changes, accessing nr_running matching the worker_pool isn't as simple
as it used to be.

Move nr_running inside worker_pool.  Keep it aligned to cacheline and
define CPU pools using DEFINE_PER_CPU_SHARED_ALIGNED().  This should
give at least the same cacheline behavior.

get_pool_nr_running() is replaced with direct pool->nr_running
accesses.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Joonsoo Kim <js1304@gmail.com>
kernel/workqueue.c