X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.c;h=02ed91dbcea0b70454fee2b78b68c5041b49107d;hb=68e1f29afafe560d96ef25267743708e883bea44;hp=16e19c8fa8e080511c6e07c96691c809e8955b0a;hpb=f29b25a370598d387e539c3dcae126274c6cbf4d;p=fio.git diff --git a/fio.c b/fio.c index 16e19c8f..02ed91db 100644 --- a/fio.c +++ b/fio.c @@ -446,6 +446,13 @@ static void do_io(struct thread_data *td) break; } + /* + * Add verification end_io handler, if asked to verify + * a previously written file. + */ + if (td->o.verify != VERIFY_NONE) + io_u->end_io = verify_io_u; + ret = td_io_queue(td, io_u); switch (ret) { case FIO_Q_COMPLETED: @@ -724,6 +731,8 @@ static int keep_running(struct thread_data *td) { unsigned long long io_done; + if (td->done) + return 0; if (td->o.time_based) return 1; if (td->o.loops) { @@ -892,7 +901,9 @@ static void *thread_main(void *data) if (td->error || td->terminate) break; - if (td->o.verify == VERIFY_NONE) + if (!td->o.do_verify || + td->o.verify == VERIFY_NONE || + (td->io_ops->flags & FIO_UNIDIR)) continue; if (clear_io_state(td)) @@ -909,8 +920,8 @@ static void *thread_main(void *data) } update_rusage_stat(td); - td->ts.runtime[0] = runtime[0] / 1000; - td->ts.runtime[1] = runtime[1] / 1000; + td->ts.runtime[0] = (runtime[0] + 999) / 1000; + td->ts.runtime[1] = (runtime[1] + 999) / 1000; td->ts.total_run_time = mtime_since_now(&td->epoch); td->ts.io_bytes[0] = td->io_bytes[0]; td->ts.io_bytes[1] = td->io_bytes[1];