td->runstate = runstate;
}
-static void terminate_threads(int group_id, int forced_kill)
+static void terminate_threads(int group_id)
{
struct thread_data *td;
int i;
for_each_td(td, i) {
if (group_id == TERMINATE_ALL || groupid == td->groupid) {
+ kill(td->pid, SIGQUIT);
td->terminate = 1;
td->start_delay = 0;
- if (forced_kill)
- td_set_runstate(td, TD_EXITED);
}
}
}
default:
printf("\nfio: terminating on signal %d\n", sig);
fflush(stdout);
- terminate_threads(TERMINATE_ALL, 0);
+ terminate_threads(TERMINATE_ALL);
break;
}
}
if (check_min_rate(td, &comp_time)) {
if (exitall_on_terminate)
- terminate_threads(td->groupid, 0);
+ terminate_threads(td->groupid);
td_verror(td, ENODATA, "check_min_rate");
break;
}
}
if (exitall_on_terminate)
- terminate_threads(td->groupid, 0);
+ terminate_threads(td->groupid);
err:
if (td->error)
if (WIFSIGNALED(status)) {
int sig = WTERMSIG(status);
- log_err("fio: pid=%d, got signal=%d\n", td->pid, sig);
+ if (sig != SIGQUIT)
+ log_err("fio: pid=%d, got signal=%d\n", td->pid, sig);
td_set_runstate(td, TD_REAPED);
goto reaped;
}
}
if (*nr_running == cputhreads && !pending)
- terminate_threads(TERMINATE_ALL, 0);
+ terminate_threads(TERMINATE_ALL);
}
/*