summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/net.c7
-rw-r--r--fio.c8
-rw-r--r--fio.h1
3 files changed, 12 insertions, 4 deletions
diff --git a/engines/net.c b/engines/net.c
index 552ad0bd..f6ae3790 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -264,6 +264,7 @@ static int fio_netio_accept(struct thread_data *td, struct fio_file *f)
pfd.events = POLLIN;
ret = poll(&pfd, 1, -1);
+ printf("got ret %d\n", ret);
if (ret < 0) {
if (errno == EINTR)
continue;
@@ -463,7 +464,8 @@ static struct ioengine_ops ioengine_rw = {
.cleanup = fio_netio_cleanup,
.open_file = fio_netio_open_file,
.close_file = generic_close_file,
- .flags = FIO_SYNCIO | FIO_DISKLESSIO | FIO_UNIDIR,
+ .flags = FIO_SYNCIO | FIO_DISKLESSIO | FIO_UNIDIR |
+ FIO_SIGQUIT,
};
static struct ioengine_ops ioengine_splice = {
@@ -476,7 +478,8 @@ static struct ioengine_ops ioengine_splice = {
.cleanup = fio_netio_cleanup,
.open_file = fio_netio_open_file,
.close_file = generic_close_file,
- .flags = FIO_SYNCIO | FIO_DISKLESSIO | FIO_UNIDIR,
+ .flags = FIO_SYNCIO | FIO_DISKLESSIO | FIO_UNIDIR |
+ FIO_SIGQUIT,
};
static void fio_init fio_netio_register(void)
diff --git a/fio.c b/fio.c
index fcd15286..355d8730 100644
--- a/fio.c
+++ b/fio.c
@@ -73,13 +73,17 @@ static void terminate_threads(int group_id)
for_each_td(td, i) {
if (group_id == TERMINATE_ALL || groupid == td->groupid) {
dprint(FD_PROCESS, "setting terminate on %d\n",td->pid);
+
+ td->terminate = 1;
+ td->o.start_delay = 0;
+
/*
* if the thread is running, just let it exit
*/
if (td->runstate < TD_RUNNING)
kill(td->pid, SIGQUIT);
- td->terminate = 1;
- td->o.start_delay = 0;
+ else if (td->io_ops->flags & FIO_SIGQUIT)
+ kill(td->pid, SIGQUIT);
}
}
}
diff --git a/fio.h b/fio.h
index 6dbc4cd5..9c900245 100644
--- a/fio.h
+++ b/fio.h
@@ -263,6 +263,7 @@ enum fio_ioengine_flags {
FIO_NODISKUTIL = 1 << 4, /* diskutil can't handle filename */
FIO_UNIDIR = 1 << 5, /* engine is uni-directional */
FIO_NOIO = 1 << 6, /* thread does only pseudo IO */
+ FIO_SIGQUIT = 1 << 7, /* needs SIGQUIT to exit */
};
enum fio_file_flags {