nbd: Update for libnbd 0.9.8
[fio.git] / os / linux / io_uring.h
index 9bb718168c86d4a98e774a56c36d63c538cfceaa..ce03151e2002bc67114fe8214180c9074cc917a9 100644 (file)
@@ -25,6 +25,8 @@ struct io_uring_sqe {
        union {
                __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 {
@@ -36,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
@@ -51,11 +55,14 @@ 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
+#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)
@@ -66,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
  */
@@ -89,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;
@@ -104,13 +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_GETEVENTS (1U << 0)
+#define IORING_ENTER_SQ_WAKEUP (1U << 1)
 
 /*
  * Passed in for io_uring_setup(2). Copied back with updated info on success
@@ -119,8 +123,9 @@ struct io_uring_params {
        __u32 sq_entries;
        __u32 cq_entries;
        __u32 flags;
-       __u16 sq_thread_cpu;
-       __u16 resv[9];
+       __u32 sq_thread_cpu;
+       __u32 sq_thread_idle;
+       __u32 resv[5];
        struct io_sqring_offsets sq_off;
        struct io_cqring_offsets cq_off;
 };
@@ -132,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