If we're just doing a read phase verify, then we clear
bytes_done before we can check it at the end. Ensure that we
always notice if we did IO, so we don't spew this warning:
job_0: No I/O performed by libaio, perhaps try --debug=io option for details?
when we actually did do exactly what we had to.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
struct sk_out *sk_out = fd->sk_out;
uint64_t bytes_done[DDIR_RWDIR_CNT];
int deadlock_loop_cnt;
struct sk_out *sk_out = fd->sk_out;
uint64_t bytes_done[DDIR_RWDIR_CNT];
int deadlock_loop_cnt;
+ bool clear_state, did_some_io;
int ret;
sk_out_assign(sk_out);
int ret;
sk_out_assign(sk_out);
}
memset(bytes_done, 0, sizeof(bytes_done));
}
memset(bytes_done, 0, sizeof(bytes_done));
+ clear_state = false;
+ did_some_io = false;
while (keep_running(td)) {
uint64_t verify_bytes;
while (keep_running(td)) {
uint64_t verify_bytes;
if (td->runstate >= TD_EXITED)
break;
if (td->runstate >= TD_EXITED)
break;
/*
* Make sure we've successfully updated the rusage stats
/*
* Make sure we've successfully updated the rusage stats
td_ioengine_flagged(td, FIO_UNIDIR))
continue;
td_ioengine_flagged(td, FIO_UNIDIR))
continue;
+ if (ddir_rw_sum(bytes_done))
+ did_some_io = true;
+
clear_io_state(td, 0);
fio_gettime(&td->start, NULL);
clear_io_state(td, 0);
fio_gettime(&td->start, NULL);
* (Are we not missing other flags that can be ignored ?)
*/
if ((td->o.size || td->o.io_size) && !ddir_rw_sum(bytes_done) &&
* (Are we not missing other flags that can be ignored ?)
*/
if ((td->o.size || td->o.io_size) && !ddir_rw_sum(bytes_done) &&
!(td_ioengine_flagged(td, FIO_NOIO) ||
td_ioengine_flagged(td, FIO_DISKLESSIO)))
log_err("%s: No I/O performed by %s, "
!(td_ioengine_flagged(td, FIO_NOIO) ||
td_ioengine_flagged(td, FIO_DISKLESSIO)))
log_err("%s: No I/O performed by %s, "