X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=io_u.h;h=87c29201a3aee39a87a615768272e0e86b596d05;hb=d87d9c6c611f74a5888c74568d545be200139498;hp=9a423b24e5d9c44dc7fa7fbf769dc44baa75b01b;hpb=40e8d8314f10a578765e20a4eb574b2603d292df;p=fio.git diff --git a/io_u.h b/io_u.h index 9a423b24..87c29201 100644 --- 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, }; /* @@ -75,7 +76,7 @@ struct io_u { struct io_piece *ipo; - unsigned int resid; + unsigned long long resid; unsigned int error; /* @@ -92,6 +93,21 @@ struct io_u { struct workqueue_work work; }; + /* + * 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 (*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 */ @@ -176,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