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