X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengine.h;h=949af9150613c8b398f389fee71c0cfa65b692e7;hp=493d4b5c59bf6ec2187c8646784f3316600c674e;hb=47c7c1f526f1038abe7df350d02231220b3eecb9;hpb=b7f487cf80a8299a656df9c2214ff73e72956d71 diff --git a/ioengine.h b/ioengine.h index 493d4b5c..949af915 100644 --- a/ioengine.h +++ b/ioengine.h @@ -15,7 +15,7 @@ #include #endif -#define FIO_IOOPS_VERSION 15 +#define FIO_IOOPS_VERSION 16 enum { IO_U_F_FREE = 1 << 0, @@ -28,36 +28,10 @@ enum { IO_U_F_VER_LIST = 1 << 7, }; -struct thread_data; - /* * The io unit */ struct io_u { - union { -#ifdef CONFIG_LIBAIO - struct iocb iocb; -#endif -#ifdef CONFIG_POSIXAIO - os_aiocb_t aiocb; -#endif -#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 -#ifdef FIO_HAVE_BINJECT - struct b_user_cmd buc; -#endif -#ifdef CONFIG_RDMA - struct ibv_mr *mr; -#endif - void *mmap_data; - }; struct timeval start_time; struct timeval issue_time; @@ -76,6 +50,7 @@ struct io_u { */ unsigned long buflen; unsigned long long offset; + unsigned short numberio; void *buf; /* @@ -96,6 +71,31 @@ struct io_u { */ unsigned long buf_filled_len; + union { +#ifdef CONFIG_LIBAIO + struct iocb iocb; +#endif +#ifdef CONFIG_POSIXAIO + os_aiocb_t aiocb; +#endif +#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 +#ifdef FIO_HAVE_BINJECT + struct b_user_cmd buc; +#endif +#ifdef CONFIG_RDMA + struct ibv_mr *mr; +#endif + void *mmap_data; + }; + unsigned int resid; unsigned int error; @@ -108,7 +108,7 @@ struct io_u { void *engine_data; }; - struct flist_head list; + struct flist_head verify_list; /* * Callback for io completion @@ -189,7 +189,6 @@ extern int fio_show_ioengine_help(const char *engine); /* * io unit handling */ -#define queue_full(td) flist_empty(&(td)->io_u_freelist) extern struct io_u *__get_io_u(struct thread_data *); extern struct io_u *get_io_u(struct thread_data *); extern void put_io_u(struct thread_data *, struct io_u *); @@ -198,11 +197,14 @@ extern void requeue_io_u(struct thread_data *, struct io_u **); extern int __must_check io_u_sync_complete(struct thread_data *, struct io_u *, uint64_t *); extern int __must_check io_u_queued_complete(struct thread_data *, int, uint64_t *); extern void io_u_queued(struct thread_data *, struct io_u *); +extern void io_u_quiesce(struct thread_data *); extern void io_u_log_error(struct thread_data *, struct io_u *); extern void io_u_mark_depth(struct thread_data *, unsigned int); +extern void fill_io_buffer(struct thread_data *, void *, unsigned int, unsigned int); extern void io_u_fill_buffer(struct thread_data *td, struct io_u *, unsigned int, unsigned int); void io_u_mark_complete(struct thread_data *, unsigned int); void io_u_mark_submit(struct thread_data *, unsigned int); +int queue_full(struct thread_data *); int do_io_u_sync(struct thread_data *, struct io_u *); int do_io_u_trim(struct thread_data *, struct io_u *);