xfs: use buf ops magic to detect btree block type
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 6 Feb 2019 18:20:54 +0000 (10:20 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 12 Feb 2019 00:07:01 +0000 (16:07 -0800)
Now that we encode block magic numbers in all the buffer ops, use that
for block type detection in the ag header repair code instead of
encoding magics directly in the repair code.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/scrub/agheader_repair.c
fs/xfs/scrub/repair.c
fs/xfs/scrub/repair.h

index 2799d15..64e31f8 100644 (file)
@@ -342,22 +342,18 @@ xrep_agf(
                [XREP_AGF_BNOBT] = {
                        .rmap_owner = XFS_RMAP_OWN_AG,
                        .buf_ops = &xfs_bnobt_buf_ops,
-                       .magic = XFS_ABTB_CRC_MAGIC,
                },
                [XREP_AGF_CNTBT] = {
                        .rmap_owner = XFS_RMAP_OWN_AG,
                        .buf_ops = &xfs_cntbt_buf_ops,
-                       .magic = XFS_ABTC_CRC_MAGIC,
                },
                [XREP_AGF_RMAPBT] = {
                        .rmap_owner = XFS_RMAP_OWN_AG,
                        .buf_ops = &xfs_rmapbt_buf_ops,
-                       .magic = XFS_RMAP_CRC_MAGIC,
                },
                [XREP_AGF_REFCOUNTBT] = {
                        .rmap_owner = XFS_RMAP_OWN_REFC,
                        .buf_ops = &xfs_refcountbt_buf_ops,
-                       .magic = XFS_REFC_CRC_MAGIC,
                },
                [XREP_AGF_END] = {
                        .buf_ops = NULL,
@@ -875,12 +871,10 @@ xrep_agi(
                [XREP_AGI_INOBT] = {
                        .rmap_owner = XFS_RMAP_OWN_INOBT,
                        .buf_ops = &xfs_inobt_buf_ops,
-                       .magic = XFS_IBT_CRC_MAGIC,
                },
                [XREP_AGI_FINOBT] = {
                        .rmap_owner = XFS_RMAP_OWN_INOBT,
                        .buf_ops = &xfs_finobt_buf_ops,
-                       .magic = XFS_FIBT_CRC_MAGIC,
                },
                [XREP_AGI_END] = {
                        .buf_ops = NULL
index 6acf1bf..f28f4ba 100644 (file)
@@ -743,7 +743,8 @@ xrep_findroot_block(
 
        /* Ensure the block magic matches the btree type we're looking for. */
        btblock = XFS_BUF_TO_BLOCK(bp);
-       if (be32_to_cpu(btblock->bb_magic) != fab->magic)
+       ASSERT(fab->buf_ops->magic[1] != 0);
+       if (btblock->bb_magic != fab->buf_ops->magic[1])
                goto out;
 
        /*
index f2fc18b..d990314 100644 (file)
@@ -42,9 +42,6 @@ struct xrep_find_ag_btree {
        /* in: buffer ops */
        const struct xfs_buf_ops        *buf_ops;
 
-       /* in: magic number of the btree */
-       uint32_t                        magic;
-
        /* out: the highest btree block found and the tree height */
        xfs_agblock_t                   root;
        unsigned int                    height;