block: fix missing blkcg_bio_issue_init
authorMuchun Song <songmuchun@bytedance.com>
Wed, 13 Jul 2022 14:02:26 +0000 (22:02 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 14 Jul 2022 16:54:49 +0000 (10:54 -0600)
The commit 513616843d73 ("block: remove superfluous calls to
blkcg_bio_issue_init") has removed blkcg_bio_issue_init from
__bio_clone since submit_bio will override ->bi_issue.
However, __blk_queue_split is called after blkcg_bio_issue_init
(see blk_mq_submit_bio) in submit_bio. In this case, the
->bi_issue is 0. Fix it.

Fixes: 513616843d73 ("block: remove superfluous calls to blkcg_bio_issue_init")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Link: https://lore.kernel.org/r/20220713140226.68135-1-songmuchun@bytedance.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-merge.c

index 7771dacc99cb7d30328b277ac6866c8b2bf39f44..f5e6527ebc9c11d7a9d5b9641c17a4072ff7e2cb 100644 (file)
@@ -345,6 +345,7 @@ void __blk_queue_split(struct request_queue *q, struct bio **bio,
                /* there isn't chance to merge the splitted bio */
                split->bi_opf |= REQ_NOMERGE;
 
+               blkcg_bio_issue_init(split);
                bio_chain(split, *bio);
                trace_block_split(split, (*bio)->bi_iter.bi_sector);
                submit_bio_noacct(*bio);