From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Chandan Babu R <chandan.babu@oracle.com>, linux-xfs@vger.kernel.org
Subject: Re: [PATCH 5/8] xfs: remove xfs_attr_shortform_lookup
Date: Tue, 19 Dec 2023 09:45:05 -0800 [thread overview]
Message-ID: <20231219174505.GM361584@frogsfrogsfrogs> (raw)
In-Reply-To: <20231219144627.GA1477@lst.de>
On Tue, Dec 19, 2023 at 03:46:27PM +0100, Christoph Hellwig wrote:
> So, the buildbot rightly complained that this can return an
> uninitialized error variable in xfs_attr_shortform_addname now
> (why are we disabling the goddam use of uninitialized variable
> warnings in Linux again, sigh..).
>
> I then not only created the trivial fix, but also wrote a simple wrapper
> for the setxattr syscall as the existing setfattr and attr tools don't
> allow to control the flag, which I assumed means xfstests didn't really
> test this as much as it should. But that little test showed we're still
> getting the right errno values even with the unininitialized variable
> returns, which seemed odd.
>
> It turns out we're not even exercising this code any more, as
> xfs_attr_set already does a xfs_attr_lookup lookup first and has a
> copy of this logic executed much earlier (and I should have really though
> about that because I got very close to that code for the defer ops
> cleanup).
Eh, there's lots of, uh, cleanup opportunities in the xattr code. ;)
The changes below look reasonable, but I wonder -- the leaf and node add
functions do a similar thing; can they go too?
I'm assuming those can't go away because they actually set @args->index
and @args->rmt* and we might've blown that away after the initial lookup
in xfs_attr_set? But maybe they can? Insofar as figuring all that out
is probably an entire campaign on its own.
> So.. I'm tempted to just turn these checks into asserts with something
> like the below on top of this patch, I'll just need to see if it survives
> testing:
I'll await your return then. :)
--D
> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
> index d6173888ed0d56..abdc58f286154a 100644
> --- a/fs/xfs/libxfs/xfs_attr.c
> +++ b/fs/xfs/libxfs/xfs_attr.c
> @@ -1066,13 +1066,13 @@ xfs_attr_shortform_addname(
> struct xfs_da_args *args)
> {
> int newsize, forkoff;
> - int error;
>
> trace_xfs_attr_sf_addname(args);
>
> if (xfs_attr_sf_findname(args)) {
> - if (!(args->op_flags & XFS_DA_OP_REPLACE))
> - return error;
> + int error;
> +
> + ASSERT(args->op_flags & XFS_DA_OP_REPLACE);
>
> error = xfs_attr_sf_removename(args);
> if (error)
> @@ -1086,8 +1086,7 @@ xfs_attr_shortform_addname(
> */
> args->op_flags &= ~XFS_DA_OP_REPLACE;
> } else {
> - if (args->op_flags & XFS_DA_OP_REPLACE)
> - return error;
> + ASSERT(!(args->op_flags & XFS_DA_OP_REPLACE));
> }
>
> if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||
>
>
next prev parent reply other threads:[~2023-12-19 17:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-19 12:08 attr cleanups v2 Christoph Hellwig
2023-12-19 12:08 ` [PATCH 1/8] xfs: make if_data a void pointer Christoph Hellwig
2023-12-19 12:08 ` [PATCH 2/8] xfs: return if_data from xfs_idata_realloc Christoph Hellwig
2023-12-19 12:08 ` [PATCH 3/8] xfs: move the xfs_attr_sf_lookup tracepoint Christoph Hellwig
2023-12-19 12:08 ` [PATCH 4/8] xfs: simplify xfs_attr_sf_findname Christoph Hellwig
2023-12-19 12:08 ` [PATCH 5/8] xfs: remove xfs_attr_shortform_lookup Christoph Hellwig
2023-12-19 14:46 ` Christoph Hellwig
2023-12-19 17:45 ` Darrick J. Wong [this message]
2023-12-20 3:55 ` Christoph Hellwig
2023-12-19 12:08 ` [PATCH 6/8] xfs: use xfs_attr_sf_findname in xfs_attr_shortform_getvalue Christoph Hellwig
2023-12-19 12:08 ` [PATCH 7/8] xfs: remove struct xfs_attr_shortform Christoph Hellwig
2023-12-19 17:35 ` Darrick J. Wong
2023-12-19 12:08 ` [PATCH 8/8] xfs: remove xfs_attr_sf_hdr_t Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2023-12-17 17:03 attr cleanups Christoph Hellwig
2023-12-17 17:03 ` [PATCH 5/8] xfs: remove xfs_attr_shortform_lookup Christoph Hellwig
2023-12-18 22:37 ` Darrick J. Wong
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=20231219174505.GM361584@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=hch@lst.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox