• Lai Jiangshan's avatar
    workqueue: pick cwq instead of pool in __queue_work() · 8594fade
    Lai Jiangshan authored
    Currently, __queue_work() chooses the pool to queue a work item to and
    then determines cwq from the target wq and the chosen pool.  This is a
    bit backwards in that we can determine cwq first and simply use
    cwq->pool.  This way, we can skip get_std_worker_pool() in queueing
    path which will be a hurdle when implementing custom worker pools.
    
    Update __queue_work() such that it chooses the target cwq and then use
    cwq->pool instead of the other way around.  While at it, add missing
    {} in an if statement.
    
    This patch doesn't introduce any functional changes.
    
    tj: The original patch had two get_cwq() calls - the first to
        determine the pool by doing get_cwq(cpu, wq)->pool and the second
        to determine the matching cwq from get_cwq(pool->cpu, wq).
        Updated the function such that it chooses cwq instead of pool and
        removed the second call.  Rewrote the description.
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    8594fade
workqueue.c 105 KB