return 0;
}
+static int str_perc_rand_cb(void *data, unsigned long long *val)
+{
+ struct thread_data *td = data;
+
+ td->o.perc_rand = *val;
+ return 0;
+}
+
+static int str_perc_seq_cb(void *data, unsigned long long *val)
+{
+ struct thread_data *td = data;
+
+ td->o.perc_rand = 100 - *val;
+ return 0;
+}
+
+
static int str_exitall_cb(void)
{
exitall_on_terminate = 1;
{ .ival = "vsync",
.help = "Use readv/writev",
},
+#ifdef CONFIG_PWRITEV
+ { .ival = "pvsync",
+ .help = "Use preadv/pwritev",
+ },
+#endif
#ifdef CONFIG_LIBAIO
{ .ival = "libaio",
.help = "Linux native asynchronous IO",
.category = FIO_OPT_C_IO,
.group = FIO_OPT_G_RANDOM,
},
+ {
+ .name = "percentage_random",
+ .lname = "Percentage Random",
+ .type = FIO_OPT_INT,
+ .cb = str_perc_rand_cb,
+ .maxval = 100,
+ .help = "Percentage of seq/random mix that should be random",
+ .def = "100",
+ .interval = 5,
+ .inverse = "percentage_sequential",
+ .category = FIO_OPT_C_IO,
+ .group = FIO_OPT_G_RANDOM,
+ },
+ {
+ .name = "percentage_sequential",
+ .lname = "Percentage Sequential",
+ .type = FIO_OPT_INT,
+ .cb = str_perc_seq_cb,
+ .maxval = 100,
+ .help = "Percentage of seq/random mix that should be sequential",
+ .def = "0",
+ .interval = 5,
+ .inverse = "percentage_random",
+ .category = FIO_OPT_C_IO,
+ .group = FIO_OPT_G_RANDOM,
+ },
{
.name = "nrfiles",
.lname = "Number of files",
{
.name = "write_iops_log",
.lname = "Write IOPS log",
- .type = FIO_OPT_STR,
+ .type = FIO_OPT_STR_STORE,
.off1 = td_var_offset(iops_log_file),
.help = "Write log of IOPS during run",
.category = FIO_OPT_C_LOG,
{
.name = "group_reporting",
.lname = "Group reporting",
- .type = FIO_OPT_BOOL,
+ .type = FIO_OPT_STR_SET,
.off1 = td_var_offset(group_reporting),
.help = "Do reporting on a per-group basis",
.category = FIO_OPT_C_STAT,