From: Darrick J. Wong Date: Mon, 29 Jul 2024 23:22:40 +0000 (-0700) Subject: xfs: check unused nlink fields in the ondisk inode X-Git-Tag: v6.10.0~24^2~88 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c7b1e9559ccd0f2df07eab5ce2efeaeb684c6e6;p=thirdparty%2Fxfsprogs-dev.git xfs: check unused nlink fields in the ondisk inode Source kernel commit: 40cb8613d6122ca80a9e42e4cecc4d308c3b80fb v2/v3 inodes use di_nlink and not di_onlink; and v1 inodes use di_onlink and not di_nlink. Whichever field is not in use, make sure its contents are zero, and teach xfs_scrub to fix that if it is. This clears a bunch of missing scrub failure errors in xfs/385 for core.onlink. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig --- diff --git a/libxfs/xfs_inode_buf.c b/libxfs/xfs_inode_buf.c index 82cf64db..aee581d5 100644 --- a/libxfs/xfs_inode_buf.c +++ b/libxfs/xfs_inode_buf.c @@ -488,6 +488,14 @@ xfs_dinode_verify( return __this_address; } + if (dip->di_version > 1) { + if (dip->di_onlink) + return __this_address; + } else { + if (dip->di_nlink) + return __this_address; + } + /* don't allow invalid i_size */ di_size = be64_to_cpu(dip->di_size); if (di_size & (1ULL << 63))