aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/block/blk-merge.c
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2021-11-02 21:35:00 +0800
committerJens Axboe <axboe@kernel.dk>2021-11-03 09:27:57 -0600
commita1cb65377e707500819b2c2c34064e5ceb32798b (patch)
treed1a1d8b542c176c5c9c2527873939f6af1c4c2b1 /block/blk-merge.c
parentblock: move RQF_ELV setting into allocators (diff)
downloadwireguard-linux-a1cb65377e707500819b2c2c34064e5ceb32798b.tar.xz
wireguard-linux-a1cb65377e707500819b2c2c34064e5ceb32798b.zip
blk-mq: only try to run plug merge if request has same queue with incoming bio
It is obvious that io merge can't be done between two different queues, so just try to run io merge in case of same queue. Signed-off-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20211102133502.3619184-2-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-merge.c')
-rw-r--r--block/blk-merge.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/block/blk-merge.c b/block/blk-merge.c
index df69f4bb7717..893c1a60b701 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -1101,9 +1101,11 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio,
* the same queue, there should be only one such rq in a queue
*/
*same_queue_rq = true;
+
+ if (blk_attempt_bio_merge(q, rq, bio, nr_segs, false) ==
+ BIO_MERGE_OK)
+ return true;
}
- if (blk_attempt_bio_merge(q, rq, bio, nr_segs, false) == BIO_MERGE_OK)
- return true;
return false;
}