X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=options.c;h=bb46dc9df8cbf707a87671c4b1f0b1867dd79f4b;hb=d7ee2a7d431c2cabdf56d04ca14805cad72cf985;hp=1914037583fb24163936e18aac7b4473aed87728;hpb=d5e3a0c6f5376e0d76143edb2c1622efd77f995f;p=fio.git diff --git a/options.c b/options.c index 19140375..bb46dc9d 100644 --- a/options.c +++ b/options.c @@ -595,6 +595,14 @@ static char *get_next_file_name(char **ptr) return start; } +static int str_hostname_cb(void *data, const char *input) +{ + struct thread_data *td = data; + + td->o.filename = strdup(input); + return 0; +} + static int str_filename_cb(void *data, const char *input) { struct thread_data *td = data; @@ -749,6 +757,17 @@ static int str_write_lat_log_cb(void *data, const char *str) return 0; } +static int str_write_iops_log_cb(void *data, const char *str) +{ + struct thread_data *td = data; + + if (str) + td->o.iops_log_file = strdup(str); + + td->o.write_iops_log = 1; + return 0; +} + static int str_gtod_reduce_cb(void *data, int *il) { struct thread_data *td = data; @@ -758,6 +777,7 @@ static int str_gtod_reduce_cb(void *data, int *il) td->o.disable_clat = !!val; td->o.disable_slat = !!val; td->o.disable_bw = !!val; + td->o.clat_percentiles = !val; if (val) td->tv_cache_mask = 63; @@ -860,6 +880,12 @@ static struct fio_option options[FIO_MAX_OPTS] = { .prio = -1, /* must come after "directory" */ .help = "File(s) to use for the workload", }, + { + .name = "hostname", + .type = FIO_OPT_STR_STORE, + .cb = str_hostname_cb, + .help = "Hostname for net IO engine", + }, { .name = "kb_base", .type = FIO_OPT_INT, @@ -1555,7 +1581,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { .name = "verify_dump", .type = FIO_OPT_BOOL, .off1 = td_var_offset(verify_dump), - .def = "1", + .def = "0", .help = "Dump contents of good and bad blocks on failure", .parent = "verify", }, @@ -1821,6 +1847,15 @@ static struct fio_option options[FIO_MAX_OPTS] = { .help = "Time window over which to calculate bandwidth" " (msec)", .def = "500", + .parent = "write_bw_log", + }, + { + .name = "iopsavgtime", + .type = FIO_OPT_INT, + .off1 = td_var_offset(iops_avg_time), + .help = "Time window over which to calculate IOPS (msec)", + .def = "500", + .parent = "write_iops_log", }, { .name = "create_serialize", @@ -1938,6 +1973,13 @@ static struct fio_option options[FIO_MAX_OPTS] = { .cb = str_write_lat_log_cb, .help = "Write log of latency during run", }, + { + .name = "write_iops_log", + .type = FIO_OPT_STR, + .off1 = td_var_offset(write_iops_log), + .cb = str_write_iops_log_cb, + .help = "Write log of IOPS during run", + }, { .name = "hugepage-size", .type = FIO_OPT_INT, @@ -1975,7 +2017,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { .type = FIO_OPT_BOOL, .off1 = td_var_offset(clat_percentiles), .help = "Enable the reporting of completion latency percentiles", - .def = "0", + .def = "1", }, { .name = "percentile_list", @@ -2305,7 +2347,10 @@ int fio_show_option_help(const char *opt) return show_cmd_help(options, opt); } -static void __options_mem(struct thread_data *td, int alloc) +/* + * dupe FIO_OPT_STR_STORE options + */ +void options_mem_dupe(struct thread_data *td) { struct thread_options *o = &td->o; struct fio_option *opt; @@ -2317,32 +2362,13 @@ static void __options_mem(struct thread_data *td, int alloc) continue; ptr = (void *) o + opt->off1; - if (*ptr) { - if (alloc) - *ptr = strdup(*ptr); - else { - free(*ptr); - *ptr = NULL; - } - } + if (!*ptr) + ptr = td_var(o, opt->off1); + if (*ptr) + *ptr = strdup(*ptr); } } -/* - * dupe FIO_OPT_STR_STORE options - */ -void options_mem_dupe(struct thread_data *td) -{ - __options_mem(td, 1); -} - -void options_mem_free(struct thread_data fio_unused *td) -{ -#if 0 - __options_mem(td, 0); -#endif -} - unsigned int fio_get_kb_base(void *data) { struct thread_data *td = data; @@ -2423,3 +2449,8 @@ void del_opt_posval(const char *optname, const char *ival) o->posval[i].help = NULL; } } + +void fio_options_free(struct thread_data *td) +{ + options_free(options, td); +}