[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1455519890-24093-1-git-send-email-ming.lei@canonical.com>
Date: Mon, 15 Feb 2016 15:04:42 +0800
From: Ming Lei <ming.lei@...onical.com>
To: Jens Axboe <axboe@...nel.dk>, linux-kernel@...r.kernel.org
Cc: linux-block@...r.kernel.org, Christoph Hellwig <hch@...radead.org>,
Sagi Grimberg <sagig@....mellanox.co.il>,
Ming Lei <ming.lei@...onical.com>, stable@...r.kernel.org
Subject: [PATCH 3/4] 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@...r.kernel.org # v4.3+
Reported-by: Sagi Grimberg <sagig@....mellanox.co.il>
Cc: Christoph Hellwig <hch@...radead.org>
Signed-off-by: Ming Lei <ming.lei@...onical.com>
---
include/linux/blkdev.h | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index b8ff6a3..7152102 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1388,11 +1388,16 @@ 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) || !queue_virt_boundary(q))
+ if (!bio_has_data(prev) || !queue_virt_boundary(q)) {
return false;
+ } else {
+ struct bio_vec pb, nb;
- return bvec_gap_to_prev(q, &prev->bi_io_vec[prev->bi_vcnt - 1],
- next->bi_io_vec[0].bv_offset);
+ bio_get_last_bvec(prev, &pb);
+ bio_get_first_bvec(next, &nb);
+
+ return bvec_gap_to_prev(q, &pb, nb.bv_offset);
+ }
}
static inline bool req_gap_back_merge(struct request *req, struct bio *bio)
--
1.9.1
Powered by blists - more mailing lists