options: split out option grouping code
[fio.git] / profiles / tiobench.c
index 8a05d51afe9f2f69698c84a8725750b81d7cd10d..8af6f4edb1116984e3192c3c8c059d06d46c2826 100644 (file)
@@ -1,6 +1,7 @@
 #include "../fio.h"
 #include "../profile.h"
 #include "../parse.h"
+#include "../optgroup.h"
 
 static unsigned long long size;
 static unsigned int loops = 1;
@@ -8,59 +9,76 @@ static unsigned int bs = 4096;
 static unsigned int nthreads = 1;
 static char *dir;
 
-char sz_idx[80], bs_idx[80], loop_idx[80], dir_idx[80], t_idx[80];
+static char sz_idx[80], bs_idx[80], loop_idx[80], dir_idx[80], t_idx[80];
 
 static const char *tb_opts[] = {
        "buffered=0", sz_idx, bs_idx, loop_idx, dir_idx, t_idx,
        "timeout=600", "group_reporting", "thread", "overwrite=1",
        "filename=.fio.tio.1:.fio.tio.2:.fio.tio.3:.fio.tio.4",
+       "ioengine=sync",
        "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,
 };
 
+struct tiobench_options {
+       unsigned int pad;
+       unsigned long long size;
+       unsigned int loops;
+       unsigned int bs;
+       unsigned int nthreads;
+       char *dir;
+};
+
+static struct tiobench_options tiobench_options;
+
 static struct fio_option options[] = {
        {
                .name   = "size",
+               .lname  = "Tiobench size",
                .type   = FIO_OPT_STR_VAL,
-               .roff1  = &size,
+               .off1   = offsetof(struct tiobench_options, size),
                .help   = "Size in MB",
                .category = FIO_OPT_C_PROFILE,
-               .group  = FIO_OPT_G_TIOPROF,
+               .group  = FIO_OPT_G_TIOBENCH,
        },
        {
                .name   = "block",
+               .lname  = "Tiobench block",
                .type   = FIO_OPT_INT,
-               .roff1  = &bs,
+               .off1   = offsetof(struct tiobench_options, bs),
                .help   = "Block size in bytes",
                .def    = "4k",
                .category = FIO_OPT_C_PROFILE,
-               .group  = FIO_OPT_G_TIOPROF,
+               .group  = FIO_OPT_G_TIOBENCH,
        },
        {
                .name   = "numruns",
+               .lname  = "Tiobench numruns",
                .type   = FIO_OPT_INT,
-               .roff1  = &loops,
+               .off1   = offsetof(struct tiobench_options, loops),
                .help   = "Number of runs",
                .category = FIO_OPT_C_PROFILE,
-               .group  = FIO_OPT_G_TIOPROF,
+               .group  = FIO_OPT_G_TIOBENCH,
        },
        {
                .name   = "dir",
+               .lname  = "Tiobench directory",
                .type   = FIO_OPT_STR_STORE,
-               .roff1  = &dir,
+               .off1   = offsetof(struct tiobench_options, dir),
                .help   = "Test directory",
                .category = FIO_OPT_C_PROFILE,
-               .group  = FIO_OPT_G_TIOPROF,
+               .group  = FIO_OPT_G_TIOBENCH,
        },
        {
                .name   = "threads",
+               .lname  = "Tiobench threads",
                .type   = FIO_OPT_INT,
-               .roff1  = &nthreads,
+               .off1   = offsetof(struct tiobench_options, nthreads),
                .help   = "Number of Threads",
                .category = FIO_OPT_C_PROFILE,
-               .group  = FIO_OPT_G_TIOPROF,
+               .group  = FIO_OPT_G_TIOBENCH,
        },
        {
                .name   = NULL,
@@ -70,9 +88,8 @@ static struct fio_option options[] = {
 /*
  * Fill our private options into the command line
  */
-static void tb_prep_cmdline(void)
+static int tb_prep_cmdline(void)
 {
-
        /*
         * tiobench uses size as MB, so multiply up
         */
@@ -91,14 +108,16 @@ static void tb_prep_cmdline(void)
                sprintf(dir_idx, "directory=./");
 
        sprintf(t_idx, "numjobs=%u", nthreads);
+       return 0;
 }
 
 static struct profile_ops tiobench_profile = {
        .name           = "tiobench",
        .desc           = "tiotest/tiobench benchmark",
-       .options        = options,
        .prep_cmd       = tb_prep_cmdline,
        .cmdline        = tb_opts,
+       .options        = options,
+       .opt_data       = &tiobench_options,
 };
 
 static void fio_init tiobench_register(void)