Add support for queuing > 1 command at the time

For the async engines, we currently do queuing by issuing one
command at the the time. Improve this by adding a ->commit()
hook to complement the ->queue() hook. When ->queue() returns
FIO_Q_BUSY, call ->commit() to actually send off the io to the
kernel.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/ioengines.c b/ioengines.c
index 1b510df..16ea928 100644
--- a/ioengines.c
+++ b/ioengines.c
@@ -189,6 +189,9 @@
 {
 	fio_gettime(&io_u->issue_time, NULL);
 
+	if (io_u->ddir != DDIR_SYNC)
+		td->io_issues[io_u->ddir]++;
+
 	return td->io_ops->queue(td, io_u);
 }
 
@@ -199,3 +202,11 @@
 
 	return 0;
 }
+
+int td_io_commit(struct thread_data *td)
+{
+	if (td->io_ops->commit)
+		return td->io_ops->commit(td);
+
+	return 0;
+}