aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2022-03-31 19:27:52 -0600
committerJens Axboe <axboe@kernel.dk>2022-05-09 06:35:33 -0600
commitebdeb7c01d025cb059f05dc26b9dc914e46dd43f (patch)
tree277d08ae7ef441660c3287eba92195b05becea9d /include/uapi
parentMerge branch 'for-5.19/io_uring-socket' into for-5.19/io_uring-passthrough (diff)
downloadlinux-dev-ebdeb7c01d025cb059f05dc26b9dc914e46dd43f.tar.xz
linux-dev-ebdeb7c01d025cb059f05dc26b9dc914e46dd43f.zip
io_uring: add support for 128-byte SQEs
Normal SQEs are 64-bytes in length, which is fine for all the commands we support. However, in preparation for supporting passthrough IO, provide an option for setting up a ring with 128-byte SQEs. We continue to use the same type for io_uring_sqe, it's marked and commented with a zero sized array pad at the end. This provides up to 80 bytes of data for a passthrough command - 64 bytes for the extra added data, and 16 bytes available at the end of the existing SQE. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/io_uring.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
index 31e719f38615..ee84132cadad 100644
--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -63,6 +63,12 @@ struct io_uring_sqe {
};
__u64 addr3;
__u64 __pad2[1];
+
+ /*
+ * If the ring is initialized with IORING_SETUP_SQE128, then this field
+ * contains 64-bytes of padding, doubling the size of the SQE.
+ */
+ __u64 __big_sqe_pad[0];
};
enum {
@@ -119,6 +125,8 @@ enum {
*/
#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10) /* SQEs are 128 byte */
+
enum io_uring_op {
IORING_OP_NOP,
IORING_OP_READV,