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 2799d1531639136b06cdf70019654918fa612d8d..64e31f87d4907ada7d775ef3e3d6d729bdceeffb 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 6acf1bfa0bfee57e6d5f105e47797c4126d9d88b..f28f4bad317b6792f73f45ac7ac118a1c40f1060 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 f2fc18bb760520003dde1b3530dca6c42368619c..d990314eb08b2b0b9a271ee07c2923c27d921b67 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;