• Tejun Heo's avatar
    workqueue: replace POOL_MANAGING_WORKERS flag with worker_pool->manager_arb · 34a06bd6
    Tejun Heo authored
    POOL_MANAGING_WORKERS is used to synchronize the manager role.
    Synchronizing among workers doesn't need blocking and that's why it's
    implemented as a flag.
    
    It got converted to a mutex a while back to add blocking wait from CPU
    hotplug path - 60373152 ("workqueue: use mutex for global_cwq
    manager exclusion").  Later it turned out that synchronization among
    workers and cpu hotplug need to be done separately.  Eventually,
    POOL_MANAGING_WORKERS is restored and workqueue->manager_mutex got
    morphed into workqueue->assoc_mutex - 552a37e9 ("workqueue: restore
    POOL_MANAGING_WORKERS") and b2eb83d1 ("workqueue: rename
    manager_mutex to assoc_mutex").
    
    Now, we're gonna need to be able to lock out managers from
    destroy_workqueue() to support multiple unbound pools with custom
    attributes making it again necessary to be able to block on the
    manager role.  This patch replaces POOL_MANAGING_WORKERS with
    worker_pool->manager_arb.
    
    This patch doesn't introduce any behavior changes.
    
    v2: s/manager_mutex/manager_arb/
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    34a06bd6
workqueue.c 105 KB