X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=io_u.h;h=ab93d50f967e78547961e7650b2921f53f64f6b9;hb=9213e16d98b0e9d2f8d4f7e760ed0fd45c8960f6;hp=9a423b24e5d9c44dc7fa7fbf769dc44baa75b01b;hpb=5fff95436922873dd9ded8b21af7222689e2ec5d;p=fio.git diff --git a/io_u.h b/io_u.h index 9a423b24..ab93d50f 100644 --- a/io_u.h +++ b/io_u.h @@ -11,9 +11,6 @@ #ifdef CONFIG_LIBAIO #include #endif -#ifdef CONFIG_GUASI -#include -#endif enum { IO_U_F_FREE = 1 << 0, @@ -24,6 +21,7 @@ enum { IO_U_F_TRIMMED = 1 << 5, IO_U_F_BARRIER = 1 << 6, IO_U_F_VER_LIST = 1 << 7, + IO_U_F_PATTERN_DONE = 1 << 8, }; /* @@ -48,11 +46,23 @@ struct io_u { */ unsigned short numberio; + /* + * IO priority. + */ + unsigned short ioprio; + unsigned short clat_prio_index; + + /* + * number of trim ranges for this IO. + */ + unsigned int number_trim; + /* * Allocated/set buffer and length */ unsigned long long buflen; - unsigned long long offset; + unsigned long long offset; /* is really ->xfer_offset... */ + unsigned long long verify_offset; /* is really ->offset */ void *buf; /* @@ -75,7 +85,7 @@ struct io_u { struct io_piece *ipo; - unsigned int resid; + unsigned long long resid; unsigned int error; /* @@ -84,19 +94,38 @@ struct io_u { union { unsigned int index; unsigned int seen; - void *engine_data; }; + void *engine_data; union { struct flist_head verify_list; 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 thread_data *td, 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)(struct thread_data *td, const struct io_u *); + /* * Callback for io completion */ int (*end_io)(struct thread_data *, struct io_u **); + uint32_t dtype; + uint32_t dspec; + union { #ifdef CONFIG_LIBAIO struct iocb iocb; @@ -107,9 +136,6 @@ struct io_u { #ifdef FIO_HAVE_SGIO struct sg_io_hdr hdr; #endif -#ifdef CONFIG_GUASI - guasi_req_t greq; -#endif #ifdef CONFIG_SOLARISAIO aio_result_t resultp; #endif @@ -141,7 +167,7 @@ void io_u_mark_submit(struct thread_data *, unsigned int); bool queue_full(const struct thread_data *); int do_io_u_sync(const struct thread_data *, struct io_u *); -int do_io_u_trim(const struct thread_data *, struct io_u *); +int do_io_u_trim(struct thread_data *, struct io_u *); #ifdef FIO_INC_DEBUG static inline void dprint_io_u(struct io_u *io_u, const char *p)