diff mbox

[v2,2/8] block: move two bvec structure into bvec.h

Message ID 1459701069-31406-3-git-send-email-ming.lei@canonical.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ming Lei April 3, 2016, 4:31 p.m. UTC
This patch moves 'struct bio_vec' and 'struct bvec_iter'
into 'include/linux/bvec.h', then always include this header
into 'include/linux/blk_types.h'.

With this change, both 'struct bvec_iter' and bvec iterator
helpers don't depend on CONFIG_BLOCK any more, then we can
use bvec iterator to implement iterate_bvec(): lib/iov_iter.c.

Suggested-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
 include/linux/bio.h       |  1 -
 include/linux/blk_types.h | 22 +---------------------
 include/linux/bvec.h      | 20 +++++++++++++++++++-
 3 files changed, 20 insertions(+), 23 deletions(-)

Comments

kernel test robot April 3, 2016, 6:12 p.m. UTC | #1
Hi Ming,

[auto build test ERROR on block/for-next]
[also build test ERROR on v4.6-rc2 next-20160401]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Ming-Lei/block-prepare-for-multipage-bvecs/20160404-003648
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: arm-at91_dt_defconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from include/linux/blk_types.h:9:0,
                    from arch/arm/include/asm/io.h:28,
                    from drivers/input/joydev.c:15:
   include/linux/bvec.h: In function 'bvec_iter_advance':
>> include/linux/bvec.h:69:2: error: implicit declaration of function 'WARN_ONCE' [-Werror=implicit-function-declaration]
     WARN_ONCE(bytes > iter->bi_size,
     ^
>> include/linux/bvec.h:73:3: error: implicit declaration of function 'min' [-Werror=implicit-function-declaration]
      unsigned len = min(bytes, bvec_iter_len(bv, *iter));
      ^
   cc1: some warnings being treated as errors

vim +/WARN_ONCE +69 include/linux/bvec.h

0d61ba15 Ming Lei 2016-04-04  63  	.bv_offset	= bvec_iter_offset((bvec), (iter)),	\
0d61ba15 Ming Lei 2016-04-04  64  })
0d61ba15 Ming Lei 2016-04-04  65  
0d61ba15 Ming Lei 2016-04-04  66  static inline void bvec_iter_advance(struct bio_vec *bv, struct bvec_iter *iter,
0d61ba15 Ming Lei 2016-04-04  67  				     unsigned bytes)
0d61ba15 Ming Lei 2016-04-04  68  {
0d61ba15 Ming Lei 2016-04-04 @69  	WARN_ONCE(bytes > iter->bi_size,
0d61ba15 Ming Lei 2016-04-04  70  		  "Attempted to advance past end of bvec iter\n");
0d61ba15 Ming Lei 2016-04-04  71  
0d61ba15 Ming Lei 2016-04-04  72  	while (bytes) {
0d61ba15 Ming Lei 2016-04-04 @73  		unsigned len = min(bytes, bvec_iter_len(bv, *iter));
0d61ba15 Ming Lei 2016-04-04  74  
0d61ba15 Ming Lei 2016-04-04  75  		bytes -= len;
0d61ba15 Ming Lei 2016-04-04  76  		iter->bi_size -= len;

:::::: The code at line 69 was first introduced by commit
:::::: 0d61ba15b7eb4a7478dae53947aaaf898a1bbf30 block: move bvec iterator into include/linux/bvec.h

:::::: TO: Ming Lei <ming.lei@canonical.com>
:::::: CC: 0day robot <fengguang.wu@intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/include/linux/bio.h b/include/linux/bio.h
index 78cf737..7f998ac 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -31,7 +31,6 @@ 
 
 /* struct bio, bio_vec and BIO_* flags are defined in blk_types.h */
 #include <linux/blk_types.h>
-#include <linux/bvec.h>
 
 #define BIO_DEBUG
 
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index 86a38ea..a8d8e1f 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -6,6 +6,7 @@ 
 #define __LINUX_BLK_TYPES_H
 
 #include <linux/types.h>
+#include <linux/bvec.h>
 
 struct bio_set;
 struct bio;
@@ -17,28 +18,7 @@  struct cgroup_subsys_state;
 typedef void (bio_end_io_t) (struct bio *);
 typedef void (bio_destructor_t) (struct bio *);
 
-/*
- * was unsigned short, but we might as well be ready for > 64kB I/O pages
- */
-struct bio_vec {
-	struct page	*bv_page;
-	unsigned int	bv_len;
-	unsigned int	bv_offset;
-};
-
 #ifdef CONFIG_BLOCK
-
-struct bvec_iter {
-	sector_t		bi_sector;	/* device address in 512 byte
-						   sectors */
-	unsigned int		bi_size;	/* residual I/O count */
-
-	unsigned int		bi_idx;		/* current index into bvl_vec */
-
-	unsigned int            bi_bvec_done;	/* number of bytes completed in
-						   current bvec */
-};
-
 /*
  * main unit of I/O for the block layer and lower layers (ie drivers and
  * stacking drivers)
diff --git a/include/linux/bvec.h b/include/linux/bvec.h
index 29c459d..e111124 100644
--- a/include/linux/bvec.h
+++ b/include/linux/bvec.h
@@ -20,7 +20,25 @@ 
 #ifndef __LINUX_BVEC_ITER_H
 #define __LINUX_BVEC_ITER_H
 
-#include <linux/blk_types.h>
+/*
+ * was unsigned short, but we might as well be ready for > 64kB I/O pages
+ */
+struct bio_vec {
+	struct page	*bv_page;
+	unsigned int	bv_len;
+	unsigned int	bv_offset;
+};
+
+struct bvec_iter {
+	sector_t		bi_sector;	/* device address in 512 byte
+						   sectors */
+	unsigned int		bi_size;	/* residual I/O count */
+
+	unsigned int		bi_idx;		/* current index into bvl_vec */
+
+	unsigned int            bi_bvec_done;	/* number of bytes completed in
+						   current bvec */
+};
 
 /*
  * various member access, note that bio_data should of course not be used