[PATCH 6.12.y 1/3] block: Reorder the request allocation code in blk_mq_submit_bio()
From: Simon Liebold
Date: Wed Aug 12 2026 - 10:03:02 EST
From: Bart Van Assche <bvanassche@xxxxxxx>
[ Upstream commit 44e41381591dc5b4ea67a9f170b4ec85c817586e ]
Help the CPU branch predictor in case of a cache hit by handling the cache
hit scenario first.
Reviewed-by: Damien Le Moal <dlemoal@xxxxxxxxxx>
Cc: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx>
Link: https://lore.kernel.org/r/20241218212246.1073149-2-bvanassche@xxxxxxx
Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
Stable-dep-of: dc278e9bf2b9 ("blk-mq: pop cached request if it is usable")
Signed-off-by: Simon Liebold <simonlie@xxxxxxxxx>
---
block/blk-mq.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 5bfaa8e4b9cf6..c1dff0d9f9439 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3121,12 +3121,12 @@ void blk_mq_submit_bio(struct bio *bio)
}
new_request:
- if (!rq) {
+ if (rq) {
+ blk_mq_use_cached_rq(rq, plug, bio);
+ } else {
rq = blk_mq_get_new_requests(q, plug, bio, nr_segs);
if (unlikely(!rq))
goto queue_exit;
- } else {
- blk_mq_use_cached_rq(rq, plug, bio);
}
trace_block_getrq(bio);
base-commit: 25c09b42358e73e1476e517b296edb6344f2e4bd
--
2.50.1