History

Merge tag 'for-6.6/io_uring-2023-08-28' of git://git.kernel.dk/linux

Pull io_uring updates from Jens Axboe: "Fairly quiet round in terms of features, mostly just improvements all over the map for existing code. In detail: - Initial support for socket operations through io_uring. Latter half of this will likely land with the 6.7 kernel, then allowing things like get/setsockopt (Breno) - Cleanup of the cancel code, and then adding support for canceling requests with the opcode as the key (me) - Improvements for the io-wq locking (me) - Fix affinity setting for SQPOLL based io-wq (me) - Remove the io_uring userspace code. These were added initially as copies from liburing, but all of them have since bitrotted and are way out of date at this point. Rather than attempt to keep them in sync, just get rid of them. People will have liburing available anyway for these examples. (Pavel) - Series improving the CQ/SQ ring caching (Pavel) - Misc fixes and cleanups (Pavel, Yue, me)" * tag 'for-6.6/io_uring-2023-08-28' of git://git.kernel.dk/linux: (47 commits) io_uring: move iopoll ctx fields around io_uring: move multishot cqe cache in ctx io_uring: separate task_work/waiting cache line io_uring: banish non-hot data to end of io_ring_ctx io_uring: move non aligned field to the end io_uring: add option to remove SQ indirection io_uring: compact SQ/CQ heads/tails io_uring: force inline io_fill_cqe_req io_uring: merge iopoll and normal completion paths io_uring: reorder cqring_flush and wakeups io_uring: optimise extra io_get_cqe null check io_uring: refactor __io_get_cqe() io_uring: simplify big_cqe handling io_uring: cqe init hardening io_uring: improve cqe !tracing hot path io_uring/rsrc: Annotate struct io_mapped_ubuf with __counted_by io_uring/sqpoll: fix io-wq affinity when IORING_SETUP_SQPOLL is used io_uring: simplify io_run_task_work_sig return io_uring/rsrc: keep one global dummy_ubuf io_uring: never overflow io_aux_cqe ...

Linus Torvalds committed 3 years ago

Commit c1b7fcf2 parents adfd671 644c4a731 files · +432 −1767Browse files

Showing the changes to include/uapi/linux (1 of 31 files). Show all

Unified · Split

include/uapi/linux/io_uring.h+20−1
@@ -185,6 +185,11 @@ enum { · 184 unmodified lines
185185 */
186186 #define IORING_SETUP_REGISTERED_FD_ONLY (1U << 15)
187187
188+/*
189+ * Removes indirection through the SQ index array.
190+ */
191+#define IORING_SETUP_NO_SQARRAY (1U << 16)
192+
188193 enum io_uring_op {
189194 IORING_OP_NOP,
190195 IORING_OP_READV,
@@ -299,11 +304,15 @@ enum io_uring_op { · 108 unmodified lines
299304 * request 'user_data'
300305 * IORING_ASYNC_CANCEL_ANY Match any request
301306 * IORING_ASYNC_CANCEL_FD_FIXED 'fd' passed in is a fixed descriptor
307+ * IORING_ASYNC_CANCEL_USERDATA Match on user_data, default for no other key
308+ * IORING_ASYNC_CANCEL_OP Match request based on opcode
302309 */
303310 #define IORING_ASYNC_CANCEL_ALL (1U << 0)
304311 #define IORING_ASYNC_CANCEL_FD (1U << 1)
305312 #define IORING_ASYNC_CANCEL_ANY (1U << 2)
306313 #define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
314+#define IORING_ASYNC_CANCEL_USERDATA (1U << 4)
315+#define IORING_ASYNC_CANCEL_OP (1U << 5)
307316
308317 /*
309318 * send/sendmsg and recv/recvmsg flags (sqe->ioprio)
@@ -697,7 +706,9 @@ struct io_uring_sync_cancel_reg { · 387 unmodified lines
697706 __s32 fd;
698707 __u32 flags;
699708 struct __kernel_timespec timeout;
700− __u64 pad[4];
709+ __u8 opcode;
710+ __u8 pad[7];
711+ __u64 pad2[3];
701712 };
702713
703714 /*
@@ -717,6 +728,14 @@ struct io_uring_recvmsg_out { · 13 unmodified lines
717728 __u32 flags;
718729 };
719730
731+/*
732+ * Argument for IORING_OP_URING_CMD when file is a socket
733+ */
734+enum {
735+ SOCKET_URING_OP_SIOCINQ = 0,
736+ SOCKET_URING_OP_SIOCOUTQ,
737+};
738+
720739 #ifdef __cplusplus
721740 }
722741 #endif