aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
authorMing Lei <ming.lei@canonical.com>2016-02-26 10:40:52 -0500
committerJens Axboe <axboe@fb.com>2016-03-03 16:42:49 -0500
commit25e71a99f10e444cd00bb2ebccb11e1c9fb672b1 (patch)
tree70219779b021ec7cd2d32bc1091208a126fe0bec /include/linux/blkdev.h
parente0af29171aa8912e1ca95023b75ef336cd70d661 (diff)
block: get the 1st and last bvec via helpers
This patch applies the two introduced helpers to figure out the 1st and last bvec, and fixes the original way after bio splitting. Cc: stable@vger.kernel.org Reported-by: Sagi Grimberg <sagig@dev.mellanox.co.il> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index cd06a41581b3..d7f6bca707ef 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1394,11 +1394,16 @@ static inline bool bvec_gap_to_prev(struct request_queue *q,
1394static inline bool bio_will_gap(struct request_queue *q, struct bio *prev, 1394static inline bool bio_will_gap(struct request_queue *q, struct bio *prev,
1395 struct bio *next) 1395 struct bio *next)
1396{ 1396{
1397 if (!bio_has_data(prev) || !queue_virt_boundary(q)) 1397 if (bio_has_data(prev) && queue_virt_boundary(q)) {
1398 return false; 1398 struct bio_vec pb, nb;
1399
1400 bio_get_last_bvec(prev, &pb);
1401 bio_get_first_bvec(next, &nb);
1399 1402
1400 return __bvec_gap_to_prev(q, &prev->bi_io_vec[prev->bi_vcnt - 1], 1403 return __bvec_gap_to_prev(q, &pb, nb.bv_offset);
1401 next->bi_io_vec[0].bv_offset); 1404 }
1405
1406 return false;
1402} 1407}
1403 1408
1404static inline bool req_gap_back_merge(struct request *req, struct bio *bio) 1409static inline bool req_gap_back_merge(struct request *req, struct bio *bio)