diff options
author | Anand Jain <anand.jain@oracle.com> | 2025-01-29 23:21:46 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2025-03-18 20:35:48 +0100 |
commit | a66b39f699cbd9125c0f248d18fc1381265ee42c (patch) | |
tree | df55212719cb8109d2ee1bd35dc57f822f5e4c84 /fs/btrfs/sysfs.c | |
parent | 19eaf5fd8c73437bb1f70bc5a062bdc14f152c9a (diff) |
btrfs: sysfs: accept size suffixes for read policy values
We now parse human-friendly size values (e.g. '1G', '2M') when setting
read policies.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/sysfs.c')
-rw-r--r-- | fs/btrfs/sysfs.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 14f53f757555..974e8a75e3ab 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c @@ -1342,17 +1342,18 @@ int btrfs_read_policy_to_enum(const char *str, s64 *value_ret) /* Separate value from input in policy:value format. */ value_str = strchr(param, ':'); if (value_str) { - int ret; + char *retptr; *value_str = 0; value_str++; if (!value_ret) return -EINVAL; - ret = kstrtos64(value_str, 10, value_ret); - if (ret) + + *value_ret = memparse(value_str, &retptr); + /* There could be any trailing typos after the value. */ + retptr = skip_spaces(retptr); + if (*retptr != 0 || *value_ret <= 0) return -EINVAL; - if (*value_ret < 0) - return -ERANGE; } #endif |