Metadata inodes that store btrees will have zero extents and a nonzero
nblocks. Adjust the inode verifier so that this combination is not
flagged.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
if (mode && nextents + naextents > nblocks)
return __this_address;
- if (nextents + naextents == 0 && nblocks != 0)
- return __this_address;
-
if (S_ISDIR(mode) && nextents > mp->m_dir_geo->max_extents)
return __this_address;
return fa;
}
+ /* metadata inodes containing btrees always have zero extent count */
+ if (flags2 & XFS_DIFLAG2_METADATA) {
+ switch (XFS_DFORK_FORMAT(dip, XFS_DATA_FORK)) {
+ case XFS_DINODE_FMT_RMAP:
+ break;
+ default:
+ if (nextents + naextents == 0 && nblocks != 0)
+ return __this_address;
+ break;
+ }
+ } else if (nextents + naextents == 0 && nblocks != 0)
+ return __this_address;
+
return NULL;
}