Merge branch 'master' into gfio
[fio.git] / libfio.c
index f680be84c66acb59bf94960b62f8b074ae3187e5..5395dd2d690f45deda57a0b2124fb61eb1b58ea9 100644 (file)
--- a/libfio.c
+++ b/libfio.c
@@ -135,6 +135,7 @@ void reset_fio_state(void)
 {
        groupid = 0;
        thread_number = 0;
+       stat_number = 0;
        done_secs = 0;
 }
 
@@ -167,6 +168,7 @@ void td_set_runstate(struct thread_data *td, int runstate)
 void fio_terminate_threads(int group_id)
 {
        struct thread_data *td;
+       pid_t pid = getpid();
        int i;
 
        dprint(FD_PROCESS, "terminate group_id=%d\n", group_id);
@@ -181,15 +183,15 @@ void fio_terminate_threads(int group_id)
                        /*
                         * if the thread is running, just let it exit
                         */
-                       if (!td->pid)
+                       if (!td->pid || pid == td->pid)
                                continue;
                        else if (td->runstate < TD_RAMP)
                                kill(td->pid, SIGTERM);
                        else {
                                struct ioengine_ops *ops = td->io_ops;
 
-                               if (ops && (ops->flags & FIO_SIGTERM))
-                                       kill(td->pid, SIGTERM);
+                               if (ops && ops->terminate)
+                                       ops->terminate(td);
                        }
                }
        }