diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-06-04 14:49:02 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-06-04 14:49:42 -0400 |
commit | 61a64d2944fe690a7a992eac9328a82fb0011f2f (patch) | |
tree | 87616d43e2082c3accac8c9838338167c3a3a9e2 | |
parent | e3773ba3c80f9c38b75ee55db74d327bd9a9eaf9 (diff) |
bcachefs: Add some missing error messages
bch2_opt_parse() was failing to generate error messages in error path.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/opts.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/fs/bcachefs/opts.c b/fs/bcachefs/opts.c index 385451ef865e..d4d16cb8475f 100644 --- a/fs/bcachefs/opts.c +++ b/fs/bcachefs/opts.c @@ -267,20 +267,31 @@ int bch2_opt_parse(struct bch_fs *c, switch (opt->type) { case BCH_OPT_BOOL: ret = kstrtou64(val, 10, res); - if (ret < 0) + if (ret < 0 || (*res != 0 && *res != 1)) { + pr_buf(err, "%s: must be bool", + opt->attr.name); return ret; + } break; case BCH_OPT_UINT: ret = opt->flags & OPT_HUMAN_READABLE ? bch2_strtou64_h(val, res) : kstrtou64(val, 10, res); - if (ret < 0) + if (ret < 0) { + if (err) + pr_buf(err, "%s: must be a number", + opt->attr.name); return ret; + } break; case BCH_OPT_STR: ret = match_string(opt->choices, -1, val); - if (ret < 0) + if (ret < 0) { + if (err) + pr_buf(err, "%s: invalid selection", + opt->attr.name); return ret; + } *res = ret; break; @@ -289,8 +300,12 @@ int bch2_opt_parse(struct bch_fs *c, return 0; ret = opt->parse(c, val, res); - if (ret < 0) + if (ret < 0) { + if (err) + pr_buf(err, "%s: parse error", + opt->attr.name); return ret; + } } return bch2_opt_validate(opt, *res, err); |