block: move two bvec structure into bvec.h
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>
This commit is contained in:
parent
8fc554552c
commit
0781e79eb2
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
/* struct bio, bio_vec and BIO_* flags are defined in blk_types.h */
|
/* struct bio, bio_vec and BIO_* flags are defined in blk_types.h */
|
||||||
#include <linux/blk_types.h>
|
#include <linux/blk_types.h>
|
||||||
#include <linux/bvec.h>
|
|
||||||
|
|
||||||
#define BIO_DEBUG
|
#define BIO_DEBUG
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#define __LINUX_BLK_TYPES_H
|
#define __LINUX_BLK_TYPES_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <linux/bvec.h>
|
||||||
|
|
||||||
struct bio_set;
|
struct bio_set;
|
||||||
struct bio;
|
struct bio;
|
||||||
|
@ -17,28 +18,7 @@ struct cgroup_subsys_state;
|
||||||
typedef void (bio_end_io_t) (struct bio *);
|
typedef void (bio_end_io_t) (struct bio *);
|
||||||
typedef void (bio_destructor_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
|
#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
|
* main unit of I/O for the block layer and lower layers (ie drivers and
|
||||||
* stacking drivers)
|
* stacking drivers)
|
||||||
|
|
|
@ -20,7 +20,28 @@
|
||||||
#ifndef __LINUX_BVEC_ITER_H
|
#ifndef __LINUX_BVEC_ITER_H
|
||||||
#define __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
|
* various member access, note that bio_data should of course not be used
|
||||||
|
|
Loading…
Reference in New Issue