[PATCH] block: Split bios on chunk boundaries

Keith Busch keith.busch at intel.com
Tue Dec 22 14:48:44 PST 2015


For h/w that advertise their block storage's underlying chunk size, it's
a big performance win to not submit commands that cross them. This patch
uses that criteria if it is provided. If it is not provided, this patch
uses the max sectors as before.

Signed-off-by: Keith Busch <keith.busch at intel.com>
---
 block/blk-merge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-merge.c b/block/blk-merge.c
index 0e5643a..d05fdd2 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -83,7 +83,7 @@ static struct bio *blk_bio_segment_split(struct request_queue *q,
 	struct bio *new = NULL;
 
 	bio_for_each_segment(bv, bio, iter) {
-		if (sectors + (bv.bv_len >> 9) > queue_max_sectors(q))
+		if (sectors + (bv.bv_len >> 9) > blk_max_size_offset(q, bio->bi_iter.bi_sector))
 			goto split;
 
 		/*
-- 
2.6.2.307.g37023ba




More information about the Linux-nvme mailing list