nbd: Update for libnbd 0.9.8
[fio.git] / os / linux / io_uring.h
index 589b6402081d38b709de967f8df32b06678c2ffd..ce03151e2002bc67114fe8214180c9074cc917a9 100644 (file)
@@ -11,8 +11,6 @@
 #include <linux/fs.h>
 #include <linux/types.h>
 
-#define IORING_MAX_ENTRIES     4096
-
 /*
  * IO submission data structure (Submission Queue Entry)
  */
@@ -28,6 +26,7 @@ struct io_uring_sqe {
                __kernel_rwf_t  rw_flags;
                __u32           fsync_flags;
                __u16           poll_events;
+               __u32           sync_range_flags;
        };
        __u64   user_data;      /* data to be passed back at completion time */
        union {
@@ -39,14 +38,16 @@ struct io_uring_sqe {
 /*
  * sqe->flags
  */
-#define IOSQE_FIXED_FILE       (1 << 0)        /* use fixed fileset */
+#define IOSQE_FIXED_FILE       (1U << 0)       /* use fixed fileset */
+#define IOSQE_IO_DRAIN         (1U << 1)       /* issue after inflight IO */
+#define IOSQE_IO_LINK          (1U << 2)       /* next IO depends on this one */
 
 /*
  * io_uring_setup() flags
  */
-#define IORING_SETUP_IOPOLL    (1 << 0)        /* io_context is polled */
-#define IORING_SETUP_SQPOLL    (1 << 1)        /* SQ poll thread */
-#define IORING_SETUP_SQ_AFF    (1 << 2)        /* sq_thread_cpu is valid */
+#define IORING_SETUP_IOPOLL    (1U << 0)       /* io_context is polled */
+#define IORING_SETUP_SQPOLL    (1U << 1)       /* SQ poll thread */
+#define IORING_SETUP_SQ_AFF    (1U << 2)       /* sq_thread_cpu is valid */
 
 #define IORING_OP_NOP          0
 #define IORING_OP_READV                1
@@ -56,11 +57,12 @@ struct io_uring_sqe {
 #define IORING_OP_WRITE_FIXED  5
 #define IORING_OP_POLL_ADD     6
 #define IORING_OP_POLL_REMOVE  7
+#define IORING_OP_SYNC_FILE_RANGE      8
 
 /*
  * sqe->fsync_flags
  */
-#define IORING_FSYNC_DATASYNC  (1 << 0)
+#define IORING_FSYNC_DATASYNC  (1U << 0)
 
 /*
  * IO completion data structure (Completion Queue Entry)
@@ -71,11 +73,6 @@ struct io_uring_cqe {
        __u32   flags;
 };
 
-/*
- * io_uring_event->flags
- */
-#define IOCQE_FLAG_CACHEHIT    (1 << 0)        /* IO did not hit media */
-
 /*
  * Magic offsets for the application to mmap the data it needs
  */
@@ -94,13 +91,14 @@ struct io_sqring_offsets {
        __u32 flags;
        __u32 dropped;
        __u32 array;
-       __u32 resv[3];
+       __u32 resv1;
+       __u64 resv2;
 };
 
 /*
  * sq_ring->flags
  */
-#define IORING_SQ_NEED_WAKEUP  (1 << 0) /* needs io_uring_enter wakeup */
+#define IORING_SQ_NEED_WAKEUP  (1U << 0) /* needs io_uring_enter wakeup */
 
 struct io_cqring_offsets {
        __u32 head;
@@ -109,14 +107,14 @@ struct io_cqring_offsets {
        __u32 ring_entries;
        __u32 overflow;
        __u32 cqes;
-       __u32 resv[4];
+       __u64 resv[2];
 };
 
 /*
  * io_uring_enter(2) flags
  */
-#define IORING_ENTER_GETEVENTS (1 << 0)
-#define IORING_ENTER_SQ_WAKEUP (1 << 1)
+#define IORING_ENTER_GETEVENTS (1U << 0)
+#define IORING_ENTER_SQ_WAKEUP (1U << 1)
 
 /*
  * Passed in for io_uring_setup(2). Copied back with updated info on success
@@ -125,9 +123,9 @@ struct io_uring_params {
        __u32 sq_entries;
        __u32 cq_entries;
        __u32 flags;
-       __u16 sq_thread_cpu;
-       __u16 sq_thread_idle;
-       __u16 resv[8];
+       __u32 sq_thread_cpu;
+       __u32 sq_thread_idle;
+       __u32 resv[5];
        struct io_sqring_offsets sq_off;
        struct io_cqring_offsets cq_off;
 };
@@ -139,5 +137,7 @@ struct io_uring_params {
 #define IORING_UNREGISTER_BUFFERS      1
 #define IORING_REGISTER_FILES          2
 #define IORING_UNREGISTER_FILES                3
+#define IORING_REGISTER_EVENTFD                4
+#define IORING_UNREGISTER_EVENTFD      5
 
 #endif