+ .help = "IO engine to use",
+ .def = "sync",
+ .posval = { "sync", "libaio", "posixaio", "mmap", "splice",
+ "sg", "null", "net", },
+ },
+ {
+ .name = "iodepth",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(iodepth),
+ .help = "Amount of IO buffers to keep in flight",
+ .def = "1",
+ },
+ {
+ .name = "size",
+ .type = FIO_OPT_STR_VAL,
+ .off1 = td_var_offset(total_file_size),
+ .help = "Size of device or file",
+ },
+ {
+ .name = "bs",
+ .type = FIO_OPT_STR_VAL_INT,
+ .off1 = td_var_offset(bs[DDIR_READ]),
+ .off2 = td_var_offset(bs[DDIR_WRITE]),
+ .help = "Block size unit",
+ .def = "4k",
+ },
+ {
+ .name = "bsrange",
+ .type = FIO_OPT_RANGE,
+ .off1 = td_var_offset(min_bs[DDIR_READ]),
+ .off2 = td_var_offset(max_bs[DDIR_READ]),
+ .off3 = td_var_offset(min_bs[DDIR_WRITE]),
+ .off4 = td_var_offset(max_bs[DDIR_WRITE]),
+ .help = "Set block size range (in more detail than bs)",
+ },
+ {
+ .name = "bs_unaligned",
+ .type = FIO_OPT_STR_SET,
+ .off1 = td_var_offset(bs_unaligned),
+ .help = "Don't sector align IO buffer sizes",
+ },
+ {
+ .name = "offset",
+ .type = FIO_OPT_STR_VAL,
+ .off1 = td_var_offset(start_offset),
+ .help = "Start IO from this offset",
+ .def = "0",
+ },
+ {
+ .name = "randrepeat",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(rand_repeatable),
+ .help = "Use repeatable random IO pattern",
+ .def = "1",
+ },
+ {
+ .name = "norandommap",
+ .type = FIO_OPT_STR_SET,
+ .off1 = td_var_offset(norandommap),
+ .help = "Accept potential duplicate random blocks",
+ },
+ {
+ .name = "nrfiles",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(nr_files),
+ .help = "Split job workload between this number of files",
+ .def = "1",
+ },
+ {
+ .name = "fsync",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(fsync_blocks),
+ .help = "Issue fsync for writes every given number of blocks",
+ .def = "0",
+ },
+ {
+ .name = "direct",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(odirect),
+ .help = "Use O_DIRECT IO (negates buffered)",
+ .def = "0",
+ },
+ {
+ .name = "buffered",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(odirect),
+ .neg = 1,
+ .help = "Use buffered IO (negates direct)",
+ .def = "1",
+ },
+ {
+ .name = "overwrite",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(overwrite),
+ .help = "When writing, set whether to overwrite current data",
+ .def = "0",
+ },
+ {
+ .name = "loops",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(loops),
+ .help = "Number of times to run the job",
+ .def = "1",
+ },
+ {
+ .name = "numjobs",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(numjobs),
+ .help = "Duplicate this job this many times",
+ .def = "1",
+ },
+ {
+ .name = "startdelay",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(start_delay),
+ .help = "Only start job when this period has passed",
+ .def = "0",
+ },
+ {
+ .name = "runtime",
+ .alias = "timeout",
+ .type = FIO_OPT_STR_VAL_TIME,
+ .off1 = td_var_offset(timeout),
+ .help = "Stop workload when this amount of time has passed",
+ .def = "0",