All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Sterba <dsterba@suse.cz>
To: Anand Jain <anand.jain@oracle.com>
Cc: Nikolay Borisov <nborisov@suse.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 2/2] btrfs: fix vanished compression property after failed set
Date: Wed, 13 Mar 2019 18:39:09 +0100	[thread overview]
Message-ID: <20190313173909.GE31119@twin.jikos.cz> (raw)
In-Reply-To: <ff110534-776d-738f-bb11-61233cfcd02e@oracle.com>

On Wed, Mar 13, 2019 at 04:49:54PM +0800, Anand Jain wrote:
> 
> 
> On 3/13/19 3:22 PM, Nikolay Borisov wrote:
> > 
> > 
> > On 13.03.19 г. 9:20 ч., Nikolay Borisov wrote:
> >>
> >>
> >> On 13.03.19 г. 7:36 ч., Anand Jain wrote:
> >>> The compression property resets to NULL, instead of the old value if we
> >>> fail to set the new compression parameter.
> >>>
> >>> btrfs prop get /btrfs compression
> >>>    compression=lzo
> >>> btrfs prop set /btrfs compression zli
> >>>    ERROR: failed to set compression for /btrfs: Invalid argument
> >>> btrfs prop get /btrfs compression
> >>>
> >>> This is because the compression property ->validate() is successful for
> >>> 'zli' as the strncmp() used the len passed from the userland.
> >>>
> >>> Fix it by using the expected string length in strncmp().
> >>>
> >>> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> >>> ---
> >>>   fs/btrfs/props.c | 6 +++---
> >>>   1 file changed, 3 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
> >>> index ef6502a94712..7aa362c2fbcf 100644
> >>> --- a/fs/btrfs/props.c
> >>> +++ b/fs/btrfs/props.c
> >>> @@ -277,11 +277,11 @@ static int prop_compression_validate(struct inode *inode, const char *value,
> >>>   	if (!value)
> >>>   		return 0;
> >>>   
> >>> -	if (!strncmp("lzo", value, len))
> >>> +	if (!strncmp("lzo", value, 3))
> >>>   		return 0;
> >>> -	else if (!strncmp("zlib", value, len))
> >>> +	else if (!strncmp("zlib", value, 4))
> >>>   		return 0;
> >>> -	else if (!strncmp("zstd", value, len))
> >>> +	else if (!strncmp("zstd", value, 4))
> >>>   		return 0;
> >>
> >> This also makes the len argument to prop_compression_validate redundant
> >> and should be removed as well.
> 
>   Its part of the 'struct prop_handler', its better to keep it until
>   properties have completely evolved.
> 
> > 
> > As a matter of fact I don't see any value in prop_compression_validate
> > since the exact same code is used in prop_compression_apply and einval
> > will be returned if an invalid value is passed in.
> 
>   I notice too. But its better to keep it until the most of the
>   properties have evolved.
> 
>   As of now btrfs_set_prop() follows sequence..
>     h->validate(prop)
>     setxattr(prop)
>     h->apply(prop)
> 
>   If validate fails its easy to fail exit.

Agreed, some code could be repeated in the apply() callback, but
otherwise I'd like to keep both.

  reply	other threads:[~2019-03-13 17:37 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-13  5:36 [PATCH 1/2] btrfs: fix zstd compression parameter Anand Jain
2019-03-13  5:36 ` [PATCH 2/2] btrfs: fix vanished compression property after failed set Anand Jain
2019-03-13  7:20   ` Nikolay Borisov
2019-03-13  7:22     ` Nikolay Borisov
2019-03-13  8:49       ` Anand Jain
2019-03-13 17:39         ` David Sterba [this message]
2019-03-13 10:33   ` Anand Jain
2019-03-13 10:49     ` Anand Jain
2019-03-13 17:42       ` David Sterba
2019-03-13 17:45     ` David Sterba
2019-03-14  1:40       ` Anand Jain
2019-03-13  7:19 ` [PATCH 1/2] btrfs: fix zstd compression parameter Nikolay Borisov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190313173909.GE31119@twin.jikos.cz \
    --to=dsterba@suse.cz \
    --cc=anand.jain@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=nborisov@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.