• Tejun Heo's avatar
    workqueue: RCU protect wq->dfl_pwq and implement accessors for it · 9f66cff2
    Tejun Heo authored
    wq->cpu_pwq is RCU protected but wq->dfl_pwq isn't. This is okay because
    currently wq->dfl_pwq is used only accessed to install it into wq->cpu_pwq
    which doesn't require RCU access. However, we want to be able to access
    wq->dfl_pwq under RCU in the future to access its __pod_cpumask and the code
    can be made easier to read by making the two pwq fields behave in the same
    way.
    
    - Make wq->dfl_pwq RCU protected.
    
    - Add unbound_pwq_slot() and unbound_pwq() which can access both ->dfl_pwq
      and ->cpu_pwq. The former returns the double pointer that can be used
      access and update the pwqs. The latter performs locking check and
      dereferences the double pointer.
    
    - pwq accesses and updates are converted to use unbound_pwq[_slot]().
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
    9f66cff2
workqueue.c 195 KB