From mboxrd@z Thu Jan 1 00:00:00 1970 From: axboe@fb.com (Jens Axboe) Date: Tue, 22 Dec 2015 17:17:35 -0700 Subject: [PATCH] block: Split bios on chunk boundaries In-Reply-To: <1450824524-5413-1-git-send-email-keith.busch@intel.com> References: <1450824524-5413-1-git-send-email-keith.busch@intel.com> Message-ID: <5679E81F.6020604@fb.com> On 12/22/2015 03:48 PM, Keith Busch wrote: > 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 > --- > 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; > > /* Looks good, will apply. Thanks Keith! -- Jens Axboe