+ .type = FIO_OPT_STR_STORE,
+ .off1 = td_var_offset(ioengine),
+ .help = "IO engine to use",
+ .def = "sync",
+ .posval = {
+ { .ival = "sync",
+ .help = "Use read/write",
+ },
+#ifdef FIO_HAVE_LIBAIO
+ { .ival = "libaio",
+ .help = "Linux native asynchronous IO",
+ },
+#endif
+#ifdef FIO_HAVE_POSIXAIO
+ { .ival = "posixaio",
+ .help = "POSIX asynchronous IO",
+ },
+#endif
+ { .ival = "mmap",
+ .help = "Memory mapped IO",
+ },
+#ifdef FIO_HAVE_SPLICE
+ { .ival = "splice",
+ .help = "splice/vmsplice based IO",
+ },
+#endif
+#ifdef FIO_HAVE_SGIO
+ { .ival = "sg",
+ .help = "SCSI generic v3 IO",
+ },
+#endif
+ { .ival = "null",
+ .help = "Testing engine (no data transfer)",
+ },
+ { .ival = "net",
+ .help = "Network IO",
+ },
+#ifdef FIO_HAVE_SYSLET
+ { .ival = "syslet-rw",
+ .help = "syslet enabled async pread/pwrite IO",
+ },
+#endif
+ { .ival = "cpuio",
+ .help = "CPU cycler burner engine",
+ },
+ { .ival = "external",
+ .help = "Load external engine (append name)",
+ },
+ },
+ },
+ {
+ .name = "iodepth",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(iodepth),
+ .help = "Amount of IO buffers to keep in flight",
+ .def = "1",
+ },
+ {
+ .name = "iodepth_batch",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(iodepth_batch),
+ .help = "Number of IO to submit in one go",
+ },
+ {
+ .name = "iodepth_low",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(iodepth_low),
+ .help = "Low water mark for queuing depth",
+ },
+ {
+ .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 = "openfiles",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(open_files),
+ .help = "Number of files to keep open at the same time",
+ },
+ {
+ .name = "file_service_type",