[PATCH] fio: better thread termination and option parsing
authorJens Axboe <axboe@suse.de>
Wed, 19 Oct 2005 13:45:12 +0000 (15:45 +0200)
committerJens Axboe <axboe@suse.de>
Wed, 19 Oct 2005 13:45:12 +0000 (15:45 +0200)
fio.c

diff --git a/fio.c b/fio.c
index 5e7a83fe91212b19a30ad7a86dc3cccd8f454b03..1083d0508143dd21a7a4d6e5761d1ae273bd5985 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -178,17 +178,6 @@ static void sig_handler(int sig)
 {
        int i;
 
-       for (i = 0; i < thread_number; i++) {
-               struct thread_data *td = &threads[i];
-
-               td->terminate = 1;
-       }
-}
-
-static void terminate_threads(void)
-{
-       int i;
-
        for (i = 0; i < thread_number; i++) {
                struct thread_data *td = &threads[i];
 
@@ -384,7 +373,7 @@ static int check_min_rate(struct thread_data *td, struct timeval *now)
                if (rate < td->ratemin) {
                        printf("Client%d: min rate %d not met, got %ldKiB/sec\n", td->thread_number, td->ratemin, rate);
                        if (rate_quit)
-                               terminate_threads();
+                               sig_handler(0);
                        return 1;
                }
        }
@@ -868,6 +857,8 @@ static int parse_jobs_ini(char *file)
                fgetpos(f, &off);
                while ((p = fgets(string, 4096, f)) != NULL) {
                        if (is_empty(p))
+                               continue;
+                       if (strstr(p, "["))
                                break;
                        if (!check_int(p, "bs", &td->bs)) {
                                td->bs <<= 10;
@@ -929,6 +920,7 @@ static int parse_jobs_ini(char *file)
                                fgetpos(f, &off);
                                continue;
                        }
+                       printf("Client%d: bad option %s\n",td->thread_number,p);
                }
                fsetpos(f, &off);
 
@@ -1017,6 +1009,10 @@ static void reap_threads(int *nr_running, int *t_rate, int *m_rate)
                (*nr_running)--;
                (*m_rate) -= td->ratemin;
                (*t_rate) -= td->rate;
+
+               if (td->terminate)
+                       continue;
+
                printf("Threads now running: %d", *nr_running);
                if (*m_rate || *t_rate)
                        printf(", rate %d/%dKiB/sec", *t_rate, *m_rate);