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