• Tejun Heo's avatar
    workqueue: Move pwq->max_active to wq->max_active · a045a272
    Tejun Heo authored
    max_active is a workqueue-wide setting and the configured value is stored in
    wq->saved_max_active; however, the effective value was stored in
    pwq->max_active. While this is harmless, it makes max_active update process
    more complicated and gets in the way of the planned max_active semantic
    updates for unbound workqueues.
    
    This patches moves pwq->max_active to wq->max_active. This simplifies the
    code and makes freezing and noop max_active updates cheaper too. No
    user-visible behavior change is intended.
    
    As wq->max_active is updated while holding wq mutex but read without any
    locking, it now uses WRITE/READ_ONCE(). A new locking locking rule WO is
    added for it.
    
    v2: wq->max_active now uses WRITE/READ_ONCE() as suggested by Lai.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
    a045a272
workqueue.c 192 KB