• Tao Ma's avatar
    block: Make rq_affinity = 1 work as expected · 35ae66e0
    Tao Ma authored
    Commit 5757a6d7 introduced a new rq_affinity = 2 so as to make
    the request completed in the __make_request cpu. But it makes the
    old rq_affinity = 1 not work any more. The root cause is that
    if the 'cpu' and 'req->cpu' is in the same group and cpu != req->cpu,
    ccpu will be the same as group_cpu, so the completion will be
    excuted in the 'cpu' not 'group_cpu'.
    
    This patch fix problem by simpling removing group_cpu and the codes
    are more explicit now. If ccpu == cpu, we complete in cpu, otherwise
    we raise_blk_irq to ccpu.
    
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Roland Dreier <roland@purestorage.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: default avatarTao Ma <boyu.mt@taobao.com>
    Reviewed-by: default avatarShaohua Li <shaohua.li@intel.com>
    Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
    35ae66e0
blk-softirq.c 4.12 KB