Re: [PATCH] blk-mq: Properly init bios from blk_mq_alloc_request_hctx()
From: Ming Lei <hidden>
Date: 2022-10-23 13:14:17
Also in:
lkml
On Sun, Oct 23, 2022 at 12:07:26AM +0800, John Garry wrote:
quoted hunk ↗ jump to hunk
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. Move init'ing of those members to common blk_mq_rq_ctx_init(). Fixes: 1f5bd336b9150 ("blk-mq: add blk_mq_alloc_request_hctx") Suggested-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: John Garry <redacted>diff --git a/block/blk-mq.c b/block/blk-mq.c index 8070b6c10e8d..260adeb2e455 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c@@ -402,6 +402,10 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data, } } + rq->__data_len = 0; + rq->__sector = (sector_t) -1; + rq->bio = rq->biotail = NULL; + return rq; }@@ -591,9 +595,6 @@ struct request *blk_mq_alloc_request(struct request_queue *q, blk_opf_t opf, if (!rq) goto out_queue_exit; } - rq->__data_len = 0; - rq->__sector = (sector_t) -1; - rq->bio = rq->biotail = NULL;
This patch looks not good, why do you switch to initialize the three fields twice in fast path? BTW, we know blk_mq_alloc_request_hctx() has big trouble, so please avoid to extend it to other use cases. Thanks, Ming