[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;