t/zbd: Support testing zone capacity smaller than zone size with null_blk
[fio.git] / io_u.h
diff --git a/io_u.h b/io_u.h
index 97270c94d1714c83064adae850e759621f58b665..87c29201a3aee39a87a615768272e0e86b596d05 100644 (file)
--- a/io_u.h
+++ b/io_u.h
@@ -24,6 +24,7 @@ enum {
        IO_U_F_TRIMMED          = 1 << 5,
        IO_U_F_BARRIER          = 1 << 6,
        IO_U_F_VER_LIST         = 1 << 7,
+       IO_U_F_PRIORITY         = 1 << 8,
 };
 
 /*
@@ -93,10 +94,19 @@ struct io_u {
        };
 
        /*
-        * Post-submit callback. Used by the ZBD code. @success == true means
-        * that the I/O operation has been queued or completed successfully.
+        * ZBD mode zbd_queue_io callback: called after engine->queue operation
+        * to advance a zone write pointer and eventually unlock the I/O zone.
+        * @q indicates the I/O queue status (busy, queued or completed).
+        * @success == true means that the I/O operation has been queued or
+        * completed successfully.
         */
-       void (*post_submit)(const struct io_u *, bool success);
+       void (*zbd_queue_io)(struct io_u *, int q, bool success);
+
+       /*
+        * ZBD mode zbd_put_io callback: called in after completion of an I/O
+        * or commit of an async I/O to unlock the I/O target zone.
+        */
+       void (*zbd_put_io)(const struct io_u *);
 
        /*
         * Callback for io completion
@@ -182,5 +192,7 @@ static inline enum fio_ddir acct_ddir(struct io_u *io_u)
        td_flags_clear((td), &(io_u->flags), (val))
 #define io_u_set(td, io_u, val)                \
        td_flags_set((td), &(io_u)->flags, (val))
+#define io_u_is_prio(io_u)     \
+       (io_u->flags & (unsigned int) IO_U_F_PRIORITY) != 0
 
 #endif