Signed-off-by: Jens Axboe <axboe@kernel.dk>
extern int fio_backend(void);
extern void reset_fio_state(void);
extern void clear_io_state(struct thread_data *);
extern int fio_backend(void);
extern void reset_fio_state(void);
extern void clear_io_state(struct thread_data *);
-extern int fio_options_parse(struct thread_data *, char **, int);
+extern int fio_options_parse(struct thread_data *, char **, int, int);
extern void fio_keywords_init(void);
extern int fio_cmd_option_parse(struct thread_data *, const char *, char *);
extern int fio_cmd_ioengine_option_parse(struct thread_data *, const char *, char *);
extern void fio_keywords_init(void);
extern int fio_cmd_option_parse(struct thread_data *, const char *, char *);
extern int fio_cmd_ioengine_option_parse(struct thread_data *, const char *, char *);
td = get_new_job(0, td_parent, 0);
}
if (in_global)
td = get_new_job(0, td_parent, 0);
}
if (in_global)
- fio_options_parse(td_parent, (char **) &o[i], 1);
+ fio_options_parse(td_parent, (char **) &o[i], 1, 0);
- fio_options_parse(td, (char **) &o[i], 1);
+ fio_options_parse(td, (char **) &o[i], 1, 0);
- ret = fio_options_parse(td, opts, num_opts);
- if (!ret) {
- if (dump_cmdline)
- for (i = 0; i < num_opts; i++)
- log_info("--%s ", opts[i]);
-
+ ret = fio_options_parse(td, opts, num_opts, dump_cmdline);
+ if (!ret)
ret = add_job(td, name, 0, 0, type);
ret = add_job(td, name, 0, 0, type);
log_err("fio: job %s dropped\n", name);
put_job(td);
}
log_err("fio: job %s dropped\n", name);
put_job(td);
}
-int fio_options_parse(struct thread_data *td, char **opts, int num_opts)
+int fio_options_parse(struct thread_data *td, char **opts, int num_opts,
+ int dump_cmdline)
{
int i, ret, unknown;
char **opts_copy;
{
int i, ret, unknown;
char **opts_copy;
for (ret = 0, i = 0, unknown = 0; i < num_opts; i++) {
struct fio_option *o;
int newret = parse_option(opts_copy[i], opts[i], fio_options,
for (ret = 0, i = 0, unknown = 0; i < num_opts; i++) {
struct fio_option *o;
int newret = parse_option(opts_copy[i], opts[i], fio_options,
if (opts_copy[i]) {
if (newret && !o) {
if (opts_copy[i]) {
if (newret && !o) {
if (td->eo)
newret = parse_option(opts_copy[i], opts[i],
td->io_ops->options, &o,
if (td->eo)
newret = parse_option(opts_copy[i], opts[i],
td->io_ops->options, &o,
}
int parse_option(char *opt, const char *input,
}
int parse_option(char *opt, const char *input,
- struct fio_option *options, struct fio_option **o, void *data)
+ struct fio_option *options, struct fio_option **o, void *data,
+ int dump_cmdline)
- if (!handle_option(*o, post, data))
- return 0;
+ if (handle_option(*o, post, data)) {
+ log_err("fio: failed parsing %s\n", input);
+ return 1;
+ }
- log_err("fio: failed parsing %s\n", input);
- return 1;
+ if (dump_cmdline) {
+ const char *delim;
+
+ if (!strcmp("description", (*o)->name))
+ delim = "\"";
+ else
+ delim = "";
+
+ log_info("--%s%s", (*o)->name, post ? "" : " ");
+ if (post)
+ log_info("=%s%s%s ", delim, post, delim);
+ }
+
+ return 0;
typedef int (str_cb_fn)(void *, char *);
typedef int (str_cb_fn)(void *, char *);
-extern int parse_option(char *, const char *, struct fio_option *, struct fio_option **, void *);
+extern int parse_option(char *, const char *, struct fio_option *, struct fio_option **, void *, int);
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 show_cmd_help(struct fio_option *, const char *);
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 show_cmd_help(struct fio_option *, const char *);