From: Catherine Hoang <catherine.hoang@oracle.com>
To: linux-xfs@vger.kernel.org
Subject: [PATCH 6.6 CANDIDATE 04/24] xfs: don't leak recovered attri intent items
Date: Mon, 25 Mar 2024 15:07:04 -0700 [thread overview]
Message-ID: <20240325220724.42216-5-catherine.hoang@oracle.com> (raw)
In-Reply-To: <20240325220724.42216-1-catherine.hoang@oracle.com>
From: "Darrick J. Wong" <djwong@kernel.org>
commit 07bcbdf020c9fd3c14bec51c50225a2a02707b94 upstream.
If recovery finds an xattr log intent item calling for the removal of an
attribute and the file doesn't even have an attr fork, we know that the
removal is trivially complete. However, we can't just exit the recovery
function without doing something about the recovered log intent item --
it's still on the AIL, and not logging an attrd item means it stays
there forever.
This has likely not been seen in practice because few people use LARP
and the runtime code won't log the attri for a no-attrfork removexattr
operation. But let's fix this anyway.
Also we shouldn't really be testing the attr fork presence until we've
taken the ILOCK, though this doesn't matter much in recovery, which is
single threaded.
Fixes: fdaf1bb3cafc ("xfs: ATTR_REPLACE algorithm with LARP enabled needs rework")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
---
fs/xfs/xfs_attr_item.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/fs/xfs/xfs_attr_item.c b/fs/xfs/xfs_attr_item.c
index 36fe2abb16e6..11e88a76a33c 100644
--- a/fs/xfs/xfs_attr_item.c
+++ b/fs/xfs/xfs_attr_item.c
@@ -329,6 +329,13 @@ xfs_xattri_finish_update(
goto out;
}
+ /* If an attr removal is trivially complete, we're done. */
+ if (attr->xattri_op_flags == XFS_ATTRI_OP_FLAGS_REMOVE &&
+ !xfs_inode_hasattr(args->dp)) {
+ error = 0;
+ goto out;
+ }
+
error = xfs_attr_set_iter(attr);
if (!error && attr->xattri_dela_state != XFS_DAS_DONE)
error = -EAGAIN;
@@ -608,8 +615,6 @@ xfs_attri_item_recover(
attr->xattri_dela_state = xfs_attr_init_add_state(args);
break;
case XFS_ATTRI_OP_FLAGS_REMOVE:
- if (!xfs_inode_hasattr(args->dp))
- goto out;
attr->xattri_dela_state = xfs_attr_init_remove_state(args);
break;
default:
--
2.39.3
next prev parent reply other threads:[~2024-03-25 22:07 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-25 22:07 [PATCH 6.6 CANDIDATE 00/24] xfs backports for 6.6.y (from 6.8) Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 01/24] xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 02/24] xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 03/24] xfs: consider minlen sized extents in xfs_rtallocate_extent_block Catherine Hoang
2024-03-25 22:07 ` Catherine Hoang [this message]
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 05/24] xfs: use xfs_defer_pending objects to recover intent items Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 06/24] xfs: pass the xfs_defer_pending object to iop_recover Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 07/24] xfs: transfer recovered intent item ownership in ->iop_recover Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 08/24] xfs: make rextslog computation consistent with mkfs Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 09/24] xfs: fix 32-bit truncation in xfs_compute_rextslog Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 10/24] xfs: don't allow overly small or large realtime volumes Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 11/24] xfs: make xchk_iget safer in the presence of corrupt inode btrees Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 12/24] xfs: remove unused fields from struct xbtree_ifakeroot Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 13/24] xfs: recompute growfsrtfree transaction reservation while growing rt volume Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 14/24] xfs: fix an off-by-one error in xreap_agextent_binval Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 15/24] xfs: force all buffers to be written during btree bulk load Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 16/24] xfs: add missing nrext64 inode flag check to scrub Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 17/24] xfs: initialise di_crc in xfs_log_dinode Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 18/24] xfs: short circuit xfs_growfs_data_private() if delta is zero Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 19/24] xfs: add lock protection when remove perag from radix tree Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 20/24] xfs: fix perag leak when growfs fails Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 21/24] xfs: ensure logflagsp is initialized in xfs_bmap_del_extent_real Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 22/24] xfs: update dir3 leaf block metadata after swap Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 23/24] xfs: reset XFS_ATTR_INCOMPLETE filter on node removal Catherine Hoang
2024-03-25 22:07 ` [PATCH 6.6 CANDIDATE 24/24] xfs: remove conditional building of rt geometry validator functions Catherine Hoang
2024-03-26 4:05 ` [PATCH 6.6 CANDIDATE 00/24] xfs backports for 6.6.y (from 6.8) 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=20240325220724.42216-5-catherine.hoang@oracle.com \
--to=catherine.hoang@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox