]> git.ipfire.org Git - thirdparty/linux.git/commit - block/blk-mq-tag.c
blk-mq: manage hctx map via xarray
authorMing Lei <ming.lei@redhat.com>
Tue, 8 Mar 2022 07:32:19 +0000 (15:32 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 9 Mar 2022 02:39:38 +0000 (19:39 -0700)
commit4e5cc99e1e485954a9c09872e0eeea570fb2b5a5
treea48a03ee09ac2cad11e39b6d435080229b649f73
parent4f481208749a22d3570073e629dbc27d7d27c8da
blk-mq: manage hctx map via xarray

First code becomes more clean by switching to xarray from plain array.

Second use-after-free on q->queue_hw_ctx can be fixed because
queue_for_each_hw_ctx() may be run when updating nr_hw_queues is
in-progress. With this patch, q->hctx_table is defined as xarray, and
this structure will share same lifetime with request queue, so
queue_for_each_hw_ctx() can use q->hctx_table to lookup hctx reliably.

Reported-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220308073219.91173-7-ming.lei@redhat.com
[axboe: fix blk_mq_hw_ctx forward declaration]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq-debugfs.h
block/blk-mq-tag.c
block/blk-mq.c
block/blk-mq.h
include/linux/blk-mq.h
include/linux/blkdev.h