return strdup(p);
}
+static int str_rw_cb(void *data, const char *str)
+{
+ struct thread_data *td = data;
+ char *nr = get_opt_postfix(str);
+
+ td->o.ddir_nr = 0;
+ if (nr)
+ td->o.ddir_nr = atoi(nr);
+
+ return 0;
+}
+
static int str_mem_cb(void *data, const char *mem)
{
struct thread_data *td = data;
.name = "rw",
.alias = "readwrite",
.type = FIO_OPT_STR,
+ .cb = str_rw_cb,
.off1 = td_var_offset(td_ddir),
.help = "IO direction",
.def = "read",
},
},
},
+ {
+ .name = "fadvise_hint",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(fadvise_hint),
+ .help = "Use fadvise() to advise the kernel on IO pattern",
+ .def = "1",
+ },
{
.name = "ioengine",
.type = FIO_OPT_STR_STORE,
{ .ival = "cpuio",
.help = "CPU cycler burner engine",
},
+#ifdef FIO_HAVE_GUASI
+ { .ival = "guasi",
+ .help = "GUASI IO engine",
+ },
+#endif
{ .ival = "external",
.help = "Load external engine (append name)",
},
.oval = MEM_MALLOC,
.help = "Use malloc(3) for IO buffers",
},
+ { .ival = "shm",
+ .oval = MEM_SHM,
+ .help = "Use shared memory segments for IO buffers",
+ },
#ifdef FIO_HAVE_HUGETLB
{ .ival = "shmhuge",
.oval = MEM_SHMHUGE,
.help = "Like shm, but use huge pages",
},
- { .ival = "shm",
- .oval = MEM_SHM,
- .help = "Use shared memory segments for IO buffers",
- },
#endif
+ { .ival = "mmap",
+ .oval = MEM_MMAP,
+ .help = "Use mmap(2) (file or anon) for IO buffers",
+ },
#ifdef FIO_HAVE_HUGETLB
{ .ival = "mmaphuge",
.oval = MEM_MMAPHUGE,
.help = "Like mmap, but use huge pages",
},
#endif
- { .ival = "mmap",
- .oval = MEM_MMAP,
- .help = "Use mmap(2) (file or anon) for IO buffers",
- },
},
},
{
{
.name = "rwmixread",
.type = FIO_OPT_INT,
- .off1 = td_var_offset(rwmixread),
+ .off1 = td_var_offset(rwmix[DDIR_READ]),
.maxval = 100,
.help = "Percentage of mixed workload that is reads",
.def = "50",
{
.name = "rwmixwrite",
.type = FIO_OPT_INT,
- .off1 = td_var_offset(rwmixwrite),
+ .off1 = td_var_offset(rwmix[DDIR_WRITE]),
.maxval = 100,
.help = "Percentage of mixed workload that is writes",
.def = "50",
.off1 = td_var_offset(stonewall),
.help = "Insert a hard barrier between this job and previous",
},
+ {
+ .name = "new_group",
+ .type = FIO_OPT_STR_SET,
+ .off1 = td_var_offset(new_group),
+ .help = "Mark the start of a new group (for reporting)",
+ },
{
.name = "thread",
.type = FIO_OPT_STR_SET,