From: Jens Axboe Date: Mon, 18 Feb 2008 20:11:24 +0000 (+0100) Subject: Add FIO_SIGQUIT engine option X-Git-Tag: fio-1.19~5 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=ad830ed7386eff264bdb5189675d6dfa672bd16b Add FIO_SIGQUIT engine option For network engines, we need a signal to make it abort the connection if it isn't already running. Otherwise fio would just stall on ctrl-c before the connection was established. Signed-off-by: Jens Axboe --- 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 {