Export 'struct io_mapped_buf' for the coming fused cmd buffer, which is based on bvec too. This instance is supposed to be immutable in its whole lifetime. Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> --- include/linux/io_uring.h | 19 +++++++++++++++++++ io_uring/rsrc.h | 9 --------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h index 934e5dd4ccc0..88205ea566d3 100644 --- a/include/linux/io_uring.h +++ b/include/linux/io_uring.h @@ -4,6 +4,7 @@ #include <linux/sched.h> #include <linux/xarray.h> +#include <linux/bvec.h> #include <uapi/linux/io_uring.h> enum io_uring_cmd_flags { @@ -36,6 +37,24 @@ struct io_uring_cmd { u8 pdu[32]; /* available inline for free use */ }; +/* The mapper buffer is supposed to be immutable */ +struct io_mapped_buf { + u64 buf; + u64 buf_end; + unsigned int nr_bvecs; + union { + unsigned int acct_pages; + + /* + * offset into the bvecs, use for external user; with + * 'offset', immutable bvecs can be provided for io_uring + */ + unsigned int offset; + }; + struct bio_vec *bvec; + struct bio_vec __bvec[]; +}; + #if defined(CONFIG_IO_URING) int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, struct iov_iter *iter, void *ioucmd); diff --git a/io_uring/rsrc.h b/io_uring/rsrc.h index 5da54702cad1..4bd17877d53a 100644 --- a/io_uring/rsrc.h +++ b/io_uring/rsrc.h @@ -45,15 +45,6 @@ struct io_rsrc_node { bool done; }; -struct io_mapped_buf { - u64 buf; - u64 buf_end; - unsigned int nr_bvecs; - unsigned int acct_pages; - struct bio_vec *bvec; - struct bio_vec __bvec[]; -}; - void io_rsrc_put_tw(struct callback_head *cb); void io_rsrc_put_work(struct work_struct *work); void io_rsrc_refs_refill(struct io_ring_ctx *ctx); -- 2.31.1