2022-10-26 10:36:23

by John Garry

[permalink] [raw]
Subject: [PATCH v2] blk-mq: Properly init requests from blk_mq_alloc_request_hctx()

Function blk_mq_alloc_request_hctx() is missing zeroing/init of rq->bio,
biotail, __sector, and __data_len members, which blk_mq_alloc_request()
has, so duplicate what we do in blk_mq_alloc_request().

Fixes: 1f5bd336b9150 ("blk-mq: add blk_mq_alloc_request_hctx")
Signed-off-by: John Garry <[email protected]>
---
Difference to v1:
- init rq members in blk_mq_alloc_request_hctx(), rather than
blk_mq_rq_ctx_init() (Ming Lei)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 497c413bce80..a1b6afe43913 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -611,6 +611,7 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
.nr_tags = 1,
};
u64 alloc_time_ns = 0;
+ struct request *rq;
unsigned int cpu;
unsigned int tag;
int ret;
@@ -660,8 +661,12 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
tag = blk_mq_get_tag(&data);
if (tag == BLK_MQ_NO_TAG)
goto out_queue_exit;
- return blk_mq_rq_ctx_init(&data, blk_mq_tags_from_data(&data), tag,
+ rq = blk_mq_rq_ctx_init(&data, blk_mq_tags_from_data(&data), tag,
alloc_time_ns);
+ rq->__data_len = 0;
+ rq->__sector = (sector_t) -1;
+ rq->bio = rq->biotail = NULL;
+ return rq;

out_queue_exit:
blk_queue_exit(q);
--
2.25.1



2022-10-26 12:08:34

by Ming Lei

[permalink] [raw]
Subject: Re: [PATCH v2] blk-mq: Properly init requests from blk_mq_alloc_request_hctx()

On Wed, Oct 26, 2022 at 6:04 PM John Garry <[email protected]> wrote:
>
> Function blk_mq_alloc_request_hctx() is missing zeroing/init of rq->bio,
> biotail, __sector, and __data_len members, which blk_mq_alloc_request()
> has, so duplicate what we do in blk_mq_alloc_request().
>
> Fixes: 1f5bd336b9150 ("blk-mq: add blk_mq_alloc_request_hctx")
> Signed-off-by: John Garry <[email protected]>

Reviewed-by: Ming Lei <[email protected]>


2022-10-28 14:15:46

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH v2] blk-mq: Properly init requests from blk_mq_alloc_request_hctx()

On Wed, 26 Oct 2022 18:35:13 +0800, John Garry wrote:
> Function blk_mq_alloc_request_hctx() is missing zeroing/init of rq->bio,
> biotail, __sector, and __data_len members, which blk_mq_alloc_request()
> has, so duplicate what we do in blk_mq_alloc_request().
>
>

Applied, thanks!

[1/1] blk-mq: Properly init requests from blk_mq_alloc_request_hctx()
commit: e3c5a78cdb6237bfb9641b63cccf366325229eec

Best regards,
--
Jens Axboe