X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=ioengines.c;h=e2e7280a8edcd0b46a2a2c9daa56914483cca143;hb=dd290fb4ab7d8e0f3aa88495096eb93177942fd7;hp=b724e0e90e089668ef0a32acd1eb95c7133b4e09;hpb=a9da8ab2169810667aeb26f857a8ac3c056e4d61;p=fio.git diff --git a/ioengines.c b/ioengines.c index b724e0e9..e2e7280a 100644 --- a/ioengines.c +++ b/ioengines.c @@ -22,39 +22,31 @@ 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) @@ -299,6 +291,7 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) 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); @@ -308,6 +301,7 @@ int td_io_queue(struct thread_data *td, struct io_u *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; } /* @@ -327,7 +321,8 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) td->o.odirect) { log_info("fio: first direct IO errored. File system may not " - "support direct IO, or iomem_align= is bad.\n"); + "support direct IO, or iomem_align= is bad. Try " + "setting direct=0.\n"); } if (!td->io_ops->commit || io_u->ddir == DDIR_TRIM) { @@ -343,10 +338,10 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) } 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);