diff options
| author | Christoph Hellwig <hch@lst.de> | 2026-10-28 09:09:39 +0100 |
|---|---|---|
| committer | Carlos Maiolino <cem@kernel.org> | 2026-11-03 15:35:15 +0100 |
| commit | 30bb61651d2da5a502cf504bcdad16c093c1bb08 (patch) | |
| tree | 37e979b01c14eb4a7491cf5d0a7f48657f16fbae /scripts/subarch.include | |
| parent | 9cc3b0eda94da41efc4b4ac85b7e6f18cf72cd67 (diff) | |
xfs: fix recovery of partial attr removals
When running xfs/753 on parent pointer-enabled file systems with DEBUG
enabled, log recovery will eventually crash after a few dozen iterations
due to an ASSERT that XFS_ATTR_INCOMPLETE is not already set when
xfs_attr3_leaf_setflag is called:
XFS: Assertion failed: (entry->flags & XFS_ATTR_INCOMPLETE) == 0, file: fs/xfs/libxfs/xfs_attr_leaf.c, line: 3045
This is because parent pointer use logged attributes, and the attribute
intents do not track the work that has been done as the transaction
rolls, and the recovery mechanism is to run the operation from scratch.
Because of this various places check for XFS_DA_OP_RECOVERY skip work
already done. But while recovery tolerates an attribute already fully
removed, it currently trips the above assert for an attribute that
already has the INCOMPLETE bit set, but still exists. Fix this by
handling the case like all the others.
Fixes: 1d08e11d04d2 ("xfs: Implement attr logging and replay")
Cc: stable@vger.kernel.org # v5.19
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
Diffstat (limited to 'scripts/subarch.include')
0 files changed, 0 insertions, 0 deletions
