> On Oct 3, 2024, at 17:35, Integral <[email protected]> wrote:
> 
> Therefore, if my original patch is okay, could you merge it?

I took a look just now, I think you can use lookup_constant.

> 
> 
> Thanks,
> 
> Integral
> 
> 
> On 7/22/24 12:03 PM, Hongbo Li wrote:
>> 
>> 
>> On 2024/7/19 6:50, Kent Overstreet wrote:
>>> On Thu, Jul 18, 2024 at 08:29:28PM GMT, Integral wrote:
>>>> Here is the new patch:
>>>> 
>>>> Currently, when using bcachefs-tools to set options, bool-type options can
>>>> only accept 1 or 0. Add support for accepting true/false, yes/no &
>>>> on/off for these options.
>>>> 
>>>> Signed-off-by: Integral <[email protected]>
>>>> ---
>>>>   fs/bcachefs/opts.c | 18 +++++++++++-------
>>>>   1 file changed, 11 insertions(+), 7 deletions(-)
>>>> 
>>>> diff --git a/fs/bcachefs/opts.c b/fs/bcachefs/opts.c
>>>> index 0770aebef6d8..0e4cd6984eda 100644
>>>> --- a/fs/bcachefs/opts.c
>>>> +++ b/fs/bcachefs/opts.c
>>>> @@ -332,17 +332,21 @@ int bch2_opt_parse(struct bch_fs *c,
>>>>       switch (opt->type) {
>>>>       case BCH_OPT_BOOL:
>>>>           if (val) {
>>>> -            ret = kstrtou64(val, 10, res);
>>>> +            if (!strcasecmp(val, "1") || !strcasecmp(val, "true") ||
>>>> +                !strcasecmp(val, "yes") || !strcasecmp(val, "on")) {
>>>> +                *res = 1;
>>>> +            } else if (!strcasecmp(val, "0") || !strcasecmp(val, "false") 
>>>> ||
>>>> +                !strcasecmp(val, "no") || !strcasecmp(val, "off")) {
>> Sorry, may be I was wrong.
>>>> +                *res = 0;
>>>> +            } else {
>>>> +                if (err)
>>>> +                    prt_printf(err, "%s: must be bool", opt->attr.name);
>>>> +                return -BCH_ERR_option_not_bool;
>>>> +            }
>>> 
>>> There _should_ be something more standard in the kernel for parsing bool
>>> options (commandline options, module options) - please hunt around for
>>> that and see if it works; report back on what you find.
>> I find in Documentation/filesystems/mount_api.rst, it give an explanation.
>> 
>> ```
>> Note that if the value is of fs_param_is_bool type, fs_parse() will try
>> 
>> to match any string value against "0", "1", "no", "yes", "false", "true".
>> ```
>> 
>> But this has been handled in fs_param_is_bool with macro fsparam_bool. Many 
>> file systems do this in fs_parse. I think the original patch seems ok.
>> 
>> Thanks,
>> Hongbo
>> 
>>> 
>>> We want to be consistent on how we parse bools throughout the kernel.
> 


Reply via email to