From 4a7a7ea1f59032e182b9faba06df61d6375a1f97 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 4 Jun 2022 14:49:02 -0400 Subject: bcachefs: Add some missing error messages bch2_opt_parse() was failing to generate error messages in error path. Signed-off-by: Kent Overstreet --- fs/bcachefs/opts.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'fs/bcachefs/opts.c') diff --git a/fs/bcachefs/opts.c b/fs/bcachefs/opts.c index 385451ef865e..c4ccb42d7851 100644 --- a/fs/bcachefs/opts.c +++ b/fs/bcachefs/opts.c @@ -267,20 +267,32 @@ 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)) { + if (err) + 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 +301,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); -- cgit