]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xfs: fix remote xattr valuelblk check
authorDarrick J. Wong <djwong@kernel.org>
Fri, 23 Jan 2026 17:27:33 +0000 (09:27 -0800)
committerSasha Levin <sashal@kernel.org>
Wed, 4 Mar 2026 12:21:15 +0000 (07:21 -0500)
[ Upstream commit bd3138e8912c9db182eac5fed1337645a98b7a4f ]

In debugging other problems with generic/753, it turns out that it's
possible for the system go to down in the middle of a remote xattr set
operation such that the leaf block entry is marked incomplete and
valueblk is set to zero.  Make this no longer a failure.

Cc: <stable@vger.kernel.org> # v4.15
Fixes: 13791d3b833428 ("xfs: scrub extended attribute leaf space")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/xfs/scrub/attr.c

index ef299be01de5eac53f41eeb517390b6874f98fe0..a0878fdbcf386647429ca105008cc55b87748a45 100644 (file)
@@ -338,7 +338,10 @@ xchk_xattr_entry(
                rentry = xfs_attr3_leaf_name_remote(leaf, idx);
                namesize = xfs_attr_leaf_entsize_remote(rentry->namelen);
                name_end = (char *)rentry + namesize;
-               if (rentry->namelen == 0 || rentry->valueblk == 0)
+               if (rentry->namelen == 0)
+                       xchk_da_set_corrupt(ds, level);
+               if (rentry->valueblk == 0 &&
+                   !(ent->flags & XFS_ATTR_INCOMPLETE))
                        xchk_da_set_corrupt(ds, level);
        }
        if (name_end > buf_end)