Add support for fdatasync()

Adds a new option, fdatasync=. It's identical to the fsync= option,
but uses fdatasync() instead.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/engines/libaio.c b/engines/libaio.c
index e452f1c..bd8ebb8 100644
--- a/engines/libaio.c
+++ b/engines/libaio.c
@@ -32,7 +32,7 @@
 		io_prep_pread(&io_u->iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset);
 	else if (io_u->ddir == DDIR_WRITE)
 		io_prep_pwrite(&io_u->iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset);
-	else if (io_u->ddir == DDIR_SYNC)
+	else if (ddir_sync(io_u->ddir))
 		io_prep_fsync(&io_u->iocb, f->fd);
 	else
 		return 1;
@@ -104,6 +104,13 @@
 			io_u->error = errno;
 
 		return FIO_Q_COMPLETED;
+	} else if (io_u->ddir == DDIR_DATASYNC) {
+		if (ld->iocbs_nr)
+			return FIO_Q_BUSY;
+		if (fdatasync(io_u->file->fd) < 0)
+			io_u->error = errno;
+
+		return FIO_Q_COMPLETED;
 	}
 
 	ld->iocbs[ld->iocbs_nr] = &io_u->iocb;