Merge branch 'master' of ssh://brick.kernel.dk/data/git/fio
diff --git a/fio.c b/fio.c
index bf903d9..45ed354 100644
--- a/fio.c
+++ b/fio.c
@@ -291,9 +291,8 @@
}
io_u->end_io = verify_io_u;
-requeue:
- ret = td_io_queue(td, io_u);
+ ret = td_io_queue(td, io_u);
switch (ret) {
case FIO_Q_COMPLETED:
if (io_u->error)
@@ -303,11 +302,12 @@
io_u->xfer_buflen = io_u->resid;
io_u->xfer_buf += bytes;
- goto requeue;
+ requeue_io_u(td, &io_u);
+ } else {
+ ret = io_u_sync_complete(td, io_u);
+ if (ret < 0)
+ break;
}
- ret = io_u_sync_complete(td, io_u);
- if (ret < 0)
- break;
continue;
case FIO_Q_QUEUED:
break;
@@ -414,9 +414,8 @@
put_io_u(td, io_u);
break;
}
-requeue:
- ret = td_io_queue(td, io_u);
+ ret = td_io_queue(td, io_u);
switch (ret) {
case FIO_Q_COMPLETED:
if (io_u->error)
@@ -426,12 +425,13 @@
io_u->xfer_buflen = io_u->resid;
io_u->xfer_buf += bytes;
- goto requeue;
+ requeue_io_u(td, &io_u);
+ } else {
+ fio_gettime(&comp_time, NULL);
+ bytes_done = io_u_sync_complete(td, io_u);
+ if (bytes_done < 0)
+ ret = bytes_done;
}
- fio_gettime(&comp_time, NULL);
- bytes_done = io_u_sync_complete(td, io_u);
- if (bytes_done < 0)
- ret = bytes_done;
break;
case FIO_Q_QUEUED:
/*
diff --git a/ioengines.c b/ioengines.c
index a7ccad6..a395da1 100644
--- a/ioengines.c
+++ b/ioengines.c
@@ -195,6 +195,9 @@
assert((io_u->flags & IO_U_F_FLIGHT) == 0);
io_u->flags |= IO_U_F_FLIGHT;
+ io_u->error = 0;
+ io_u->resid = 0;
+
if (td->io_ops->flags & FIO_SYNCIO) {
fio_gettime(&io_u->issue_time, NULL);