iolog: don't serialize the writing of all logs
[fio.git] / init.c
diff --git a/init.c b/init.c
index 72d106afbb4892f5ce586a8b3101efbe331b0478..910f2badbcfda054d8a6f300575093eabb572924 100644 (file)
--- a/init.c
+++ b/init.c
 #include "profile.h"
 #include "server.h"
 #include "idletime.h"
+#include "filelock.h"
 
 #include "lib/getopt.h"
 #include "lib/strcasestr.h"
 
+#include "crc/test.h"
+
 const char fio_version_string[] = FIO_VERSION;
 
 #define FIO_RANDSEED           (0xb1899bedUL)
@@ -40,6 +43,8 @@ static int parse_only;
 
 static struct thread_data def_thread;
 struct thread_data *threads = NULL;
+static char **job_sections;
+static int nr_job_sections;
 
 int exitall_on_terminate = 0;
 int output_format = FIO_OUTPUT_NORMAL;
@@ -48,8 +53,6 @@ int eta_print = FIO_ETA_AUTO;
 int eta_new_line = 0;
 FILE *f_out = NULL;
 FILE *f_err = NULL;
-char **job_sections = NULL;
-int nr_job_sections = 0;
 char *exec_profile = NULL;
 int warnings_fatal = 0;
 int terse_version = 3;
@@ -247,7 +250,7 @@ void free_threads_shm(void)
        }
 }
 
-void free_shm(void)
+static void free_shm(void)
 {
        if (threads) {
                file_hash_exit();
@@ -257,6 +260,7 @@ void free_shm(void)
        }
 
        options_free(fio_options, &def_thread);
+       fio_filelock_exit();
        scleanup();
 }
 
@@ -1087,12 +1091,12 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
        if (setup_rate(td))
                goto err;
 
-       if (o->lat_log_file) {
+       if (o->lat_log_file || write_lat_log) {
                setup_log(&td->lat_log, o->log_avg_msec, IO_LOG_TYPE_LAT);
                setup_log(&td->slat_log, o->log_avg_msec, IO_LOG_TYPE_SLAT);
                setup_log(&td->clat_log, o->log_avg_msec, IO_LOG_TYPE_CLAT);
        }
-       if (o->bw_log_file)
+       if (o->bw_log_file || write_bw_log)
                setup_log(&td->bw_log, o->log_avg_msec, IO_LOG_TYPE_BW);
        if (o->iops_log_file)
                setup_log(&td->iops_log, o->log_avg_msec, IO_LOG_TYPE_IOPS);
@@ -1658,13 +1662,11 @@ static int client_flag_set(char c)
        return 0;
 }
 
-void parse_cmd_client(void *client, char *opt)
+static void parse_cmd_client(void *client, char *opt)
 {
        fio_client_add_cmd_option(client, opt);
 }
 
-extern int fio_crctest(const char *);
-
 int parse_cmd_line(int argc, char *argv[], int client_type)
 {
        struct thread_data *td = NULL;
@@ -1963,11 +1965,8 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
        if (do_exit && !(is_backend || nr_clients))
                exit(exit_val);
 
-       if (nr_clients && fio_clients_connect()) {
-               do_exit++;
-               exit_val = 1;
-               return -1;
-       }
+       if (nr_clients && fio_clients_connect())
+               exit(1);
 
        if (is_backend && backend)
                return fio_start_server(pid_file);