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>
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user