backend: only check bytes_done for engines without FIO_NOIO

This basically reverts the functional part of commit 2557f7e6.
Instead of having to fiddle with the io_u manually, have
the backend check whether we expect data to have been transerred
or not.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/backend.c b/backend.c
index 3b42c4d..1c944d6 100644
--- a/backend.c
+++ b/backend.c
@@ -726,7 +726,7 @@
 
 		if (ret < 0)
 			break;
-		if (!ddir_rw_sum(bytes_done))
+		if (!ddir_rw_sum(bytes_done) && !(td->io_ops->flags & FIO_NOIO))
 			continue;
 
 		if (!in_ramp_time(td) && should_check_rate(td, bytes_done)) {
diff --git a/engines/cpu.c b/engines/cpu.c
index 322dfde..8bc9fd5 100644
--- a/engines/cpu.c
+++ b/engines/cpu.c
@@ -10,11 +10,6 @@
 static int fio_cpuio_queue(struct thread_data *td, struct io_u fio_unused *io_u)
 {
 	usec_spin(td->o.cpucycle);
-
-	if (io_u->buflen == 0)
-		io_u->buflen = 1;
-	io_u->resid = 0;
-
 	return FIO_Q_COMPLETED;
 }