blk-mq: use percpu csd to remote complete instead of per-rq csd
authorChengming Zhou <zhouchengming@bytedance.com>
Mon, 17 Jul 2023 04:00:55 +0000 (12:00 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 17 Jul 2023 14:18:21 +0000 (08:18 -0600)
commit660e802c76c89e871c29cd3174c07c8d23e39c35
tree8e5a7b656e333be8012a4c5688a48c2f06afd3b9
parent43c9835b144c7ce29efe142d662529662a9eb376
blk-mq: use percpu csd to remote complete instead of per-rq csd

If request need to be completed remotely, we insert it into percpu llist,
and smp_call_function_single_async() if llist is empty previously.

We don't need to use per-rq csd, percpu csd is enough. And the size of
struct request is decreased by 24 bytes.

This way is cleaner, and looks correct, given block softirq is guaranteed
to be scheduled to consume the list if one new request is added to this
percpu list, either smp_call_function_single_async() returns -EBUSY or 0.

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230717040058.3993930-2-chengming.zhou@linux.dev
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c
include/linux/blk-mq.h