diff options
author | Christoph Hellwig <hch@lst.de> | 2022-07-27 12:22:55 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-08-02 17:22:53 -0600 |
commit | 5a97806f7dc069d9561d9930a2ae108700e222ab (patch) | |
tree | 60b436ff4a9279e7b32e1c41b9194be5a665ca43 /block/blk-mq.c | |
parent | de474b550e2548f9844e872f1c0bf94460c7c84c (diff) | |
download | linux-stable-5a97806f7dc069d9561d9930a2ae108700e222ab.tar.gz linux-stable-5a97806f7dc069d9561d9930a2ae108700e222ab.tar.bz2 linux-stable-5a97806f7dc069d9561d9930a2ae108700e222ab.zip |
block: change the blk_queue_split calling convention
The double indirect bio leads to somewhat suboptimal code generation.
Instead return the (original or split) bio, and make sure the
request_queue arguments to the lower level helpers is passed after the
bio to avoid constant reshuffling of the argument passing registers.
Also give it and the helpers used to implement it more descriptive names.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220727162300.3089193-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r-- | block/blk-mq.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 70177ee74295..790f55453f1b 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2816,8 +2816,8 @@ void blk_mq_submit_bio(struct bio *bio) blk_status_t ret; blk_queue_bounce(q, &bio); - if (blk_may_split(q, bio)) - __blk_queue_split(q, &bio, &nr_segs); + if (bio_may_exceed_limits(bio, q)) + bio = __bio_split_to_limits(bio, q, &nr_segs); if (!bio_integrity_prep(bio)) return; |