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 size_t bytes_done; 13 struct iovec *free_iovec; 14 struct_group(clear, 15 struct iov_iter iter; 16 struct iov_iter_state iter_state; 17 struct iovec fast_iov; 18 int free_iov_nr; 19 /* 20 * wpq is for buffered io, while meta fields are used with 21 * direct io 22 */ 23 union { 24 struct wait_page_queue wpq; 25 struct { 26 struct uio_meta meta; 27 struct io_meta_state meta_state; 28 }; 29 }; 30 ); 31 }; 32 33 int io_prep_read_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 34 int io_prep_write_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe); 35 int io_prep_readv(struct io_kiocb *req, const struct io_uring_sqe *sqe); 36 int io_prep_writev(struct io_kiocb *req, const struct io_uring_sqe *sqe); 37 int io_prep_read(struct io_kiocb *req, const struct io_uring_sqe *sqe); 38 int io_prep_write(struct io_kiocb *req, const struct io_uring_sqe *sqe); 39 int io_read(struct io_kiocb *req, unsigned int issue_flags); 40 int io_write(struct io_kiocb *req, unsigned int issue_flags); 41 int io_read_fixed(struct io_kiocb *req, unsigned int issue_flags); 42 int io_write_fixed(struct io_kiocb *req, unsigned int issue_flags); 43 void io_readv_writev_cleanup(struct io_kiocb *req); 44 void io_rw_fail(struct io_kiocb *req); 45 void io_req_rw_complete(struct io_kiocb *req, io_tw_token_t tw); 46 int io_read_mshot_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); 47 int io_read_mshot(struct io_kiocb *req, unsigned int issue_flags); 48 void io_rw_cache_free(const void *entry); 49