From d8b4f39507ad49c6c0e1595a36a5787930647a6d Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 17 Dec 2015 08:32:15 -0700 Subject: [PATCH] Ensure that command line options also end up in json output Signed-off-by: Jens Axboe --- options.c | 5 +++-- parse.c | 44 +++++++++++++++++++++++++++----------------- parse.h | 2 +- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/options.c b/options.c index 964e2634..33cc6fe6 100644 --- a/options.c +++ b/options.c @@ -4143,7 +4143,7 @@ int fio_cmd_option_parse(struct thread_data *td, const char *opt, char *val) { int ret; - ret = parse_cmd_option(opt, val, fio_options, td); + ret = parse_cmd_option(opt, val, fio_options, td, &td->opt_list); if (!ret) { struct fio_option *o; @@ -4158,7 +4158,8 @@ int fio_cmd_option_parse(struct thread_data *td, const char *opt, char *val) int fio_cmd_ioengine_option_parse(struct thread_data *td, const char *opt, char *val) { - return parse_cmd_option(opt, val, td->io_ops->options, td->eo); + return parse_cmd_option(opt, val, td->io_ops->options, td->eo, + &td->opt_list); } void fio_fill_default_options(struct thread_data *td) diff --git a/parse.c b/parse.c index 0ef00b81..ac1bee9c 100644 --- a/parse.c +++ b/parse.c @@ -960,8 +960,27 @@ void sort_options(char **opts, struct fio_option *options, int num_opts) __fio_options = NULL; } +static void add_to_dump_list(struct fio_option *o, struct flist_head *dump_list, + const char *post) +{ + struct print_option *p; + + if (!dump_list) + return; + + p = malloc(sizeof(*p)); + p->name = strdup(o->name); + if (post) + p->value = strdup(post); + else + p->value = NULL; + + flist_add_tail(&p->list, dump_list); +} + int parse_cmd_option(const char *opt, const char *val, - struct fio_option *options, void *data) + struct fio_option *options, void *data, + struct flist_head *dump_list) { struct fio_option *o; @@ -971,11 +990,13 @@ int parse_cmd_option(const char *opt, const char *val, return 1; } - if (!handle_option(o, val, data)) - return 0; + if (handle_option(o, val, data)) { + log_err("fio: failed parsing %s=%s\n", opt, val); + return 1; + } - log_err("fio: failed parsing %s=%s\n", opt, val); - return 1; + add_to_dump_list(o, dump_list, val); + return 0; } int parse_option(char *opt, const char *input, @@ -1006,18 +1027,7 @@ int parse_option(char *opt, const char *input, return 1; } - if (dump_list) { - struct print_option *p = malloc(sizeof(*p)); - - p->name = strdup((*o)->name); - if (post) - p->value = strdup(post); - else - p->value = NULL; - - flist_add_tail(&p->list, dump_list); - } - + add_to_dump_list(*o, dump_list, post); return 0; } diff --git a/parse.h b/parse.h index 18828105..3ba80479 100644 --- a/parse.h +++ b/parse.h @@ -82,7 +82,7 @@ typedef int (str_cb_fn)(void *, char *); extern int parse_option(char *, const char *, struct fio_option *, struct fio_option **, void *, struct flist_head *); extern void sort_options(char **, struct fio_option *, int); -extern int parse_cmd_option(const char *t, const char *l, struct fio_option *, void *); +extern int parse_cmd_option(const char *t, const char *l, struct fio_option *, void *, struct flist_head *); extern int show_cmd_help(struct fio_option *, const char *); extern void fill_default_options(void *, struct fio_option *); extern void option_init(struct fio_option *); -- 2.25.1