[PATCH] Make the libaio fsync fallback really work
This time it's tested :-)
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/engines/libaio.c b/engines/libaio.c
index acc125f..47c1d4b 100644
--- a/engines/libaio.c
+++ b/engines/libaio.c
@@ -88,7 +88,7 @@
do {
ret = io_submit(ld->aio_ctx, 1, &iocb);
if (ret == 1)
- return 0;
+ break;
else if (ret == -EAGAIN || !ret)
usleep(100);
else if (ret == -EINTR)
@@ -101,8 +101,12 @@
* with libaio (still), we don't have pending
* requests to flush first.
*/
- ret = fsync(io_u->file->fd);
- ld->sync_io_u = io_u;
+ if (fsync(io_u->file->fd) < 0)
+ ret = errno;
+ else {
+ ret = 1;
+ ld->sync_io_u = io_u;
+ }
break;
} else
break;