rw.h 1.8 KB

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