On 5/19/14, 12:04 PM, Anand Jain wrote:
> From: Anand Jain <Anand.Jain@xxxxxxxxxx>
>
> generally if you use
> echo "test" > /sys/fs/btrfs/<fsid>/label
> it would introduce return char at the end and it can not
> be part of the label. The correct command is
> echo -n "test" > /sys/fs/btrfs/<fsid>/label
>
> This patch will check for this user error
Wouldn't it be a lot better to just strip the "\n" if it
exists?
> Signed-off-by: Anand Jain <Anand.Jain@xxxxxxxxxx>
> ---
> fs/btrfs/sysfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
> index c5eb214..63c2907 100644
> --- a/fs/btrfs/sysfs.c
> +++ b/fs/btrfs/sysfs.c
> @@ -374,7 +374,7 @@ static ssize_t btrfs_label_store(struct kobject *kobj,
> struct btrfs_root *root = fs_info->fs_root;
> int ret;
>
> - if (len >= BTRFS_LABEL_SIZE) {
> + if (len >= BTRFS_LABEL_SIZE || strchr(buf, '\n')) {
> pr_err("BTRFS: unable to set label with more than %d bytes\n",
> BTRFS_LABEL_SIZE - 1);
so if I do:
# echo "mylabel" > /sys/fs/btrfs/<fsid>/label
I'll get:
BTRFS: unable to set label with more than 255 bytes"
which would be pretty confusing, IMHO, given the short
label I tried to create.
Just strip out the \n ...
-Eric
> return -EINVAL;
>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html