On 2/4/20 5:46 PM, Darrick J. Wong wrote:
From: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
In process_longform_attr, replace the agcount check with a call to the
fsblock verification function in libxfs. Now we can also catch blocks
that point to static FS metadata.
Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
Ok, looks good
Reviewed-by: Allison Collins <allison.henderson@xxxxxxxxxx>
---
repair/attr_repair.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/repair/attr_repair.c b/repair/attr_repair.c
index 9a44f610..7b26df33 100644
--- a/repair/attr_repair.c
+++ b/repair/attr_repair.c
@@ -980,21 +980,21 @@ process_longform_attr(
*repair = 0;
bno = blkmap_get(blkmap, 0);
-
- if ( bno == NULLFSBLOCK ) {
+ if (bno == NULLFSBLOCK) {
if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS &&
be16_to_cpu(dip->di_anextents) == 0)
return(0); /* the kernel can handle this state */
do_warn(
_("block 0 of inode %" PRIu64 " attribute fork is missing\n"),
ino);
- return(1);
+ return 1;
}
+
/* FIX FOR bug 653709 -- EKN */
- if (mp->m_sb.sb_agcount < XFS_FSB_TO_AGNO(mp, bno)) {
+ if (!xfs_verify_fsbno(mp, bno)) {
do_warn(
_("agno of attribute fork of inode %" PRIu64 " out of regular partition\n"), ino);
- return(1);
+ return 1;
}
bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bno),