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 <jens.axboe@oracle.com>
diff --git a/engines/net.c b/engines/net.c
index 552ad0b..f6ae379 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -264,6 +264,7 @@
 		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 @@
 	.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 @@
 	.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 fcd1528..355d873 100644
--- a/fio.c
+++ b/fio.c
@@ -73,13 +73,17 @@
 	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 6dbc4cd..9c90024 100644
--- a/fio.h
+++ b/fio.h
@@ -263,6 +263,7 @@
 	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 {