static bool fio_io_sync(struct thread_data *td, struct fio_file *f)
{
struct io_u *io_u = __get_io_u(td);
- int ret;
+ enum fio_q_status ret;
if (!io_u)
return true;
return overlap;
}
-static int io_u_submit(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status io_u_submit(struct thread_data *td, struct io_u *io_u)
{
/*
* Check for overlap if the user asked us to, and we have
};
-static int fio_cpuio_queue(struct thread_data *td, struct io_u fio_unused *io_u)
+static enum fio_q_status
+fio_cpuio_queue(struct thread_data *td, struct io_u fio_unused *io_u)
{
struct cpu_options *co = td->eo;
return 0;
}
-static int fio_devdax_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_devdax_queue(struct thread_data *td, struct io_u *io_u)
{
fio_ro_check(td, io_u);
io_u->error = 0;
}
-static int fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u)
{
int ret;
#ifndef FALLOC_FL_PUNCH_HOLE
#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */
#endif
-static int fio_fallocate_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_fallocate_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
int ret;
return 0;
}
-static int queue_io(struct thread_data *td, struct io_u fio_unused *io_u)
+static enum fio_q_status
+queue_io(struct thread_data *td, struct io_u fio_unused *io_u)
{
return FIO_Q_COMPLETED;
}
#include "../fio.h"
-static int fio_ftruncate_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_ftruncate_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
int ret;
size_t sector_size;
};
-static int queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status queue(struct thread_data *td, struct io_u *io_u)
{
struct fas_data *d = FILE_ENG_DATA(io_u->file);
int rc;
iou->io_complete = 1;
}
-static int fio_gf_async_queue(struct thread_data fio_unused * td,
- struct io_u *io_u)
+static enum fio_q_status fio_gf_async_queue(struct thread_data fio_unused * td,
+ struct io_u *io_u)
{
struct gf_data *g = td->io_ops_data;
int r;
return 0;
}
-static int fio_gf_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status fio_gf_queue(struct thread_data *td, struct io_u *io_u)
{
struct gf_data *g = td->io_ops_data;
int ret = 0;
return n;
}
-static int fio_guasi_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_guasi_queue(struct thread_data *td, struct io_u *io_u)
{
struct guasi_data *ld = td->io_ops_data;
return r < 0 ? r : events;
}
-static int fio_libaio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_libaio_queue(struct thread_data *td, struct io_u *io_u)
{
struct libaio_data *ld = td->io_ops_data;
return 0;
}
-static int fio_hdfsio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_hdfsio_queue(struct thread_data *td, struct io_u *io_u)
{
struct hdfsio_data *hd = td->io_ops_data;
struct hdfsio_options *options = td->eo;
return 0;
}
-static int fio_libpmem_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_libpmem_queue(struct thread_data *td, struct io_u *io_u)
{
fio_ro_check(td, io_u);
io_u->error = 0;
return 0;
}
-static int fio_mmapio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_mmapio_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
struct fio_mmap_data *fmd = FILE_ENG_DATA(f);
return ret;
}
-static int fio_mtd_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_mtd_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
struct fio_mtd_data *fmd = FILE_ENG_DATA(f);
return ret;
}
-static int __fio_netio_queue(struct thread_data *td, struct io_u *io_u,
- enum fio_ddir ddir)
+static enum fio_q_status
+__fio_netio_queue(struct thread_data *td, struct io_u *io_u, enum fio_ddir ddir)
{
struct netio_data *nd = td->io_ops_data;
struct netio_options *o = td->eo;
return FIO_Q_COMPLETED;
}
-static int fio_netio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_netio_queue(struct thread_data *td, struct io_u *io_u)
{
struct netio_options *o = td->eo;
int ret;
return 0;
}
-static int null_queue(struct thread_data *td, struct null_data *nd,
- struct io_u *io_u)
+static enum fio_q_status
+null_queue(struct thread_data *td, struct null_data *nd, struct io_u *io_u)
{
fio_ro_check(td, io_u);
return null_commit(td, td->io_ops_data);
}
-static int fio_null_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_null_queue(struct thread_data *td, struct io_u *io_u)
{
return null_queue(td, td->io_ops_data, io_u);
}
return 0;
}
-static int fio_pmemblk_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_pmemblk_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
fio_pmemblk_file_t pmb = FILE_ENG_DATA(f);
return pd->aio_events[event];
}
-static int fio_posixaio_queue(struct thread_data *td,
- struct io_u *io_u)
+static enum fio_q_status fio_posixaio_queue(struct thread_data *td,
+ struct io_u *io_u)
{
struct posixaio_data *pd = td->io_ops_data;
os_aiocb_t *aiocb = &io_u->aiocb;
}
}
-static int fio_rados_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_rados_queue(struct thread_data *td, struct io_u *io_u)
{
struct rados_data *rados = td->io_ops_data;
struct fio_rados_iou *fri = io_u->engine_data;
return events;
}
-static int fio_rbd_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_rbd_queue(struct thread_data *td, struct io_u *io_u)
{
struct rbd_data *rbd = td->io_ops_data;
struct fio_rbd_iou *fri = io_u->engine_data;
return i;
}
-static int fio_rdmaio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_rdmaio_queue(struct thread_data *td, struct io_u *io_u)
{
struct rdmaio_data *rd = td->io_ops_data;
return r;
}
-static int fio_sgio_ioctl_doio(struct thread_data *td,
- struct fio_file *f, struct io_u *io_u)
+static enum fio_q_status
+fio_sgio_ioctl_doio(struct thread_data *td, struct fio_file *f,
+ struct io_u *io_u)
{
struct sgio_data *sd = td->io_ops_data;
struct sg_io_hdr *hdr = &io_u->hdr;
return 0;
}
-static int fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
{
struct sg_io_hdr *hdr = &io_u->hdr;
int ret, do_sync = 0;
* io_u->xfer_buflen. Residual data count may be set in io_u->resid
* for a short read/write.
*/
-static int fio_skeleton_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_skeleton_queue(struct thread_data *td, struct io_u *io_u)
{
/*
* Double sanity check to catch errant write on a readonly setup
return io_u->xfer_buflen;
}
-static int fio_spliceio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_spliceio_queue(struct thread_data *td, struct io_u *io_u)
{
struct spliceio_data *sd = td->io_ops_data;
int ret = 0;
}
#ifdef CONFIG_PWRITEV
-static int fio_pvsyncio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_pvsyncio_queue(struct thread_data *td, struct io_u *io_u)
{
struct syncio_data *sd = td->io_ops_data;
struct iovec *iov = &sd->iovecs[0];
#endif
#ifdef FIO_HAVE_PWRITEV2
-static int fio_pvsyncio2_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_pvsyncio2_queue(struct thread_data *td, struct io_u *io_u)
{
struct syncio_data *sd = td->io_ops_data;
struct psyncv2_options *o = td->eo;
#endif
-static int fio_psyncio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_psyncio_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
int ret;
return fio_io_end(td, io_u, ret);
}
-static int fio_syncio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_syncio_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_file *f = io_u->file;
int ret;
sd->queued++;
}
-static int fio_vsyncio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_vsyncio_queue(struct thread_data *td, struct io_u *io_u)
{
struct syncio_data *sd = td->io_ops_data;
return dequeued;
}
-static int fio_windowsaio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_windowsaio_queue(struct thread_data *td, struct io_u *io_u)
{
struct fio_overlapped *o = io_u->engine_data;
LPOVERLAPPED lpOvl = &o->o;
return r;
}
-int td_io_queue(struct thread_data *td, struct io_u *io_u)
+enum fio_q_status td_io_queue(struct thread_data *td, struct io_u *io_u)
{
const enum fio_ddir ddir = acct_ddir(io_u);
unsigned long buflen = io_u->xfer_buflen;
- int ret;
+ enum fio_q_status ret;
dprint_io_u(io_u, "queue");
fio_ro_check(td, io_u);
#include "flist.h"
#include "io_u.h"
-#define FIO_IOOPS_VERSION 23
+#define FIO_IOOPS_VERSION 24
/*
* io_ops->queue() return values
*/
-enum {
+enum fio_q_status {
FIO_Q_COMPLETED = 0, /* completed sync */
FIO_Q_QUEUED = 1, /* queued, will complete async */
FIO_Q_BUSY = 2, /* no more room, call ->commit() */
int (*setup)(struct thread_data *);
int (*init)(struct thread_data *);
int (*prep)(struct thread_data *, struct io_u *);
- int (*queue)(struct thread_data *, struct io_u *);
+ enum fio_q_status (*queue)(struct thread_data *, struct io_u *);
int (*commit)(struct thread_data *);
int (*getevents)(struct thread_data *, unsigned int, unsigned int, const struct timespec *);
struct io_u *(*event)(struct thread_data *, int);
*/
extern int __must_check td_io_init(struct thread_data *);
extern int __must_check td_io_prep(struct thread_data *, struct io_u *);
-extern int __must_check td_io_queue(struct thread_data *, struct io_u *);
+extern enum fio_q_status __must_check td_io_queue(struct thread_data *, struct io_u *);
extern int __must_check td_io_getevents(struct thread_data *, unsigned int, unsigned int, const struct timespec *);
extern void td_io_commit(struct thread_data *);
extern int __must_check td_io_open_file(struct thread_data *, struct fio_file *);