X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengines.c;h=9c5ac603d3291c04c7d754fdc8ddea56389b0d5d;hp=b42e2c48c7a5d4fe9f660b49a136fc88b69aa06f;hb=41cdd1b210a1fc337a6ca68ef51a61af27b68db3;hpb=37659335ac616d7c13bf8bfbb76366424b50ea67 diff --git a/ioengines.c b/ioengines.c index b42e2c48..9c5ac603 100644 --- a/ioengines.c +++ b/ioengines.c @@ -264,13 +264,15 @@ out: int 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; dprint_io_u(io_u, "queue"); fio_ro_check(td, io_u); assert((io_u->flags & IO_U_F_FLIGHT) == 0); - io_u->flags |= IO_U_F_FLIGHT; + io_u_set(io_u, IO_U_F_FLIGHT); assert(fio_file_open(io_u->file)); @@ -294,18 +296,20 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) sizeof(struct timeval)); } - if (ddir_rw(acct_ddir(io_u))) { - td->io_issues[acct_ddir(io_u)]++; - td->io_issue_bytes[acct_ddir(io_u)] += io_u->xfer_buflen; + 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); unlock_file(td, io_u->file); - if (ret == FIO_Q_BUSY && ddir_rw(acct_ddir(io_u))) { - td->io_issues[acct_ddir(io_u)]--; - td->io_issue_bytes[acct_ddir(io_u)] -= io_u->xfer_buflen; + 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; } /* @@ -325,7 +329,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) {