X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=options.c;h=1c44f426dcbde350f6bff5479e31aeee37b7702f;hb=0fddbf7a07fa4d6501e7a2fcf2b058325affba57;hp=1219803a73a1e9880698aa8ecf387f1426e7bdba;hpb=e078de4a1c4e27f1938db4656e4d7cb6f98a8e1c;p=fio.git diff --git a/options.c b/options.c index 1219803a..1c44f426 100644 --- a/options.c +++ b/options.c @@ -271,6 +271,7 @@ static int ignore_error_type(struct thread_data *td, int etype, char *str) if (!error[i]) { log_err("Unknown error %s, please use number value \n", fname); + free(error); return 1; } i++; @@ -376,6 +377,23 @@ static int str_rwmix_write_cb(void *data, unsigned long long *val) 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; @@ -533,7 +551,7 @@ static int str_numa_mpol_cb(void *data, char *input) { struct thread_data *td = data; const char * const policy_types[] = - { "default", "prefer", "bind", "interleave", "local" }; + { "default", "prefer", "bind", "interleave", "local", NULL }; int i; char *nodelist = strchr(input, ':'); @@ -1285,6 +1303,11 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { { .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", @@ -1642,6 +1665,32 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .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", @@ -2730,7 +2779,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { { .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, @@ -2776,7 +2825,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { { .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,