[PATCH] block: Split bios on chunk boundaries

Jens Axboe axboe at fb.com
Tue Dec 22 16:17:35 PST 2015


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 <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;
>
>   		/*

Looks good, will apply. Thanks Keith!

-- 
Jens Axboe




More information about the Linux-nvme mailing list