From b532dd6d476679b08e4a56a60e8a7dd958779df9 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 28 Jan 2019 11:42:20 -0700 Subject: [PATCH] io_uring: sync with kernel - Update to newer kernel API header - Use IORING_ENTER_SQ_WAKEUP Signed-off-by: Jens Axboe --- engines/io_uring.c | 3 ++- os/linux/io_uring.h | 9 ++++++++- t/io_uring.c | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/engines/io_uring.c b/engines/io_uring.c index c759ec19..5279b1d0 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -340,7 +340,8 @@ static int fio_ioring_commit(struct thread_data *td) read_barrier(); if (*ring->flags & IORING_SQ_NEED_WAKEUP) - io_uring_enter(ld, ld->queued, 0, 0); + io_uring_enter(ld, ld->queued, 0, + IORING_ENTER_SQ_WAKEUP); ld->queued = 0; return 0; } diff --git a/os/linux/io_uring.h b/os/linux/io_uring.h index 9bb71816..589b6402 100644 --- a/os/linux/io_uring.h +++ b/os/linux/io_uring.h @@ -11,6 +11,8 @@ #include #include +#define IORING_MAX_ENTRIES 4096 + /* * IO submission data structure (Submission Queue Entry) */ @@ -25,6 +27,7 @@ struct io_uring_sqe { union { __kernel_rwf_t rw_flags; __u32 fsync_flags; + __u16 poll_events; }; __u64 user_data; /* data to be passed back at completion time */ union { @@ -51,6 +54,8 @@ struct io_uring_sqe { #define IORING_OP_FSYNC 3 #define IORING_OP_READ_FIXED 4 #define IORING_OP_WRITE_FIXED 5 +#define IORING_OP_POLL_ADD 6 +#define IORING_OP_POLL_REMOVE 7 /* * sqe->fsync_flags @@ -111,6 +116,7 @@ struct io_cqring_offsets { * io_uring_enter(2) flags */ #define IORING_ENTER_GETEVENTS (1 << 0) +#define IORING_ENTER_SQ_WAKEUP (1 << 1) /* * Passed in for io_uring_setup(2). Copied back with updated info on success @@ -120,7 +126,8 @@ struct io_uring_params { __u32 cq_entries; __u32 flags; __u16 sq_thread_cpu; - __u16 resv[9]; + __u16 sq_thread_idle; + __u16 resv[8]; struct io_sqring_offsets sq_off; struct io_cqring_offsets cq_off; }; diff --git a/t/io_uring.c b/t/io_uring.c index da3b4d1f..9ded1590 100644 --- a/t/io_uring.c +++ b/t/io_uring.c @@ -315,6 +315,8 @@ submit: if (to_wait) flags = IORING_ENTER_GETEVENTS; + if (*ring->flags & IORING_SQ_NEED_WAKEUP) + flags |= IORING_ENTER_SQ_WAKEUP; ret = io_uring_enter(s, to_submit, to_wait, flags); s->calls++; } -- 2.25.1