Make sure profile options get added to long_options[]
[fio.git] / init.c
diff --git a/init.c b/init.c
index af8375759343d80dbb2e728da51a44cbf2c22bc5..c0ce4312088aae2abcce9b1b8d385d84b9e8c161 100644 (file)
--- a/init.c
+++ b/init.c
@@ -19,8 +19,9 @@
 #include "smalloc.h"
 #include "filehash.h"
 #include "verify.h"
+#include "profile.h"
 
-static char fio_version_string[] = "fio 1.36";
+static char fio_version_string[] = "fio 1.37";
 
 #define FIO_RANDSEED           (0xb1899bedUL)
 
@@ -136,26 +137,6 @@ static struct option l_opts[FIO_NR_OPTIONS] = {
        },
 };
 
-static const char *tiobench_opts[] = {
-       "buffered=0", "size=4*1024*$mb_memory", "bs=4k", "timeout=600",
-       "numjobs=4", "group_reporting", "thread", "overwrite=1",
-       "filename=.fio.tio.1:.fio.tio.2:.fio.tio.3:.fio.tio.4",
-       "name=seqwrite", "rw=write", "end_fsync=1",
-       "name=randwrite", "stonewall", "rw=randwrite", "end_fsync=1",
-       "name=seqread", "stonewall", "rw=read",
-       "name=randread", "stonewall", "rw=randread", NULL,
-};
-
-static const char **fio_prof_strings[PROFILE_END] = {
-       NULL,
-       tiobench_opts,
-};
-
-static const char *profiles[PROFILE_END] = {
-       "none",
-       "tiobench",
-};
-
 FILE *get_f_out()
 {
        return f_out;
@@ -655,6 +636,43 @@ err:
        return -1;
 }
 
+/*
+ * Parse as if 'o' was a command line
+ */
+void add_job_opts(const char **o)
+{
+       struct thread_data *td, *td_parent;
+       int i, in_global = 1;
+       char jobname[32];
+
+       i = 0;
+       td_parent = td = NULL;
+       while (o[i]) {
+               if (!strncmp(o[i], "name", 4)) {
+                       in_global = 0;
+                       if (td)
+                               add_job(td, jobname, 0);
+                       td = NULL;
+                       sprintf(jobname, "%s", o[i] + 5);
+               }
+               if (in_global && !td_parent)
+                       td_parent = get_new_job(1, &def_thread);
+               else if (!in_global && !td) {
+                       if (!td_parent)
+                               td_parent = &def_thread;
+                       td = get_new_job(0, td_parent);
+               }
+               if (in_global)
+                       fio_options_parse(td_parent, (char **) &o[i], 1);
+               else
+                       fio_options_parse(td, (char **) &o[i], 1);
+               i++;
+       }
+
+       if (td)
+               add_job(td, jobname, 0);
+}
+
 static int skip_this_section(const char *name)
 {
        if (!job_section)
@@ -961,6 +979,7 @@ struct debug_level debug_levels[] = {
        { .name = "diskutil",   .shift = FD_DISKUTIL },
        { .name = "job",        .shift = FD_JOB },
        { .name = "mutex",      .shift = FD_MUTEX },
+       { .name = "profile",    .shift = FD_PROFILE },
        { .name = NULL, },
 };
 
@@ -1028,57 +1047,6 @@ static int set_debug(const char *string)
 }
 #endif
 
-static int load_profile(const char *profile)
-{
-       struct thread_data *td, *td_parent;
-       const char **o;
-       int i, in_global = 1;
-       char jobname[32];
-
-       dprint(FD_PARSE, "loading profile %s\n", profile);
-
-       for (i = 0; i < PROFILE_END; i++) {
-               if (!strcmp(profile, profiles[i]))
-                       break;
-       }
-
-       if (i == PROFILE_END) {
-               log_err("fio: unknown profile %s\n", profile);
-               return 1;
-       }
-
-       o = fio_prof_strings[i];
-       if (!o)
-               return 0;
-
-       i = 0;
-       td_parent = td = NULL;
-       while (o[i]) {
-               if (!strncmp(o[i], "name", 4)) {
-                       in_global = 0;
-                       if (td)
-                               add_job(td, jobname, 0);
-                       td = NULL;
-                       sprintf(jobname, "%s", o[i] + 5);
-               }
-               if (in_global && !td_parent)
-                       td_parent = get_new_job(1, &def_thread);
-               else if (!in_global && !td) {
-                       if (!td_parent)
-                               td_parent = &def_thread;
-                       td = get_new_job(0, td_parent);
-               }
-               if (in_global)
-                       fio_options_parse(td_parent, (char **) &o[i], 1);
-               else
-                       fio_options_parse(td, (char **) &o[i], 1);
-               i++;
-       }
-       if (td)
-               add_job(td, jobname, 0);
-       return 0;
-}
-
 static int parse_cmd_line(int argc, char *argv[])
 {
        struct thread_data *td = NULL;