Commit 1c4f3329 authored by Alex Elder's avatar Alex Elder

xfs: encapsulate a block of debug code

Pull into a helper function some debug-only code that validates a
xfs_da_blkinfo structure that's been read from disk.
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
Reviewed-by: default avatarChristoph Hellwig <hch@infradead.org>
parent b0189cd0
...@@ -692,6 +692,24 @@ xfs_da_join(xfs_da_state_t *state) ...@@ -692,6 +692,24 @@ xfs_da_join(xfs_da_state_t *state)
return(error); return(error);
} }
#ifdef DEBUG
static void
xfs_da_blkinfo_onlychild_validate(struct xfs_da_blkinfo *blkinfo, __u16 level)
{
__be16 magic = blkinfo->magic;
if (level == 1) {
ASSERT(magic == cpu_to_be16(XFS_DIR2_LEAFN_MAGIC) ||
magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC));
} else
ASSERT(magic == cpu_to_be16(XFS_DA_NODE_MAGIC));
ASSERT(!blkinfo->forw);
ASSERT(!blkinfo->back);
}
#else /* !DEBUG */
#define xfs_da_blkinfo_onlychild_validate(blkinfo, level)
#endif /* !DEBUG */
/* /*
* We have only one entry in the root. Copy the only remaining child of * We have only one entry in the root. Copy the only remaining child of
* the old root to block 0 as the new root node. * the old root to block 0 as the new root node.
...@@ -700,8 +718,6 @@ STATIC int ...@@ -700,8 +718,6 @@ STATIC int
xfs_da_root_join(xfs_da_state_t *state, xfs_da_state_blk_t *root_blk) xfs_da_root_join(xfs_da_state_t *state, xfs_da_state_blk_t *root_blk)
{ {
xfs_da_intnode_t *oldroot; xfs_da_intnode_t *oldroot;
/* REFERENCED */
xfs_da_blkinfo_t *blkinfo;
xfs_da_args_t *args; xfs_da_args_t *args;
xfs_dablk_t child; xfs_dablk_t child;
xfs_dabuf_t *bp; xfs_dabuf_t *bp;
...@@ -732,15 +748,9 @@ xfs_da_root_join(xfs_da_state_t *state, xfs_da_state_blk_t *root_blk) ...@@ -732,15 +748,9 @@ xfs_da_root_join(xfs_da_state_t *state, xfs_da_state_blk_t *root_blk)
if (error) if (error)
return(error); return(error);
ASSERT(bp != NULL); ASSERT(bp != NULL);
blkinfo = bp->data; xfs_da_blkinfo_onlychild_validate(bp->data,
if (be16_to_cpu(oldroot->hdr.level) == 1) { be16_to_cpu(oldroot->hdr.level));
ASSERT(blkinfo->magic == cpu_to_be16(XFS_DIR2_LEAFN_MAGIC) ||
blkinfo->magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC));
} else {
ASSERT(blkinfo->magic == cpu_to_be16(XFS_DA_NODE_MAGIC));
}
ASSERT(!blkinfo->forw);
ASSERT(!blkinfo->back);
memcpy(root_blk->bp->data, bp->data, state->blocksize); memcpy(root_blk->bp->data, bp->data, state->blocksize);
xfs_da_log_buf(args->trans, root_blk->bp, 0, state->blocksize - 1); xfs_da_log_buf(args->trans, root_blk->bp, 0, state->blocksize - 1);
error = xfs_da_shrink_inode(args, child, bp); error = xfs_da_shrink_inode(args, child, bp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment