static FLIST_HEAD(engine_list);
-static int check_engine_ops(struct ioengine_ops *ops)
+static bool check_engine_ops(struct ioengine_ops *ops)
{
if (ops->version != FIO_IOOPS_VERSION) {
log_err("bad ioops version %d (want %d)\n", ops->version,
FIO_IOOPS_VERSION);
- return 1;
+ return true;
}
if (!ops->queue) {
log_err("%s: no queue handler\n", ops->name);
- return 1;
+ return true;
}
/*
* sync engines only need a ->queue()
*/
if (ops->flags & FIO_SYNCIO)
- return 0;
+ return false;
- if (!ops->event) {
- log_err("%s: no event handler\n", ops->name);
- return 1;
- }
- if (!ops->getevents) {
- log_err("%s: no getevents handler\n", ops->name);
- return 1;
- }
- if (!ops->queue) {
- log_err("%s: no queue handler\n", ops->name);
- return 1;
+ if (!ops->event || !ops->getevents) {
+ log_err("%s: no event/getevents handler\n", ops->name);
+ return true;
}
- return 0;
+ return false;
}
void unregister_ioengine(struct ioengine_ops *ops)
if (ddir_rw(ddir)) {
td->io_issues[ddir]++;
td->io_issue_bytes[ddir] += buflen;
+ td->rate_io_issue_bytes[ddir] += buflen;
}
ret = td->io_ops->queue(td, io_u);
if (ret == FIO_Q_BUSY && ddir_rw(ddir)) {
td->io_issues[ddir]--;
td->io_issue_bytes[ddir] -= buflen;
+ td->rate_io_issue_bytes[ddir] -= buflen;
}
/*
} else if (ret == FIO_Q_QUEUED) {
int r;
- if (ddir_rw(io_u->ddir)) {
- td->io_u_queued++;
+ td->io_u_queued++;
+
+ if (ddir_rw(io_u->ddir))
td->ts.total_io_u[io_u->ddir]++;
- }
if (td->io_u_queued >= td->o.iodepth_batch) {
r = td_io_commit(td);