*/
if (td->runstate < TD_RUNNING)
kill(td->pid, SIGQUIT);
- else if (td->io_ops->flags & FIO_SIGQUIT)
- kill(td->pid, SIGQUIT);
+ else {
+ struct ioengine_ops *ops = td->io_ops;
+
+ if (ops && (ops->flags & FIO_SIGQUIT))
+ kill(td->pid, SIGQUIT);
+ }
}
}
}
if (td->o.time_based || td->o.loops)
td->nr_done_files = 0;
- for_each_file(td, f, i)
- td_io_close_file(td, f);
+ close_files(td);
ret = 0;
for_each_file(td, f, i) {
err:
if (td->error)
printf("fio: pid=%d, err=%d/%s\n", td->pid, td->error, td->verror);
- close_files(td);
+ close_and_free_files(td);
close_ioengine(td);
cleanup_io_u(td);