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 | 101 | #define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */ |
| 102 | 102 | #define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */ |
| 103 | 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 | 106 | enum { |
| 106 | 107 | IORING_OP_NOP, |
| @@ -143,6 +144,7 @@ enum { · 36 unmodified lines | ||
| 143 | 144 | IORING_OP_MKDIRAT, |
| 144 | 145 | IORING_OP_SYMLINKAT, |
| 145 | 146 | IORING_OP_LINKAT, |
| 147 | + IORING_OP_MSG_RING, | |
| 146 | 148 | |
| 147 | 149 | /* this goes last, obviously */ |
| 148 | 150 | IORING_OP_LAST, |
| @@ -199,9 +201,11 @@ struct io_uring_cqe { · 50 unmodified lines | ||
| 199 | 201 | * |
| 200 | 202 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID |
| 201 | 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 | 206 | #define IORING_CQE_F_BUFFER (1U << 0) |
| 204 | 207 | #define IORING_CQE_F_MORE (1U << 1) |
| 208 | +#define IORING_CQE_F_MSG (1U << 2) | |
| 205 | 209 | |
| 206 | 210 | enum { |
| 207 | 211 | IORING_CQE_BUFFER_SHIFT = 16, |
| @@ -257,10 +261,11 @@ struct io_cqring_offsets { · 49 unmodified lines | ||
| 257 | 261 | /* |
| 258 | 262 | * io_uring_enter(2) flags |
| 259 | 263 | */ |
| 260 | −#define IORING_ENTER_GETEVENTS (1U << 0) | |
| 261 | −#define IORING_ENTER_SQ_WAKEUP (1U << 1) | |
| 262 | −#define IORING_ENTER_SQ_WAIT (1U << 2) | |
| 263 | −#define IORING_ENTER_EXT_ARG (1U << 3) | |
| 264 | +#define IORING_ENTER_GETEVENTS (1U << 0) | |
| 265 | +#define IORING_ENTER_SQ_WAKEUP (1U << 1) | |
| 266 | +#define IORING_ENTER_SQ_WAIT (1U << 2) | |
| 267 | +#define IORING_ENTER_EXT_ARG (1U << 3) | |
| 268 | +#define IORING_ENTER_REGISTERED_RING (1U << 4) | |
| 264 | 269 | |
| 265 | 270 | /* |
| 266 | 271 | * Passed in for io_uring_setup(2). Copied back with updated info on success |
| @@ -325,6 +330,10 @@ enum { · 58 unmodified lines | ||
| 325 | 330 | /* set/get max number of io-wq workers */ |
| 326 | 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 | 337 | /* this goes last */ |
| 329 | 338 | IORING_REGISTER_LAST |
| 330 | 339 | }; |