• Tejun Heo's avatar
    workqueue: better define locking rules around worker creation / destruction · cd549687
    Tejun Heo authored
    When a manager creates or destroys workers, the operations are always
    done with the manager_mutex held; however, initial worker creation or
    worker destruction during pool release don't grab the mutex.  They are
    still correct as initial worker creation doesn't require
    synchronization and grabbing manager_arb provides enough exclusion for
    pool release path.
    
    Still, let's make everyone follow the same rules for consistency and
    such that lockdep annotations can be added.
    
    Update create_and_start_worker() and put_unbound_pool() to grab
    manager_mutex around thread creation and destruction respectively and
    add lockdep assertions to create_worker() and destroy_worker().
    
    This patch doesn't introduce any visible behavior changes.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    cd549687
workqueue.c 122 KB