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. */
Quoted 4 lines · Christoph Hellwig
Move the
XFS_BMAP_SANITY_CHECKmacro out of line and make it a properly typed function. Also pass thexfs_buffor 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.
Looks good.
Cheers,
Dave.
Signature · 2 lines
Dave Chinner [email protected]