Blob Blame History Raw
From: Ming Lei <ming.lei@redhat.com>
Date: Fri, 8 Nov 2019 18:15:28 +0800
Subject: [PATCH] block: split bio if the only bvec's length is > SZ_4K
References: bsc#1175995,jsc#SLE-15608
Git-commit: 6952a7f8446ee85ea9d10ab87b64797a031eaae3
Patch-mainline: v5.5-rc1

64K PAGE_SIZE is popular on ARM64 or other ARCHs, and 64K has been big
enough to break some devices probably, so change the logic to split bio
if the only bvec's length is > SZ_4K instead of PAGE_SIZE.

Fixes: fa5322872187 (block: avoid blk_bio_segment_split for small I/O operations)
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 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 1534ed736363..72238bc9afe9 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -324,7 +324,7 @@ void __blk_queue_split(struct request_queue *q, struct bio **bio,
 		if (!q->limits.chunk_sectors &&
 		    (*bio)->bi_vcnt == 1 &&
 		    ((*bio)->bi_io_vec[0].bv_len +
-		     (*bio)->bi_io_vec[0].bv_offset) <= PAGE_SIZE) {
+		     (*bio)->bi_io_vec[0].bv_offset) <= SZ_4K) {
 			*nr_segs = 1;
 			break;
 		}
-- 
2.16.4