Differentiate between bool error return and real error value
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index 78deaf6..6e78949 100644
--- a/fio.c
+++ b/fio.c
@@ -279,7 +279,8 @@
io_u->xfer_buf += bytes;
goto requeue;
}
- if (io_u_sync_complete(td, io_u, verify_io_u))
+ ret = io_u_sync_complete(td, io_u, verify_io_u);
+ if (ret)
break;
continue;
case FIO_Q_QUEUED:
@@ -290,7 +291,7 @@
break;
}
- if (ret < 0)
+ if (ret < 0 || td->error)
break;
/*
@@ -397,6 +398,8 @@
}
fio_gettime(&comp_time, NULL);
bytes_done = io_u_sync_complete(td, io_u, NULL);
+ if (bytes_done < 0)
+ ret = bytes_done;
break;
case FIO_Q_QUEUED:
break;
@@ -406,7 +409,7 @@
break;
}
- if (ret < 0)
+ if (ret < 0 || td->error)
break;
add_slat_sample(td, io_u->ddir, mtime_since(&io_u->start_time, &io_u->issue_time));