diff options
author | Eric Sandeen <sandeen@sandeen.net> | 2017-01-28 02:16:39 -0500 |
---|---|---|
committer | Darrick J. Wong <darrick.wong@oracle.com> | 2017-01-30 19:32:24 -0500 |
commit | b6f41e448277ff080fea734b93121e6cd7513f0c (patch) | |
tree | 836dd90f7b2d3d412eb5782e1b1fc463e9d9fd4c /fs | |
parent | af7d20fd83d9e2b3111a847e4220bf943e2d531c (diff) |
xfs: remove boilerplate around xfs_btree_init_block
Now that xfs_btree_init_block_int is able to determine crc
status from the passed-in mp, we can determine the proper
magic as well if we are given a btree number, rather than
an explicit magic value.
Change xfs_btree_init_block[_int] callers to pass in the
btree number, and let xfs_btree_init_block_int use the
xfs_magics array via the xfs_btree_magic macro to determine
which magic value is needed. This makes all of the
if (crc) / else stanzas identical, and the if/else can be
removed, leading to a single, common init_block call.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/libxfs/xfs_bmap.c | 19 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_bmap_btree.c | 10 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_btree.c | 11 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_btree.h | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_fsops.c | 31 |
5 files changed, 19 insertions, 56 deletions
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 1d4b8d5edaaf..d3da53e6a927 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c | |||
@@ -740,15 +740,9 @@ xfs_bmap_extents_to_btree( | |||
740 | * Fill in the root. | 740 | * Fill in the root. |
741 | */ | 741 | */ |
742 | block = ifp->if_broot; | 742 | block = ifp->if_broot; |
743 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 743 | xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL, |
744 | xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL, | 744 | XFS_BTNUM_BMAP, 1, 1, ip->i_ino, |
745 | XFS_BMAP_CRC_MAGIC, 1, 1, ip->i_ino, | ||
746 | XFS_BTREE_LONG_PTRS); | 745 | XFS_BTREE_LONG_PTRS); |
747 | else | ||
748 | xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL, | ||
749 | XFS_BMAP_MAGIC, 1, 1, ip->i_ino, | ||
750 | XFS_BTREE_LONG_PTRS); | ||
751 | |||
752 | /* | 746 | /* |
753 | * Need a cursor. Can't allocate until bb_level is filled in. | 747 | * Need a cursor. Can't allocate until bb_level is filled in. |
754 | */ | 748 | */ |
@@ -817,13 +811,8 @@ try_another_ag: | |||
817 | */ | 811 | */ |
818 | abp->b_ops = &xfs_bmbt_buf_ops; | 812 | abp->b_ops = &xfs_bmbt_buf_ops; |
819 | ablock = XFS_BUF_TO_BLOCK(abp); | 813 | ablock = XFS_BUF_TO_BLOCK(abp); |
820 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 814 | xfs_btree_init_block_int(mp, ablock, abp->b_bn, |
821 | xfs_btree_init_block_int(mp, ablock, abp->b_bn, | 815 | XFS_BTNUM_BMAP, 0, 0, ip->i_ino, |
822 | XFS_BMAP_CRC_MAGIC, 0, 0, ip->i_ino, | ||
823 | XFS_BTREE_LONG_PTRS); | ||
824 | else | ||
825 | xfs_btree_init_block_int(mp, ablock, abp->b_bn, | ||
826 | XFS_BMAP_MAGIC, 0, 0, ip->i_ino, | ||
827 | XFS_BTREE_LONG_PTRS); | 816 | XFS_BTREE_LONG_PTRS); |
828 | 817 | ||
829 | arp = XFS_BMBT_REC_ADDR(mp, ablock, 1); | 818 | arp = XFS_BMBT_REC_ADDR(mp, ablock, 1); |
diff --git a/fs/xfs/libxfs/xfs_bmap_btree.c b/fs/xfs/libxfs/xfs_bmap_btree.c index a80bf8080b1c..f93072b58a58 100644 --- a/fs/xfs/libxfs/xfs_bmap_btree.c +++ b/fs/xfs/libxfs/xfs_bmap_btree.c | |||
@@ -71,15 +71,9 @@ xfs_bmdr_to_bmbt( | |||
71 | xfs_bmbt_key_t *tkp; | 71 | xfs_bmbt_key_t *tkp; |
72 | __be64 *tpp; | 72 | __be64 *tpp; |
73 | 73 | ||
74 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 74 | xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL, |
75 | xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL, | 75 | XFS_BTNUM_BMAP, 0, 0, ip->i_ino, |
76 | XFS_BMAP_CRC_MAGIC, 0, 0, ip->i_ino, | ||
77 | XFS_BTREE_LONG_PTRS); | ||
78 | else | ||
79 | xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL, | ||
80 | XFS_BMAP_MAGIC, 0, 0, ip->i_ino, | ||
81 | XFS_BTREE_LONG_PTRS); | 76 | XFS_BTREE_LONG_PTRS); |
82 | |||
83 | rblock->bb_level = dblock->bb_level; | 77 | rblock->bb_level = dblock->bb_level; |
84 | ASSERT(be16_to_cpu(rblock->bb_level) > 0); | 78 | ASSERT(be16_to_cpu(rblock->bb_level) > 0); |
85 | rblock->bb_numrecs = dblock->bb_numrecs; | 79 | rblock->bb_numrecs = dblock->bb_numrecs; |
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index 18afab315445..421efa0ef778 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c | |||
@@ -1100,13 +1100,14 @@ xfs_btree_init_block_int( | |||
1100 | struct xfs_mount *mp, | 1100 | struct xfs_mount *mp, |
1101 | struct xfs_btree_block *buf, | 1101 | struct xfs_btree_block *buf, |
1102 | xfs_daddr_t blkno, | 1102 | xfs_daddr_t blkno, |
1103 | __u32 magic, | 1103 | xfs_btnum_t btnum, |
1104 | __u16 level, | 1104 | __u16 level, |
1105 | __u16 numrecs, | 1105 | __u16 numrecs, |
1106 | __u64 owner, | 1106 | __u64 owner, |
1107 | unsigned int flags) | 1107 | unsigned int flags) |
1108 | { | 1108 | { |
1109 | int crc = xfs_sb_version_hascrc(&mp->m_sb); | 1109 | int crc = xfs_sb_version_hascrc(&mp->m_sb); |
1110 | __u32 magic = xfs_btree_magic(crc, btnum); | ||
1110 | 1111 | ||
1111 | buf->bb_magic = cpu_to_be32(magic); | 1112 | buf->bb_magic = cpu_to_be32(magic); |
1112 | buf->bb_level = cpu_to_be16(level); | 1113 | buf->bb_level = cpu_to_be16(level); |
@@ -1141,14 +1142,14 @@ void | |||
1141 | xfs_btree_init_block( | 1142 | xfs_btree_init_block( |
1142 | struct xfs_mount *mp, | 1143 | struct xfs_mount *mp, |
1143 | struct xfs_buf *bp, | 1144 | struct xfs_buf *bp, |
1144 | __u32 magic, | 1145 | xfs_btnum_t btnum, |
1145 | __u16 level, | 1146 | __u16 level, |
1146 | __u16 numrecs, | 1147 | __u16 numrecs, |
1147 | __u64 owner, | 1148 | __u64 owner, |
1148 | unsigned int flags) | 1149 | unsigned int flags) |
1149 | { | 1150 | { |
1150 | xfs_btree_init_block_int(mp, XFS_BUF_TO_BLOCK(bp), bp->b_bn, | 1151 | xfs_btree_init_block_int(mp, XFS_BUF_TO_BLOCK(bp), bp->b_bn, |
1151 | magic, level, numrecs, owner, flags); | 1152 | btnum, level, numrecs, owner, flags); |
1152 | } | 1153 | } |
1153 | 1154 | ||
1154 | STATIC void | 1155 | STATIC void |
@@ -1159,8 +1160,6 @@ xfs_btree_init_block_cur( | |||
1159 | int numrecs) | 1160 | int numrecs) |
1160 | { | 1161 | { |
1161 | __u64 owner; | 1162 | __u64 owner; |
1162 | int crc = xfs_sb_version_hascrc(&cur->bc_mp->m_sb); | ||
1163 | xfs_btnum_t btnum = cur->bc_btnum; | ||
1164 | 1163 | ||
1165 | /* | 1164 | /* |
1166 | * we can pull the owner from the cursor right now as the different | 1165 | * we can pull the owner from the cursor right now as the different |
@@ -1174,7 +1173,7 @@ xfs_btree_init_block_cur( | |||
1174 | owner = cur->bc_private.a.agno; | 1173 | owner = cur->bc_private.a.agno; |
1175 | 1174 | ||
1176 | xfs_btree_init_block_int(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), bp->b_bn, | 1175 | xfs_btree_init_block_int(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), bp->b_bn, |
1177 | xfs_btree_magic(crc, btnum), level, numrecs, | 1176 | cur->bc_btnum, level, numrecs, |
1178 | owner, cur->bc_flags); | 1177 | owner, cur->bc_flags); |
1179 | } | 1178 | } |
1180 | 1179 | ||
diff --git a/fs/xfs/libxfs/xfs_btree.h b/fs/xfs/libxfs/xfs_btree.h index 95ea6ed0c14b..cdd4f05a5976 100644 --- a/fs/xfs/libxfs/xfs_btree.h +++ b/fs/xfs/libxfs/xfs_btree.h | |||
@@ -380,7 +380,7 @@ void | |||
380 | xfs_btree_init_block( | 380 | xfs_btree_init_block( |
381 | struct xfs_mount *mp, | 381 | struct xfs_mount *mp, |
382 | struct xfs_buf *bp, | 382 | struct xfs_buf *bp, |
383 | __u32 magic, | 383 | xfs_btnum_t btnum, |
384 | __u16 level, | 384 | __u16 level, |
385 | __u16 numrecs, | 385 | __u16 numrecs, |
386 | __u64 owner, | 386 | __u64 owner, |
@@ -391,7 +391,7 @@ xfs_btree_init_block_int( | |||
391 | struct xfs_mount *mp, | 391 | struct xfs_mount *mp, |
392 | struct xfs_btree_block *buf, | 392 | struct xfs_btree_block *buf, |
393 | xfs_daddr_t blkno, | 393 | xfs_daddr_t blkno, |
394 | __u32 magic, | 394 | xfs_btnum_t btnum, |
395 | __u16 level, | 395 | __u16 level, |
396 | __u16 numrecs, | 396 | __u16 numrecs, |
397 | __u64 owner, | 397 | __u64 owner, |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 21e3cdbaebbc..6ccaae9eb0ee 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -352,12 +352,7 @@ xfs_growfs_data_private( | |||
352 | goto error0; | 352 | goto error0; |
353 | } | 353 | } |
354 | 354 | ||
355 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 355 | xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 1, agno, 0); |
356 | xfs_btree_init_block(mp, bp, XFS_ABTB_CRC_MAGIC, 0, 1, | ||
357 | agno, 0); | ||
358 | else | ||
359 | xfs_btree_init_block(mp, bp, XFS_ABTB_MAGIC, 0, 1, | ||
360 | agno, 0); | ||
361 | 356 | ||
362 | arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); | 357 | arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); |
363 | arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); | 358 | arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); |
@@ -381,12 +376,7 @@ xfs_growfs_data_private( | |||
381 | goto error0; | 376 | goto error0; |
382 | } | 377 | } |
383 | 378 | ||
384 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 379 | xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 1, agno, 0); |
385 | xfs_btree_init_block(mp, bp, XFS_ABTC_CRC_MAGIC, 0, 1, | ||
386 | agno, 0); | ||
387 | else | ||
388 | xfs_btree_init_block(mp, bp, XFS_ABTC_MAGIC, 0, 1, | ||
389 | agno, 0); | ||
390 | 380 | ||
391 | arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); | 381 | arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); |
392 | arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); | 382 | arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); |
@@ -413,7 +403,7 @@ xfs_growfs_data_private( | |||
413 | goto error0; | 403 | goto error0; |
414 | } | 404 | } |
415 | 405 | ||
416 | xfs_btree_init_block(mp, bp, XFS_RMAP_CRC_MAGIC, 0, 0, | 406 | xfs_btree_init_block(mp, bp, XFS_BTNUM_RMAP, 0, 0, |
417 | agno, 0); | 407 | agno, 0); |
418 | block = XFS_BUF_TO_BLOCK(bp); | 408 | block = XFS_BUF_TO_BLOCK(bp); |
419 | 409 | ||
@@ -488,12 +478,7 @@ xfs_growfs_data_private( | |||
488 | goto error0; | 478 | goto error0; |
489 | } | 479 | } |
490 | 480 | ||
491 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 481 | xfs_btree_init_block(mp, bp, XFS_BTNUM_INO , 0, 0, agno, 0); |
492 | xfs_btree_init_block(mp, bp, XFS_IBT_CRC_MAGIC, 0, 0, | ||
493 | agno, 0); | ||
494 | else | ||
495 | xfs_btree_init_block(mp, bp, XFS_IBT_MAGIC, 0, 0, | ||
496 | agno, 0); | ||
497 | 482 | ||
498 | error = xfs_bwrite(bp); | 483 | error = xfs_bwrite(bp); |
499 | xfs_buf_relse(bp); | 484 | xfs_buf_relse(bp); |
@@ -513,12 +498,8 @@ xfs_growfs_data_private( | |||
513 | goto error0; | 498 | goto error0; |
514 | } | 499 | } |
515 | 500 | ||
516 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 501 | xfs_btree_init_block(mp, bp, XFS_BTNUM_FINO, |
517 | xfs_btree_init_block(mp, bp, XFS_FIBT_CRC_MAGIC, | ||
518 | 0, 0, agno, 0); | 502 | 0, 0, agno, 0); |
519 | else | ||
520 | xfs_btree_init_block(mp, bp, XFS_FIBT_MAGIC, 0, | ||
521 | 0, agno, 0); | ||
522 | 503 | ||
523 | error = xfs_bwrite(bp); | 504 | error = xfs_bwrite(bp); |
524 | xfs_buf_relse(bp); | 505 | xfs_buf_relse(bp); |
@@ -539,7 +520,7 @@ xfs_growfs_data_private( | |||
539 | goto error0; | 520 | goto error0; |
540 | } | 521 | } |
541 | 522 | ||
542 | xfs_btree_init_block(mp, bp, XFS_REFC_CRC_MAGIC, | 523 | xfs_btree_init_block(mp, bp, XFS_BTNUM_REFC, |
543 | 0, 0, agno, 0); | 524 | 0, 0, agno, 0); |
544 | 525 | ||
545 | error = xfs_bwrite(bp); | 526 | error = xfs_bwrite(bp); |