In the following patch, the way for figuring out the last bvec will be changed with a bit cost introduced, so return immediately if the queue doesn't have virt boundary limit. Actually most of devices have not this limit.
Cc: Sagi Grimberg <sa...@dev.mellanox.co.il> Cc: Christoph Hellwig <h...@infradead.org> Signed-off-by: Ming Lei <ming....@canonical.com> --- include/linux/blkdev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 4571ef1..b8ff6a3 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1388,7 +1388,7 @@ static inline bool bvec_gap_to_prev(struct request_queue *q, static inline bool bio_will_gap(struct request_queue *q, struct bio *prev, struct bio *next) { - if (!bio_has_data(prev)) + if (!bio_has_data(prev) || !queue_virt_boundary(q)) return false; return bvec_gap_to_prev(q, &prev->bi_io_vec[prev->bi_vcnt - 1], -- 1.9.1