From: Jens Axboe Date: Mon, 26 Feb 2007 13:45:12 +0000 (+0100) Subject: Move the iodepth_batch into td_io_queue() instead X-Git-Tag: fio-1.12~3 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=eb7c8ae27bc301b77490b3586dd5ccab7c95880a;hp=ec1aee01a92f2e390d7ca14d26eebf6453780c53 Move the iodepth_batch into td_io_queue() instead The previous part in do_io() introduced a bug (overwriting ret), and we really need to do it from other locations as well. Signed-off-by: Jens Axboe --- diff --git a/fio.c b/fio.c index c5b85aeb..b095527e 100644 --- a/fio.c +++ b/fio.c @@ -433,8 +433,6 @@ requeue: */ if (td->io_ops->commit == NULL) io_u_queued(td, io_u); - else if (td->io_u_queued >= td->iodepth_batch) - ret = td_io_commit(td); break; case FIO_Q_BUSY: requeue_io_u(td, &io_u); diff --git a/ioengines.c b/ioengines.c index 2cc32888..14b15ccd 100644 --- a/ioengines.c +++ b/ioengines.c @@ -216,8 +216,16 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) ret = td->io_ops->queue(td, io_u); - if (ret == FIO_Q_QUEUED) + if (ret == FIO_Q_QUEUED) { + int r; + td->io_u_queued++; + if (td->io_u_queued > td->iodepth_batch) { + r = td_io_commit(td); + if (r < 0) + return r; + } + } if ((td->io_ops->flags & FIO_SYNCIO) == 0) { fio_gettime(&io_u->issue_time, NULL);