block: move two bvec structure into bvec.h
authorMing Lei <ming.lei@canonical.com>
Mon, 30 May 2016 13:34:30 +0000 (21:34 +0800)
committerJens Axboe <axboe@fb.com>
Thu, 9 Jun 2016 16:02:47 +0000 (10:02 -0600)
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.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Suggested-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Tested-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/bio.h
include/linux/blk_types.h
include/linux/bvec.h

index 8e0f677c26d2b285e20429ffada7822e31e3e443..95500fee054453d869904138c0ed44f96071af18 100644 (file)
@@ -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
 
index 562ab83012179be3c6cb23774533867773230307..b588e968dc01f6199e9858e555fdeb6c684fbaaf 100644 (file)
@@ -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)
index 29c459da277eedcbe275b65e278e7d9532fab985..096efd2c83e5b3ac58b004aaaf936f54d70cf6af 100644 (file)
 #ifndef __LINUX_BVEC_ITER_H
 #define __LINUX_BVEC_ITER_H
 
-#include <linux/blk_types.h>
+#include <linux/kernel.h>
+#include <linux/bug.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