• Tejun Heo's avatar
    workqueue: move nr_running into worker_pool · e19e397a
    Tejun Heo authored
    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: default avatarTejun Heo <tj@kernel.org>
    Cc: Joonsoo Kim <js1304@gmail.com>
    e19e397a
workqueue.c 105 KB