|
|
@@ -435,17 +435,11 @@ xfs_bmbt_verify(
|
|
|
|
|
|
switch (block->bb_magic) {
|
|
|
case cpu_to_be32(XFS_BMAP_CRC_MAGIC):
|
|
|
- if (!xfs_sb_version_hascrc(&mp->m_sb))
|
|
|
- return false;
|
|
|
- if (!uuid_equal(&block->bb_u.l.bb_uuid, &mp->m_sb.sb_meta_uuid))
|
|
|
- return false;
|
|
|
- if (be64_to_cpu(block->bb_u.l.bb_blkno) != bp->b_bn)
|
|
|
- return false;
|
|
|
/*
|
|
|
* XXX: need a better way of verifying the owner here. Right now
|
|
|
* just make sure there has been one set.
|
|
|
*/
|
|
|
- if (be64_to_cpu(block->bb_u.l.bb_owner) == 0)
|
|
|
+ if (!xfs_btree_lblock_v5hdr_verify(bp, XFS_RMAP_OWN_UNKNOWN))
|
|
|
return false;
|
|
|
/* fall through */
|
|
|
case cpu_to_be32(XFS_BMAP_MAGIC):
|
|
|
@@ -464,20 +458,8 @@ xfs_bmbt_verify(
|
|
|
level = be16_to_cpu(block->bb_level);
|
|
|
if (level > max(mp->m_bm_maxlevels[0], mp->m_bm_maxlevels[1]))
|
|
|
return false;
|
|
|
- if (be16_to_cpu(block->bb_numrecs) > mp->m_bmap_dmxr[level != 0])
|
|
|
- return false;
|
|
|
-
|
|
|
- /* sibling pointer verification */
|
|
|
- if (!block->bb_u.l.bb_leftsib ||
|
|
|
- (block->bb_u.l.bb_leftsib != cpu_to_be64(NULLFSBLOCK) &&
|
|
|
- !xfs_verify_fsbno(mp, be64_to_cpu(block->bb_u.l.bb_leftsib))))
|
|
|
- return false;
|
|
|
- if (!block->bb_u.l.bb_rightsib ||
|
|
|
- (block->bb_u.l.bb_rightsib != cpu_to_be64(NULLFSBLOCK) &&
|
|
|
- !xfs_verify_fsbno(mp, be64_to_cpu(block->bb_u.l.bb_rightsib))))
|
|
|
- return false;
|
|
|
|
|
|
- return true;
|
|
|
+ return xfs_btree_lblock_verify(bp, mp->m_bmap_dmxr[level != 0]);
|
|
|
}
|
|
|
|
|
|
static void
|