Ensure that we honor aio_read/write() returning EAGAIN
[fio.git] / engines / posixaio.c
index 061812e67ebc787efcc7315ef066105ad0ee3ed0..867b5f72862310197fc7e3e82bccf71cc14550bc 100644 (file)
@@ -184,6 +184,13 @@ static int fio_posixaio_queue(struct thread_data *td,
        }
                
        if (ret) {
+               /*
+                * At least OSX has a very low limit on the number of pending
+                * IOs, so if it will return EAGAIN.
+                */
+               if (errno == EAGAIN)
+                       return FIO_Q_BUSY;
+
                io_u->error = errno;
                td_verror(td, io_u->error, "xfer");
                return FIO_Q_COMPLETED;