Merge branch 'master' into gfio
[fio.git] / init.c
diff --git a/init.c b/init.c
index 3041ac45fed2ac66a77af0f6a811747eaa74cf34..2d10498b2eaa31ab0f355c77e0c11fa1cc115f8b 100644 (file)
--- a/init.c
+++ b/init.c
@@ -583,7 +583,7 @@ static int fixup_options(struct thread_data *td)
 /*
  * This function leaks the buffer
  */
-static char *to_kmg(unsigned int val)
+char *fio_uint_to_kmg(unsigned int val)
 {
        char *buf = malloc(32);
        char post[] = { 0, 'K', 'M', 'G', 'P', 'E', 0 };
@@ -745,7 +745,7 @@ int ioengine_load(struct thread_data *td)
  * members of td.
  */
 static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
-                  int recursed)
+                  int recursed, int client_type)
 {
        unsigned int i;
        char fname[PATH_MAX];
@@ -765,6 +765,8 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                return 0;
        }
 
+       td->client_type = client_type;
+
        if (profile_td_init(td))
                goto err;
 
@@ -844,14 +846,14 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                goto err;
 
        if (td->o.write_lat_log) {
-               setup_log(&td->lat_log, td->o.log_avg_msec);
-               setup_log(&td->slat_log, td->o.log_avg_msec);
-               setup_log(&td->clat_log, td->o.log_avg_msec);
+               setup_log(&td->lat_log, td->o.log_avg_msec, IO_LOG_TYPE_LAT);
+               setup_log(&td->slat_log, td->o.log_avg_msec, IO_LOG_TYPE_SLAT);
+               setup_log(&td->clat_log, td->o.log_avg_msec, IO_LOG_TYPE_CLAT);
        }
        if (td->o.write_bw_log)
-               setup_log(&td->bw_log, td->o.log_avg_msec);
+               setup_log(&td->bw_log, td->o.log_avg_msec, IO_LOG_TYPE_BW);
        if (td->o.write_iops_log)
-               setup_log(&td->iops_log, td->o.log_avg_msec);
+               setup_log(&td->iops_log, td->o.log_avg_msec, IO_LOG_TYPE_IOPS);
 
        if (!td->o.name)
                td->o.name = strdup(jobname);
@@ -859,7 +861,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
        if (!terse_output) {
                if (!job_add_num) {
                        if (is_backend && !recursed)
-                               fio_server_send_add_job(&td->o, td->io_ops->name);
+                               fio_server_send_add_job(td);
 
                        if (!strcmp(td->io_ops->name, "cpuio")) {
                                log_info("%s: ioengine=cpu, cpuload=%u,"
@@ -869,10 +871,10 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                        } else {
                                char *c1, *c2, *c3, *c4;
 
-                               c1 = to_kmg(td->o.min_bs[DDIR_READ]);
-                               c2 = to_kmg(td->o.max_bs[DDIR_READ]);
-                               c3 = to_kmg(td->o.min_bs[DDIR_WRITE]);
-                               c4 = to_kmg(td->o.max_bs[DDIR_WRITE]);
+                               c1 = fio_uint_to_kmg(td->o.min_bs[DDIR_READ]);
+                               c2 = fio_uint_to_kmg(td->o.max_bs[DDIR_READ]);
+                               c3 = fio_uint_to_kmg(td->o.min_bs[DDIR_WRITE]);
+                               c4 = fio_uint_to_kmg(td->o.max_bs[DDIR_WRITE]);
 
                                log_info("%s: (g=%d): rw=%s, bs=%s-%s/%s-%s,"
                                         " ioengine=%s, iodepth=%u\n",
@@ -915,7 +917,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
 
                job_add_num = numjobs - 1;
 
-               if (add_job(td_new, jobname, job_add_num, 1))
+               if (add_job(td_new, jobname, job_add_num, 1, client_type))
                        goto err;
        }
 
@@ -928,7 +930,7 @@ err:
 /*
  * Parse as if 'o' was a command line
  */
-void add_job_opts(const char **o)
+void add_job_opts(const char **o, int client_type)
 {
        struct thread_data *td, *td_parent;
        int i, in_global = 1;
@@ -940,7 +942,7 @@ void add_job_opts(const char **o)
                if (!strncmp(o[i], "name", 4)) {
                        in_global = 0;
                        if (td)
-                               add_job(td, jobname, 0, 0);
+                               add_job(td, jobname, 0, 0, client_type);
                        td = NULL;
                        sprintf(jobname, "%s", o[i] + 5);
                }
@@ -959,7 +961,7 @@ void add_job_opts(const char **o)
        }
 
        if (td)
-               add_job(td, jobname, 0, 0);
+               add_job(td, jobname, 0, 0, client_type);
 }
 
 static int skip_this_section(const char *name)
@@ -997,7 +999,7 @@ static int is_empty_or_comment(char *line)
 /*
  * This is our [ini] type file parser.
  */
-int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
+int parse_jobs_ini(char *file, int is_buf, int stonewall_flag, int type)
 {
        unsigned int global;
        struct thread_data *td;
@@ -1141,7 +1143,7 @@ int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
                                for (i = 0; i < num_opts; i++)
                                        log_info("--%s ", opts[i]);
 
-                       ret = add_job(td, name, 0, 0);
+                       ret = add_job(td, name, 0, 0, type);
                } else {
                        log_err("fio: job %s dropped\n", name);
                        put_job(td);
@@ -1388,7 +1390,7 @@ void parse_cmd_client(void *client, char *opt)
        fio_client_add_cmd_option(client, opt);
 }
 
-int parse_cmd_line(int argc, char *argv[])
+int parse_cmd_line(int argc, char *argv[], int client_type)
 {
        struct thread_data *td = NULL;
        int c, ini_idx = 0, lidx, ret = 0, do_exit = 0, exit_val = 0;
@@ -1507,7 +1509,7 @@ int parse_cmd_line(int argc, char *argv[])
                        char *val = optarg;
 
                        if (!strncmp(opt, "name", 4) && td) {
-                               ret = add_job(td, td->o.name ?: "fio", 0, 0);
+                               ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
                                if (ret)
                                        return 0;
                                td = NULL;
@@ -1611,7 +1613,7 @@ int parse_cmd_line(int argc, char *argv[])
 
        if (td) {
                if (!ret)
-                       ret = add_job(td, td->o.name ?: "fio", 0, 0);
+                       ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
        }
 
        while (!ret && optind < argc) {
@@ -1644,6 +1646,7 @@ extern int fio_check_options(struct thread_options *);
 
 int parse_options(int argc, char *argv[])
 {
+       const int type = FIO_CLIENT_TYPE_CLI;
        int job_files, i;
 
        if (fio_init_options())
@@ -1651,7 +1654,7 @@ int parse_options(int argc, char *argv[])
        if (fio_test_cconv(&def_thread.o))
                log_err("fio: failed internal cconv test\n");
 
-       job_files = parse_cmd_line(argc, argv);
+       job_files = parse_cmd_line(argc, argv, type);
 
        if (job_files > 0) {
                for (i = 0; i < job_files; i++) {
@@ -1662,7 +1665,7 @@ int parse_options(int argc, char *argv[])
                                        return 1;
                                free(ini_file[i]);
                        } else if (!is_backend) {
-                               if (parse_jobs_ini(ini_file[i], 0, i))
+                               if (parse_jobs_ini(ini_file[i], 0, i, type))
                                        return 1;
                                free(ini_file[i]);
                        }