move XFS_BMAP_SANITY_CHECK out of line
PATCH 6/6 move XFS_BMAP_SANITY_CHECK out of line
Move the XFS_BMAP_SANITY_CHECK macro out of line and make it a properly typed function. Also pass the xfs_buf for the btree block instead of just the btree block header, as we will need some additional information for it to implement CRC checking of btree blocks.
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/xfs_bmap.c +19 -3
@@ -4524,6 +4524,22 @@ xfs_bmap_one_block(return rval; } +STATIC int +xfs_bmap_sanity_check ( +struct xfs_mount *mp, +struct xfs_buf *bp, +int level) +{ +struct xfs_btree_block *block =XFS_BUF_TO_BLOCK (bp); + +if (be32_to_cpu (block->bb_magic) !=XFS_BMAP_MAGIC || +be16_to_cpu (block->bb_level) != level || +be16_to_cpu (block->bb_numrecs) ==0 || +be16_to_cpu (block->bb_numrecs) > mp->m_bmap_dmxr[level !=0 ]) +return 0 ; +return 1 ; +} +/* * Read in the extents to if_extents. * All inode fields are set up by caller, we just traverse the btree
@@ -4575,7 +4591,7 @@ xfs_bmap_read_extents(return error; block =XFS_BUF_TO_BLOCK (bp);XFS_WANT_CORRUPTED_GOTO ( -XFS_BMAP_SANITY_CHECK (mp, block, level), +xfs_bmap_sanity_check (mp, bp, level), error0);if (level ==0 )break ;
@@ -4611,7 +4627,7 @@ xfs_bmap_read_extents( goto error0; }XFS_WANT_CORRUPTED_GOTO ( -XFS_BMAP_SANITY_CHECK (mp, block,0 ), +xfs_bmap_sanity_check (mp, bp,0 ), error0);/* * Read-ahead the next leaf block, if any.
@@ -6287,7 +6303,7 @@ xfs_bmap_check_leaf_extents( goto error_norelse; block =XFS_BUF_TO_BLOCK (bp);XFS_WANT_CORRUPTED_GOTO ( -XFS_BMAP_SANITY_CHECK (mp, block, level), +xfs_bmap_sanity_check (mp, bp, level), error0);if (level ==0 )break ;
fs/xfs/xfs_bmap_btree.h +0 -7
@@ -213,13 +213,6 @@ typedef __be64 xfs_bmbt_ptr_t, xfs_bmdr_*/ #define XFS_BM_MAXLEVELS (mp,w) ((mp)->m_bm_maxlevels[(w)]) -#define XFS_BMAP_SANITY_CHECK (mp,bb,level) \ - (be32_to_cpu((bb)->bb_magic) == XFS_BMAP_MAGIC && \ - be16_to_cpu((bb)->bb_level) == level && \ - be16_to_cpu((bb)->bb_numrecs) > 0 && \ - be16_to_cpu((bb)->bb_numrecs) <= (mp)->m_bmap_dmxr[(level) != 0]) - -/* * Prototypes for xfs_bmap.c to call. */