X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=ioengine.h;h=eb6655d165cad381e747a332cfee5b93736e7fd8;hb=refs%2Ftags%2Ffio-1.36;hp=2caece72c644e4e4f144715f586e73bcb6b5ffac;hpb=2b4f4abec640f36ccdff39de00e74b2234e27116;p=fio.git diff --git a/ioengine.h b/ioengine.h index 2caece72..eb6655d1 100644 --- a/ioengine.h +++ b/ioengine.h @@ -4,8 +4,10 @@ #define FIO_IOOPS_VERSION 10 enum { - IO_U_F_FREE = 1 << 0, - IO_U_F_FLIGHT = 1 << 1, + IO_U_F_FREE = 1 << 0, + IO_U_F_FLIGHT = 1 << 1, + IO_U_F_FREE_DEF = 1 << 2, + IO_U_F_IN_CUR_DEPTH = 1 << 3, }; /* @@ -112,6 +114,7 @@ enum fio_ioengine_flags { FIO_UNIDIR = 1 << 5, /* engine is uni-directional */ FIO_NOIO = 1 << 6, /* thread does only pseudo IO */ FIO_SIGQUIT = 1 << 7, /* needs SIGQUIT to exit */ + FIO_PIPEIO = 1 << 8, /* input/output no seekable */ }; /* @@ -139,9 +142,10 @@ extern void close_ioengine(struct thread_data *); 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 *); +extern void clear_io_u(struct thread_data *, struct io_u *); extern void requeue_io_u(struct thread_data *, struct io_u **); -extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *); -extern long __must_check io_u_queued_complete(struct thread_data *, int); +extern int __must_check io_u_sync_complete(struct thread_data *, struct io_u *, unsigned long *); +extern int __must_check io_u_queued_complete(struct thread_data *, int, unsigned long *); extern void io_u_queued(struct thread_data *, struct io_u *); extern void io_u_log_error(struct thread_data *, struct io_u *); extern void io_u_mark_depth(struct thread_data *, unsigned int); @@ -149,4 +153,23 @@ extern void io_u_fill_buffer(struct thread_data *td, struct io_u *, unsigned int void io_u_mark_complete(struct thread_data *, unsigned int); void io_u_mark_submit(struct thread_data *, unsigned int); +#ifdef FIO_INC_DEBUG +static inline void dprint_io_u(struct io_u *io_u, const char *p) +{ + struct fio_file *f = io_u->file; + + dprint(FD_IO, "%s: io_u %p: off=%llu/len=%lu/ddir=%d", p, io_u, + (unsigned long long) io_u->offset, + io_u->buflen, io_u->ddir); + if (fio_debug & (1 << FD_IO)) { + if (f) + log_info("/%s", f->file_name); + + log_info("\n"); + } +} +#else +#define dprint_io_u(io_u, p) +#endif + #endif