Message ID | 1459701069-31406-3-git-send-email-ming.lei@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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
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(-)