1 // SPDX-License-Identifier: GPL-2.0 2 3 #include <linux/io_uring_types.h> 4 #include <linux/pagemap.h> 5 #include <linux/uio.h> 6 7 struct io_meta_state { 8 u32 seed; 9 struct iov_iter_state iter_meta; 10 }; 11 12 struct io_async_rw { 13 struct iou_vec vec; 14 size_t bytes_done; 15 16 struct_group(clear, 17 struct iov_iter iter; 18 struct iov_iter_state iter_state; 19 struct iovec fast_iov; 20 unsigned buf_group; 21 22 /* 23 * wpq is for buffered io, while meta fields are used with 24 * direct io 25 */ 26 union { 27 struct wait_page_queue wpq; 28 struct { 29 struct uio_meta meta; 30 struct io_meta_state meta_state; 31 }; 32 }; 33 ); 34 }; 35 36 int io_prep_read_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 37 int io_prep_write_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 38 int io_prep_readv_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 39 int io_prep_writev_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 40 int io_prep_readv(struct io_kiocb *req, const struct io_uring_sqe *sqe); 41 int io_prep_writev(struct io_kiocb *req, const struct io_uring_sqe *sqe); 42 int io_prep_read(struct io_kiocb *req, const struct io_uring_sqe *sqe); 43 int io_prep_write(struct io_kiocb *req, const struct io_uring_sqe *sqe); 44 int io_read(struct io_kiocb *req, unsigned int issue_flags); 45 int io_write(struct io_kiocb *req, unsigned int issue_flags); 46 int io_read_fixed(struct io_kiocb *req, unsigned int issue_flags); 47 int io_write_fixed(struct io_kiocb *req, unsigned int issue_flags); 48 void io_readv_writev_cleanup(struct io_kiocb *req); 49 void io_rw_fail(struct io_kiocb *req); 50 void io_req_rw_complete(struct io_tw_req tw_req, io_tw_token_t tw); 51 int io_read_mshot_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); 52 int io_read_mshot(struct io_kiocb *req, unsigned int issue_flags); 53 void io_rw_cache_free(const void *entry); 54