lkml.org 
[lkml]   [2022]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.17 18/20] blk-mq: don't clear flush_rq from tags->rqs[]
    Date
    From: Ming Lei <ming.lei@redhat.com>

    [ Upstream commit 6cfeadbff3f8905f2854735ebb88e581402c16c4 ]

    commit 364b61818f65 ("blk-mq: clearing flush request reference in
    tags->rqs[]") is added to clear the to-be-free flush request from
    tags->rqs[] for avoiding use-after-free on the flush rq.

    Yu Kuai reported that blk_mq_clear_flush_rq_mapping() slows down boot time
    by ~8s because running scsi probe which may create and remove lots of
    unpresent LUNs on megaraid-sas which uses BLK_MQ_F_TAG_HCTX_SHARED and
    each request queue has lots of hw queues.

    Improve the situation by not running blk_mq_clear_flush_rq_mapping if
    disk isn't added when there can't be any flush request issued.

    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20220616014401.817001-4-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    block/blk-mq.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/block/blk-mq.c b/block/blk-mq.c
    index 8f77023c0f39..047d8b44878f 100644
    --- a/block/blk-mq.c
    +++ b/block/blk-mq.c
    @@ -3413,8 +3413,9 @@ static void blk_mq_exit_hctx(struct request_queue *q,
    if (blk_mq_hw_queue_mapped(hctx))
    blk_mq_tag_idle(hctx);

    - blk_mq_clear_flush_rq_mapping(set->tags[hctx_idx],
    - set->queue_depth, flush_rq);
    + if (blk_queue_init_done(q))
    + blk_mq_clear_flush_rq_mapping(set->tags[hctx_idx],
    + set->queue_depth, flush_rq);
    if (set->ops->exit_request)
    set->ops->exit_request(set, flush_rq, hctx_idx);

    --
    2.35.1
    \
     
     \ /
      Last update: 2022-06-21 23:00    [W:2.719 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site