Ensure that we honor aio_read/write() returning EAGAIN
authorJens Axboe <jaxboe@fusionio.com>
Thu, 7 Jul 2011 19:06:40 +0000 (21:06 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Thu, 7 Jul 2011 19:06:40 +0000 (21:06 +0200)
This fixes a problem on OSX, where the number of resources for
aio is woefully small.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
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;