• Tejun Heo's avatar
    workqueue: make hotplug processing per-pool · 94cf58bb
    Tejun Heo authored
    Instead of holding locks from both pools and then processing the pools
    together, make hotplug processing per-pool - grab locks of one pool,
    process it, release it and then proceed to the next pool.
    
    rebind_workers() is updated to take and process @pool instead of @gcwq
    which results in a lot of de-indentation.  gcwq_claim_assoc_and_lock()
    and its counterpart are replaced with in-line per-pool locking.
    
    While this patch changes processing order across pools, order within
    each pool remains the same.  As each pool is independent, this
    shouldn't break anything.
    
    This is part of an effort to remove global_cwq and make worker_pool
    the top level abstraction, which in turn will help implementing worker
    pools with user-specified attributes.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    94cf58bb
workqueue.c 107 KB