Don't pass more than the queued IO depth in to getevents()
authorRadha Ramachandran <radha@google.com>
Thu, 5 Nov 2009 07:33:49 +0000 (08:33 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 5 Nov 2009 07:33:49 +0000 (08:33 +0100)
Otherwise we can hang fio, since it'll attempt to wait for more
IOs than we have in flight.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fio.c

diff --git a/fio.c b/fio.c
index debcac5..434b503 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -536,7 +536,8 @@ sync_done:
                 */
                full = queue_full(td) || ret == FIO_Q_BUSY;
                if (full || !td->o.iodepth_batch_complete) {
-                       min_events = td->o.iodepth_batch_complete;
+                       min_events = min(td->o.iodepth_batch_complete,
+                                        td->cur_depth);
                        if (full && !min_events)
                                min_events = 1;
 
@@ -688,7 +689,8 @@ sync_done:
                 */
                full = queue_full(td) || ret == FIO_Q_BUSY;
                if (full || !td->o.iodepth_batch_complete) {
-                       min_evts = td->o.iodepth_batch_complete;
+                       min_evts = min(td->o.iodepth_batch_complete,
+                                       td->cur_depth);
                        if (full && !min_evts)
                                min_evts = 1;