io_uring: support CQE32 in io_uring_cqe
authorStefan Roesch <shr@fb.com>
Tue, 26 Apr 2022 18:21:23 +0000 (11:21 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 9 May 2022 12:35:33 +0000 (06:35 -0600)
This adds the big_cqe array to the struct io_uring_cqe to support large
CQE's.

Co-developed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Stefan Roesch <shr@fb.com>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Link: https://lore.kernel.org/r/20220426182134.136504-2-shr@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/uapi/linux/io_uring.h

index ee84132cadad461b3f7d4900e1cb6171c381c1d6..ac2d90d669c36a985f7056460ee0958b7cd30cf8 100644 (file)
@@ -126,6 +126,7 @@ enum {
 #define IORING_SETUP_TASKRUN_FLAG      (1U << 9)
 
 #define IORING_SETUP_SQE128            (1U << 10) /* SQEs are 128 byte */
+#define IORING_SETUP_CQE32             (1U << 11) /* CQEs are 32 byte */
 
 enum io_uring_op {
        IORING_OP_NOP,
@@ -245,6 +246,12 @@ struct io_uring_cqe {
        __u64   user_data;      /* sqe->data submission passed back */
        __s32   res;            /* result code for this event */
        __u32   flags;
+
+       /*
+        * If the ring is initialized with IORING_SETUP_CQE32, then this field
+        * contains 16-bytes of padding, doubling the size of the CQE.
+        */
+       __u64 big_cqe[];
 };
 
 /*