[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20171218122247.3488-27-ming.lei@redhat.com>
Date: Mon, 18 Dec 2017 20:22:28 +0800
From: Ming Lei <ming.lei@...hat.com>
To: Jens Axboe <axboe@...com>, Christoph Hellwig <hch@...radead.org>,
Alexander Viro <viro@...iv.linux.org.uk>,
Kent Overstreet <kent.overstreet@...il.com>
Cc: Huang Ying <ying.huang@...el.com>, linux-kernel@...r.kernel.org,
linux-block@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-mm@...ck.org, Theodore Ts'o <tytso@....edu>,
"Darrick J . Wong" <darrick.wong@...cle.com>,
Coly Li <colyli@...e.de>, Filipe Manana <fdmanana@...il.com>,
Ming Lei <ming.lei@...hat.com>
Subject: [PATCH V4 26/45] block: introduce bio_segments()
There are still cases in which we need to use bio_segments() for get the
number of segment, so introduce it.
Signed-off-by: Ming Lei <ming.lei@...hat.com>
---
include/linux/bio.h | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 2dd1ca0285e1..205a914ee3c0 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -223,9 +223,9 @@ static inline bool bio_rewind_iter(struct bio *bio, struct bvec_iter *iter,
#define bio_iter_last(bvec, iter) ((iter).bi_size == (bvec).bv_len)
-static inline unsigned bio_pages(struct bio *bio)
+static inline unsigned __bio_elements(struct bio *bio, bool seg)
{
- unsigned segs = 0;
+ unsigned elems = 0;
struct bio_vec bv;
struct bvec_iter iter;
@@ -245,10 +245,25 @@ static inline unsigned bio_pages(struct bio *bio)
break;
}
- bio_for_each_page(bv, bio, iter)
- segs++;
+ if (!seg) {
+ bio_for_each_page(bv, bio, iter)
+ elems++;
+ } else {
+ bio_for_each_segment(bv, bio, iter)
+ elems++;
+ }
+
+ return elems;
+}
+
+static inline unsigned bio_pages(struct bio *bio)
+{
+ return __bio_elements(bio, false);
+}
- return segs;
+static inline unsigned bio_segments(struct bio *bio)
+{
+ return __bio_elements(bio, true);
}
/*
--
2.9.5
Powered by blists - more mailing lists