Pull io_uring updates from Jens Axboe: - Fixes for current file position. Still doesn't have the f_pos_lock sorted, but it's a step in the right direction (Dylan) - Tracing updates (Dylan, Stefan) - Improvements to io-wq locking (Hao) - Improvements for provided buffers (me, Pavel) - Support for registered file descriptors (me, Xiaoguang) - Support for ring messages (me) - Poll improvements (me) - Fix for fixed buffers and non-iterator reads/writes (me) - Support for NAPI on sockets (Olivier) - Ring quiesce improvements (Usama) - Misc fixes (Olivier, Pavel) * tag 'for-5.18/io_uring-2022-03-18' of git://git.kernel.dk/linux-block: (42 commits) io_uring: terminate manual loop iterator loop correctly for non-vecs io_uring: don't check unrelated req->open.how in accept request io_uring: manage provided buffers strictly ordered io_uring: fold evfd signalling under a slower path io_uring: thin down io_commit_cqring() io_uring: shuffle io_eventfd_signal() bits around io_uring: remove extra barrier for non-sqpoll iopoll io_uring: fix provided buffer return on failure for kiocb_done() io_uring: extend provided buf return to fails io_uring: refactor timeout cancellation cqe posting io_uring: normilise naming for fill_cqe* io_uring: cache poll/double-poll state with a request flag io_uring: cache req->apoll->events in req->cflags io_uring: move req->poll_refs into previous struct hole io_uring: make tracing format consistent io_uring: recycle apoll_poll entries io_uring: remove duplicated member check for io_msg_ring_prep() io_uring: allow submissions to continue on error io_uring: recycle provided buffers if request goes async io_uring: ensure reads re-import for selected buffers ...
Showing the changes to include/uapi (1 of 5 files). Show all
Unified · Split
| @@ -101,6 +101,7 @@ enum { · 100 unmodified lines | |||
| 101 | #define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */ | 101 | #define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */ |
| 102 | #define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */ | 102 | #define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */ |
| 103 | #define IORING_SETUP_R_DISABLED (1U << 6) /* start with ring disabled */ | 103 | #define IORING_SETUP_R_DISABLED (1U << 6) /* start with ring disabled */ |
| 104 | #define IORING_SETUP_SUBMIT_ALL (1U << 7) /* continue submit on error */ | ||
| 104 | 105 | ||
| 105 | enum { | 106 | enum { |
| 106 | IORING_OP_NOP, | 107 | IORING_OP_NOP, |
| @@ -143,6 +144,7 @@ enum { · 36 unmodified lines | |||
| 143 | IORING_OP_MKDIRAT, | 144 | IORING_OP_MKDIRAT, |
| 144 | IORING_OP_SYMLINKAT, | 145 | IORING_OP_SYMLINKAT, |
| 145 | IORING_OP_LINKAT, | 146 | IORING_OP_LINKAT, |
| 147 | IORING_OP_MSG_RING, | ||
| 146 | 148 | ||
| 147 | /* this goes last, obviously */ | 149 | /* this goes last, obviously */ |
| 148 | IORING_OP_LAST, | 150 | IORING_OP_LAST, |
| @@ -199,9 +201,11 @@ struct io_uring_cqe { · 50 unmodified lines | |||
| 199 | * | 201 | * |
| 200 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID | 202 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID |
| 201 | * IORING_CQE_F_MORE If set, parent SQE will generate more CQE entries | 203 | * IORING_CQE_F_MORE If set, parent SQE will generate more CQE entries |
| 204 | * IORING_CQE_F_MSG If set, CQE was generated with IORING_OP_MSG_RING | ||
| 202 | */ | 205 | */ |
| 203 | #define IORING_CQE_F_BUFFER (1U << 0) | 206 | #define IORING_CQE_F_BUFFER (1U << 0) |
| 204 | #define IORING_CQE_F_MORE (1U << 1) | 207 | #define IORING_CQE_F_MORE (1U << 1) |
| 208 | #define IORING_CQE_F_MSG (1U << 2) | ||
| 205 | 209 | ||
| 206 | enum { | 210 | enum { |
| 207 | IORING_CQE_BUFFER_SHIFT = 16, | 211 | IORING_CQE_BUFFER_SHIFT = 16, |
| @@ -257,10 +261,11 @@ struct io_cqring_offsets { · 49 unmodified lines | |||
| 257 | /* | 261 | /* |
| 258 | * io_uring_enter(2) flags | 262 | * io_uring_enter(2) flags |
| 259 | */ | 263 | */ |
| 260 | #define IORING_ENTER_GETEVENTS (1U << 0) | 264 | #define IORING_ENTER_GETEVENTS (1U << 0) |
| 261 | #define IORING_ENTER_SQ_WAKEUP (1U << 1) | 265 | #define IORING_ENTER_SQ_WAKEUP (1U << 1) |
| 262 | #define IORING_ENTER_SQ_WAIT (1U << 2) | 266 | #define IORING_ENTER_SQ_WAIT (1U << 2) |
| 263 | #define IORING_ENTER_EXT_ARG (1U << 3) | 267 | #define IORING_ENTER_EXT_ARG (1U << 3) |
| 268 | #define IORING_ENTER_REGISTERED_RING (1U << 4) | ||
| 264 | 269 | ||
| 265 | /* | 270 | /* |
| 266 | * Passed in for io_uring_setup(2). Copied back with updated info on success | 271 | * Passed in for io_uring_setup(2). Copied back with updated info on success |
| @@ -325,6 +330,10 @@ enum { · 58 unmodified lines | |||
| 325 | /* set/get max number of io-wq workers */ | 330 | /* set/get max number of io-wq workers */ |
| 326 | IORING_REGISTER_IOWQ_MAX_WORKERS = 19, | 331 | IORING_REGISTER_IOWQ_MAX_WORKERS = 19, |
| 327 | 332 | ||
| 333 | /* register/unregister io_uring fd with the ring */ | ||
| 334 | IORING_REGISTER_RING_FDS = 20, | ||
| 335 | IORING_UNREGISTER_RING_FDS = 21, | ||
| 336 | |||
| 328 | /* this goes last */ | 337 | /* this goes last */ |
| 329 | IORING_REGISTER_LAST | 338 | IORING_REGISTER_LAST |
| 330 | }; | 339 | }; |