if (!in_ramp_time(td) && should_check_rate(td)) {
if (check_min_rate(td, &comp_time)) {
- if (exitall_on_terminate)
+ if (exitall_on_terminate || td->o.exitall_error)
fio_terminate_threads(td->groupid);
td_verror(td, EIO, "check_min_rate");
break;
if (td->o.verify_only && (td_write(td) || td_rw(td)))
verify_bytes = do_dry_run(td);
- else
+ else {
verify_bytes = do_io(td);
+ if (!verify_bytes)
+ fio_mark_td_terminate(td);
+ }
clear_state = 1;
if (o->exec_postrun)
exec_string(o, o->exec_postrun, (const char *)"postrun");
- if (exitall_on_terminate)
+ if (exitall_on_terminate || (o->exitall_error && td->error))
fio_terminate_threads(td->groupid);
err:
*fio_debug_jobp = pid;
}
dprint(FD_MUTEX, "wait on startup_mutex\n");
- if (fio_mutex_down_timeout(startup_mutex, 10)) {
+ if (fio_mutex_down_timeout(startup_mutex, 10000)) {
log_err("fio: job startup hung? exiting.\n");
fio_terminate_threads(TERMINATE_ALL);
fio_abort = 1;