• T
    workqueue: record pool ID instead of CPU in work->data when off-queue · 7c3eed5c
    Tejun Heo 提交于
    Currently, when a work item is off-queue, work->data records the CPU
    it was last on, which is used to locate the last executing instance
    for non-reentrance, flushing, etc.
    
    We're in the process of removing global_cwq and making worker_pool the
    top level abstraction.  This patch makes work->data point to the pool
    it was last associated with instead of CPU.
    
    After the previous WORK_OFFQ_POOL_CPU and worker_poo->id additions,
    the conversion is fairly straight-forward.  WORK_OFFQ constants and
    functions are modified to record and read back pool ID instead.
    worker_pool_by_id() is added to allow looking up pool from ID.
    get_work_pool() replaces get_work_gcwq(), which is reimplemented using
    get_work_pool().  get_work_pool_id() replaces work_cpu().
    
    This patch shouldn't introduce any observable behavior changes.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Reviewed-by: NLai Jiangshan <laijs@cn.fujitsu.com>
    7c3eed5c
workqueue.c 107.2 KB