X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=parse.c;h=f54dae625bbbb59387f035cdb08f9fe1768675e1;hp=8885f594d5d12e5454182c110a92d38e33e40dad;hb=ea0542d939342be73ac2b7f42c68f37273f98412;hpb=d926d535c7e1a12ff1a57a718ed8e84f617b0172 diff --git a/parse.c b/parse.c index 8885f594..f54dae62 100644 --- a/parse.c +++ b/parse.c @@ -49,7 +49,7 @@ static void posval_sort(struct fio_option *o, struct value_pair *vpmap) static void show_option_range(struct fio_option *o, int (*logger)(const char *format, ...)) { - if (o->type == FIO_OPT_FLOAT_LIST){ + if (o->type == FIO_OPT_FLOAT_LIST) { if (o->minfp == DBL_MIN && o->maxfp == DBL_MAX) return; @@ -57,7 +57,7 @@ static void show_option_range(struct fio_option *o, if (o->maxfp != DBL_MAX) logger(", max=%f", o->maxfp); logger("\n"); - } else { + } else if (!o->posval[0].ival) { if (!o->minval && !o->maxval) return; @@ -285,7 +285,7 @@ int check_str_bytes(const char *p, long long *val, void *data) return str_to_decimal(p, val, 1, data); } -static int check_str_time(const char *p, long long *val) +int check_str_time(const char *p, long long *val) { return str_to_decimal(p, val, 0, NULL); } @@ -451,6 +451,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, else ret = check_str_bytes(tmp, &ull, data); + dprint(FD_PARSE, " ret=%d, out=%llu\n", ret, ull); + if (ret) break; @@ -478,7 +480,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, } } if (ret) { - log_err("value %d not in allowed range\n",ull); + log_err("fio: value %llu not allowed:\n", ull); + show_option_values(o); return 1; } } @@ -575,6 +578,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, flp = td_var(data, o->off1); flp[curr].u.f = uf; + dprint(FD_PARSE, " out=%f\n", uf); + /* ** Calculate precision for output by counting ** number of digits after period. Find first @@ -744,6 +749,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, else il = 1; + dprint(FD_PARSE, " ret=%d, out=%d\n", ret, il); + if (ret) break; @@ -1079,6 +1086,8 @@ int show_cmd_help(struct fio_option *options, const char *name) continue; if (!exec_profile && o->prof_name) continue; + if (exec_profile && !(o->prof_name && !strcmp(exec_profile, o->prof_name))) + continue; if (name) { if (!strcmp(name, o->name) || @@ -1167,6 +1176,11 @@ void option_init(struct fio_option *o) } if (!o->cb && (!o->off1 && !o->roff1)) log_err("Option %s: neither cb nor offset given\n", o->name); + if (!o->category) { + log_info("Option %s: no category defined. Setting to misc\n", o->name); + o->category = FIO_OPT_C_GENERAL; + o->group = FIO_OPT_G_INVALID; + } if (o->type == FIO_OPT_STR || o->type == FIO_OPT_STR_STORE || o->type == FIO_OPT_STR_MULTI) return; @@ -1174,10 +1188,6 @@ void option_init(struct fio_option *o) (o->roff1 || o->roff2 || o->roff3 || o->roff4))) { log_err("Option %s: both cb and offset given\n", o->name); } - if (!o->category) { - log_info("Options %s: no category defined. Setting to misc\n", o->name); - o->category = FIO_OPT_C_GENERAL; - } } /*