All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: xfs <linux-xfs@vger.kernel.org>, kanda.motohiro@gmail.com
Subject: Re: [PATCH] xfs: don't fail when converting shortform attr to long form during ATTR_REPLACE
Date: Wed, 18 Apr 2018 11:11:16 +1000	[thread overview]
Message-ID: <20180418011116.GN23861@dastard> (raw)
In-Reply-To: <20180418005107.GK24738@magnolia>

On Tue, Apr 17, 2018 at 05:51:07PM -0700, Darrick J. Wong wrote:
> On Wed, Apr 18, 2018 at 10:45:21AM +1000, Dave Chinner wrote:
> > On Tue, Apr 17, 2018 at 05:31:30PM -0700, Darrick J. Wong wrote:
> > > From: Darrick J. Wong <darrick.wong@oracle.com>
> > > 
> > > Kanda Motohiro reported that expanding a tiny xattr into a large xattr
> > > fails on XFS because we remove the tiny xattr from a shortform fork and
> > > then try to re-add it after converting the fork to extents format having
> > > not removed the ATTR_REPLACE flag.  This fails because the attr is no
> > > longer present, causing a fs shutdown.
> > > 
> > > This is derived from the patch in his bug report, but we really
> > > shouldn't ignore a nonzero retval from the remove call.  Something's
> > > broken and we should bail out and shut down.
> > > 
> > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119
> > > Reported-by: kanda.motohiro@gmail.com
> > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> > > ---
> > >  fs/xfs/libxfs/xfs_attr.c |    9 ++++++++-
> > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
> > > index ce4a34a..2588c73 100644
> > > --- a/fs/xfs/libxfs/xfs_attr.c
> > > +++ b/fs/xfs/libxfs/xfs_attr.c
> > > @@ -511,7 +511,14 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
> > >  		if (args->flags & ATTR_CREATE)
> > >  			return retval;
> > >  		retval = xfs_attr_shortform_remove(args);
> > > -		ASSERT(retval == 0);
> > > +		if (retval)
> > > +			return retval;
> > > +		/*
> > > +		 * Since we have removed the old attr here,
> > > +		 * further lookup will fail with ENOATTR.
> > > +		 * Ignore this was a replace and go on creating new attr.
> > 
> > The last line of that comment doesn't make sense to me. not sure
> > what it's meant to say...
> 
> That was what was in the patch attached to the bugzilla. :)
> 
> How about:
> 
> /*
>  * Since we have removed the old attr, clear ATTR_REPLACE so that the
>  * leaf format add routine won't trip over the attr not being around.
>  */
> 
> instead?

Yup, that makes sense now.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2018-04-18  1:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-18  0:31 [PATCH] xfs: don't fail when converting shortform attr to long form during ATTR_REPLACE Darrick J. Wong
2018-04-18  0:45 ` Dave Chinner
2018-04-18  0:51   ` Darrick J. Wong
2018-04-18  1:11     ` Dave Chinner [this message]
2018-04-18 10:31 ` Christoph Hellwig

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=20180418011116.GN23861@dastard \
    --to=david@fromorbit.com \
    --cc=darrick.wong@oracle.com \
    --cc=kanda.motohiro@gmail.com \
    --cc=linux-xfs@vger.kernel.org \
    /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.