fix hugepage-size type mismatch
[fio.git] / fio.c
diff --git a/fio.c b/fio.c
index 04a06bac1bee010b82866de1ade9ffd5178f3d7f..6e25c5fe6feb6df17a530b283612e695224437c6 100644 (file)
--- 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);
                }
        }
 }
@@ -639,11 +643,7 @@ static int init_io_u(struct thread_data *td)
        int i, max_units;
        char *p;
 
-       if (td->io_ops->flags & FIO_SYNCIO)
-               max_units = 1;
-       else
-               max_units = td->o.iodepth;
-
+       max_units = td->o.iodepth;
        max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
        td->orig_buffer_size = (unsigned long long) max_bs * (unsigned long long) max_units;
 
@@ -1024,7 +1024,11 @@ static void reap_threads(int *nr_running, int *t_rate, int *m_rate)
                else
                        realthreads++;
 
-               if (!td->pid || td->runstate == TD_REAPED)
+               if (!td->pid) {
+                       pending++;
+                       continue;
+               }
+               if (td->runstate == TD_REAPED)
                        continue;
                if (td->o.use_thread) {
                        if (td->runstate == TD_EXITED) {