/*
* if the thread is running, just let it exit
*/
- if (td->runstate < TD_RUNNING)
+ if (td->runstate < TD_RAMP)
kill(td->pid, SIGTERM);
else {
struct ioengine_ops *ops = td->io_ops;
}
}
-/*
- * Happens on thread runs with ctrl-c, ignore our own SIGQUIT
- */
-static void sig_quit(int sig)
-{
-}
-
static void sig_int(int sig)
{
if (threads) {
sigaction(SIGINT, &act, NULL);
memset(&act, 0, sizeof(act));
- act.sa_handler = sig_quit;
+ act.sa_handler = sig_int;
act.sa_flags = SA_RESTART;
sigaction(SIGTERM, &act, NULL);
}
* Check if we are above the minimum rate given.
*/
static int __check_min_rate(struct thread_data *td, struct timeval *now,
- enum td_ddir ddir)
+ enum fio_ddir ddir)
{
unsigned long long bytes = 0;
unsigned long iops = 0;
struct fio_file *f;
i = td->cur_depth;
- if (i)
+ if (i) {
ret = io_u_queued_complete(td, i, NULL);
+ if (td->o.fill_device && td->error == ENOSPC)
+ td->error = 0;
+ }
if (should_fsync(td) && td->o.end_fsync) {
td_set_runstate(td, TD_FSYNCING);
set_genesis_time();
while (todo) {
- struct thread_data *map[MAX_JOBS];
+ struct thread_data *map[REAL_MAX_JOBS];
struct timeval this_start;
int this_jobs = 0, left;