printing: whitespace damage
[fio.git] / options.c
index 635779db0a6d31f3e7e9eb8cc26bfd88521fb9bd..161b416378ef506424ac6cbb2988c9380bd32051 100644 (file)
--- a/options.c
+++ b/options.c
@@ -942,6 +942,42 @@ static struct opt_group fio_opt_cat_groups[] = {
                .name   = "General I/O",
                .mask   = FIO_OPT_G_IO_BASIC,
        },
+       {
+               .name   = "Cgroups",
+               .mask   = FIO_OPT_G_CGROUP,
+       },
+       {
+               .name   = "Runtime",
+               .mask   = FIO_OPT_G_RUNTIME,
+       },
+       {
+               .name   = "Process",
+               .mask   = FIO_OPT_G_PROCESS,
+       },
+       {
+               .name   = "Job credentials / priority",
+               .mask   = FIO_OPT_G_CRED,
+       },
+       {
+               .name   = "Clock settings",
+               .mask   = FIO_OPT_G_CLOCK,
+       },
+       {
+               .name   = "I/O Type",
+               .mask   = FIO_OPT_G_IO_TYPE,
+       },
+       {
+               .name   = "I/O Thinktime",
+               .mask   = FIO_OPT_G_THINKTIME,
+       },
+       {
+               .name   = "Randomizations",
+               .mask   = FIO_OPT_G_RANDOM,
+       },
+       {
+               .name   = "I/O buffers",
+               .mask   = FIO_OPT_G_IO_BUF,
+       },
        {
                .name   = NULL,
        }
@@ -974,18 +1010,6 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_GENERAL,
                .group  = FIO_OPT_G_DESC,
        },
-       {
-               .name   = "kb_base",
-               .lname  = "KB Base",
-               .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(kb_base),
-               .verify = kb_base_verify,
-               .prio   = 1,
-               .def    = "1024",
-               .help   = "How many bytes per KB for reporting (1000 or 1024)",
-               .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
-       },
        {
                .name   = "filename",
                .lname  = "Filename(s)",
@@ -1386,7 +1410,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "rw",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RANDOM,
        },
        {
                .name   = "use_os_rand",
@@ -1398,7 +1422,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "rw",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RANDOM,
        },
        {
                .name   = "norandommap",
@@ -1408,8 +1432,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Accept potential duplicate random blocks",
                .parent = "rw",
                .hide   = 1,
+               .hide_on_set = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RANDOM,
        },
        {
                .name   = "softrandommap",
@@ -1421,7 +1446,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .hide   = 1,
                .def    = "0",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RANDOM,
        },
        {
                .name   = "nrfiles",
@@ -1588,8 +1613,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(odirect),
                .help   = "Use O_DIRECT IO (negates buffered)",
                .def    = "0",
+               .inverse = "buffered",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_TYPE,
        },
        {
                .name   = "buffered",
@@ -1599,8 +1625,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .neg    = 1,
                .help   = "Use buffered IO (negates direct)",
                .def    = "1",
+               .inverse = "direct",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_TYPE,
        },
        {
                .name   = "overwrite",
@@ -1621,7 +1648,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .def    = "1",
                .interval = 1,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "numjobs",
@@ -1632,7 +1659,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .def    = "1",
                .interval = 1,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "startdelay",
@@ -1642,7 +1669,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Only start job when this period has passed",
                .def    = "0",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "runtime",
@@ -1653,7 +1680,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Stop workload when this amount of time has passed",
                .def    = "0",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "time_based",
@@ -1662,7 +1689,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(time_based),
                .help   = "Keep running until runtime/timeout is met",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "ramp_time",
@@ -1671,7 +1698,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(ramp_time),
                .help   = "Ramp up time before measuring performance",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_RUNTIME,
        },
        {
                .name   = "clocksource",
@@ -1681,7 +1708,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(clocksource),
                .help   = "What type of timing source to use",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CLOCK,
                .posval = {
                          { .ival = "gettimeofday",
                            .oval = CS_GTOD,
@@ -1760,7 +1787,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .cb     = str_verify_cb,
                .def    = "0",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_VERIFY,
                .posval = {
                          { .ival = "0",
                            .oval = VERIFY_NONE,
@@ -2159,7 +2186,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .def    = "0",
                .interval = 1,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
 #ifdef FIO_HAVE_IOPRIO
        {
@@ -2172,7 +2199,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .maxval = 7,
                .interval = 1,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
        {
                .name   = "prioclass",
@@ -2184,7 +2211,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .maxval = 3,
                .interval = 1,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
 #endif
        {
@@ -2195,7 +2222,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Idle time between IO buffers (usec)",
                .def    = "0",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_THINKTIME,
        },
        {
                .name   = "thinktime_spin",
@@ -2207,7 +2234,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "thinktime",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_THINKTIME,
        },
        {
                .name   = "thinktime_blocks",
@@ -2219,7 +2246,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "thinktime",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_THINKTIME,
        },
        {
                .name   = "rate",
@@ -2286,7 +2313,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Invalidate buffer/page cache prior to running job",
                .def    = "1",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_TYPE,
        },
        {
                .name   = "sync",
@@ -2298,34 +2325,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "buffered",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
-       },
-       {
-               .name   = "bwavgtime",
-               .lname  = "Bandwidth average time",
-               .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(bw_avg_time),
-               .help   = "Time window over which to calculate bandwidth"
-                         " (msec)",
-               .def    = "500",
-               .parent = "write_bw_log",
-               .hide   = 1,
-               .interval = 100,
-               .category = FIO_OPT_C_LOG,
-               .group  = FIO_OPT_G_INVALID,
-       },
-       {
-               .name   = "iopsavgtime",
-               .lname  = "IOPS average time",
-               .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(iops_avg_time),
-               .help   = "Time window over which to calculate IOPS (msec)",
-               .def    = "500",
-               .parent = "write_iops_log",
-               .hide   = 1,
-               .interval = 100,
-               .category = FIO_OPT_C_LOG,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_TYPE,
        },
        {
                .name   = "create_serialize",
@@ -2367,27 +2367,6 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_FILE,
                .group  = FIO_OPT_G_INVALID,
        },
-       {
-               .name   = "cpuload",
-               .lname  = "CPU load",
-               .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(cpuload),
-               .help   = "Use this percentage of CPU",
-               .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
-       },
-       {
-               .name   = "cpuchunks",
-               .lname  = "CPU chunk",
-               .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(cpucycle),
-               .help   = "Length of the CPU burn cycles (usecs)",
-               .def    = "50000",
-               .parent = "cpuload",
-               .hide   = 1,
-               .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
-       },
 #ifdef FIO_HAVE_CPU_AFFINITY
        {
                .name   = "cpumask",
@@ -2396,7 +2375,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .cb     = str_cpumask_cb,
                .help   = "CPU affinity mask",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
        {
                .name   = "cpus_allowed",
@@ -2405,7 +2384,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .cb     = str_cpus_allowed_cb,
                .help   = "Set CPUs allowed",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
 #endif
        {
@@ -2445,7 +2424,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .cb     = str_exitall_cb,
                .help   = "Terminate all jobs when one exits",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_PROCESS,
        },
        {
                .name   = "stonewall",
@@ -2455,7 +2434,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(stonewall),
                .help   = "Insert a hard barrier between this job and previous",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_PROCESS,
        },
        {
                .name   = "new_group",
@@ -2464,7 +2443,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(new_group),
                .help   = "Mark the start of a new group (for reporting)",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_PROCESS,
        },
        {
                .name   = "thread",
@@ -2473,7 +2452,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(use_thread),
                .help   = "Use threads instead of processes",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_PROCESS,
        },
        {
                .name   = "write_bw_log",
@@ -2516,14 +2495,30 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .group  = FIO_OPT_G_INVALID,
        },
        {
-               .name   = "hugepage-size",
-               .lname  = "Hugepage size",
+               .name   = "bwavgtime",
+               .lname  = "Bandwidth average time",
                .type   = FIO_OPT_INT,
-               .off1   = td_var_offset(hugepage_size),
-               .help   = "When using hugepages, specify size of each page",
-               .def    = __fio_stringify(FIO_HUGE_PAGE),
-               .interval = 1024 * 1024,
-               .category = FIO_OPT_C_GENERAL,
+               .off1   = td_var_offset(bw_avg_time),
+               .help   = "Time window over which to calculate bandwidth"
+                         " (msec)",
+               .def    = "500",
+               .parent = "write_bw_log",
+               .hide   = 1,
+               .interval = 100,
+               .category = FIO_OPT_C_LOG,
+               .group  = FIO_OPT_G_INVALID,
+       },
+       {
+               .name   = "iopsavgtime",
+               .lname  = "IOPS average time",
+               .type   = FIO_OPT_INT,
+               .off1   = td_var_offset(iops_avg_time),
+               .help   = "Time window over which to calculate IOPS (msec)",
+               .def    = "500",
+               .parent = "write_iops_log",
+               .hide   = 1,
+               .interval = 100,
+               .category = FIO_OPT_C_LOG,
                .group  = FIO_OPT_G_INVALID,
        },
        {
@@ -2533,7 +2528,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(group_reporting),
                .help   = "Do reporting on a per-group basis",
                .def    = "1",
-               .category = FIO_OPT_C_GENERAL,
+               .category = FIO_OPT_C_STAT,
                .group  = FIO_OPT_G_INVALID,
        },
        {
@@ -2543,7 +2538,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(zero_buffers),
                .help   = "Init IO buffers to all zeroes",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_BUF,
        },
        {
                .name   = "refill_buffers",
@@ -2552,7 +2547,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(refill_buffers),
                .help   = "Refill IO buffers on every IO submit",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_BUF,
        },
        {
                .name   = "scramble_buffers",
@@ -2562,7 +2557,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Slightly scramble buffers on every IO submit",
                .def    = "1",
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_BUF,
        },
        {
                .name   = "buffer_compress_percentage",
@@ -2574,7 +2569,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "How compressible the buffer is (approximately)",
                .interval = 5,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_BUF,
        },
        {
                .name   = "buffer_compress_chunk",
@@ -2586,7 +2581,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Size of compressible region in buffer",
                .interval = 256,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_BUF,
        },
        {
                .name   = "clat_percentiles",
@@ -2631,6 +2626,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Greatly reduce number of gettimeofday() calls",
                .cb     = str_gtod_reduce_cb,
                .def    = "0",
+               .hide_on_set = 1,
                .category = FIO_OPT_C_STAT,
                .group  = FIO_OPT_G_INVALID,
        },
@@ -2690,7 +2686,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Set up dedicated gettimeofday() thread on this CPU",
                .verify = gtod_cpu_verify,
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CLOCK,
        },
        {
                .name   = "continue_on_error",
@@ -2752,7 +2748,18 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(cgroup),
                .help   = "Add job to cgroup of this name",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CGROUP,
+       },
+       {
+               .name   = "cgroup_nodelete",
+               .lname  = "Cgroup no-delete",
+               .type   = FIO_OPT_BOOL,
+               .off1   = td_var_offset(cgroup_nodelete),
+               .help   = "Do not delete cgroups after job completion",
+               .def    = "0",
+               .parent = "cgroup",
+               .category = FIO_OPT_C_GENERAL,
+               .group  = FIO_OPT_G_CGROUP,
        },
        {
                .name   = "cgroup_weight",
@@ -2762,18 +2769,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Use given weight for cgroup",
                .minval = 100,
                .maxval = 1000,
+               .parent = "cgroup",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
-       },
-       {
-               .name   = "cgroup_nodelete",
-               .lname  = "Cgroup no-delete",
-               .type   = FIO_OPT_BOOL,
-               .off1   = td_var_offset(cgroup_nodelete),
-               .help   = "Do not delete cgroups after job completion",
-               .def    = "0",
-               .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CGROUP,
        },
        {
                .name   = "uid",
@@ -2782,7 +2780,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(uid),
                .help   = "Run job with this user ID",
                .category = FIO_OPT_C_GENERAL,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
        {
                .name   = "gid",
@@ -2791,6 +2789,29 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .off1   = td_var_offset(gid),
                .help   = "Run job with this group ID",
                .category = FIO_OPT_C_GENERAL,
+               .group  = FIO_OPT_G_CRED,
+       },
+       {
+               .name   = "kb_base",
+               .lname  = "KB Base",
+               .type   = FIO_OPT_INT,
+               .off1   = td_var_offset(kb_base),
+               .verify = kb_base_verify,
+               .prio   = 1,
+               .def    = "1024",
+               .help   = "How many bytes per KB for reporting (1000 or 1024)",
+               .category = FIO_OPT_C_GENERAL,
+               .group  = FIO_OPT_G_INVALID,
+       },
+       {
+               .name   = "hugepage-size",
+               .lname  = "Hugepage size",
+               .type   = FIO_OPT_INT,
+               .off1   = td_var_offset(hugepage_size),
+               .help   = "When using hugepages, specify size of each page",
+               .def    = __fio_stringify(FIO_HUGE_PAGE),
+               .interval = 1024 * 1024,
+               .category = FIO_OPT_C_GENERAL,
                .group  = FIO_OPT_G_INVALID,
        },
        {
@@ -3325,3 +3346,9 @@ void fio_options_free(struct thread_data *td)
                td->eo = NULL;
        }
 }
+
+struct fio_option *fio_option_find(const char *name)
+{
+       return find_option(fio_options, name);
+}
+