aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@sandeen.net>2017-04-04 15:37:32 -0500
committerEric Sandeen <sandeen@redhat.com>2017-04-04 15:37:32 -0500
commitf4241a08c6843845db5b1ab710b1eca6a27ece5c (patch)
tree04e16b1b0337c44276ebcba9ccc86c899fb068ac
parent25babb5524cf4dd4624045129b127b95add08255 (diff)
downloadxfsprogs-dev-f4241a08c6843845db5b1ab710b1eca6a27ece5c.tar.gz
xfs: glean crc status from mp not flags in xfs_btree_init_block_int
Source kernel commit: f88ae46b09e93ef07ac9efaf85df62adb5ba58e6 xfs_btree_init_block_int() can determine whether crcs are in effect without the passed-in XFS_BTREE_CRC_BLOCKS flag; the mp argument allows us to determine this from the superblock. Remove the flag from callers, and use xfs_sb_version_hascrc(&mp->m_sb) internally instead. This removes one difference between the if & else cases in the callers. 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> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r--libxfs/xfs_bmap.c4
-rw-r--r--libxfs/xfs_bmap_btree.c2
-rw-r--r--libxfs/xfs_btree.c6
-rw-r--r--mkfs/xfs_mkfs.c12
-rw-r--r--repair/phase5.c31
5 files changed, 25 insertions, 30 deletions
diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c
index 0094548815..270fea92e1 100644
--- a/libxfs/xfs_bmap.c
+++ b/libxfs/xfs_bmap.c
@@ -734,7 +734,7 @@ xfs_bmap_extents_to_btree(
if (xfs_sb_version_hascrc(&mp->m_sb))
xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL,
XFS_BMAP_CRC_MAGIC, 1, 1, ip->i_ino,
- XFS_BTREE_LONG_PTRS | XFS_BTREE_CRC_BLOCKS);
+ XFS_BTREE_LONG_PTRS);
else
xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL,
XFS_BMAP_MAGIC, 1, 1, ip->i_ino,
@@ -811,7 +811,7 @@ try_another_ag:
if (xfs_sb_version_hascrc(&mp->m_sb))
xfs_btree_init_block_int(mp, ablock, abp->b_bn,
XFS_BMAP_CRC_MAGIC, 0, 0, ip->i_ino,
- XFS_BTREE_LONG_PTRS | XFS_BTREE_CRC_BLOCKS);
+ XFS_BTREE_LONG_PTRS);
else
xfs_btree_init_block_int(mp, ablock, abp->b_bn,
XFS_BMAP_MAGIC, 0, 0, ip->i_ino,
diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c
index 72fc1bd68f..b01d61dd42 100644
--- a/libxfs/xfs_bmap_btree.c
+++ b/libxfs/xfs_bmap_btree.c
@@ -71,7 +71,7 @@ xfs_bmdr_to_bmbt(
if (xfs_sb_version_hascrc(&mp->m_sb))
xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL,
XFS_BMAP_CRC_MAGIC, 0, 0, ip->i_ino,
- XFS_BTREE_LONG_PTRS | XFS_BTREE_CRC_BLOCKS);
+ XFS_BTREE_LONG_PTRS);
else
xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL,
XFS_BMAP_MAGIC, 0, 0, ip->i_ino,
diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c
index 258b4dd2d6..08d9dc933b 100644
--- a/libxfs/xfs_btree.c
+++ b/libxfs/xfs_btree.c
@@ -1086,6 +1086,8 @@ xfs_btree_init_block_int(
__u64 owner,
unsigned int flags)
{
+ int crc = xfs_sb_version_hascrc(&mp->m_sb);
+
buf->bb_magic = cpu_to_be32(magic);
buf->bb_level = cpu_to_be16(level);
buf->bb_numrecs = cpu_to_be16(numrecs);
@@ -1093,7 +1095,7 @@ xfs_btree_init_block_int(
if (flags & XFS_BTREE_LONG_PTRS) {
buf->bb_u.l.bb_leftsib = cpu_to_be64(NULLFSBLOCK);
buf->bb_u.l.bb_rightsib = cpu_to_be64(NULLFSBLOCK);
- if (flags & XFS_BTREE_CRC_BLOCKS) {
+ if (crc) {
buf->bb_u.l.bb_blkno = cpu_to_be64(blkno);
buf->bb_u.l.bb_owner = cpu_to_be64(owner);
uuid_copy(&buf->bb_u.l.bb_uuid, &mp->m_sb.sb_meta_uuid);
@@ -1106,7 +1108,7 @@ xfs_btree_init_block_int(
buf->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK);
buf->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK);
- if (flags & XFS_BTREE_CRC_BLOCKS) {
+ if (crc) {
buf->bb_u.s.bb_blkno = cpu_to_be64(blkno);
buf->bb_u.s.bb_owner = cpu_to_be32(__owner);
uuid_copy(&buf->bb_u.s.bb_uuid, &mp->m_sb.sb_meta_uuid);
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index affa4052d6..a7dd4479ba 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -3040,7 +3040,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
memset(block, 0, blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, buf, XFS_ABTB_CRC_MAGIC, 0, 1,
- agno, XFS_BTREE_CRC_BLOCKS);
+ agno, 0);
else
libxfs_btree_init_block(mp, buf, XFS_ABTB_MAGIC, 0, 1,
agno, 0);
@@ -3095,7 +3095,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
memset(block, 0, blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, buf, XFS_ABTC_CRC_MAGIC, 0, 1,
- agno, XFS_BTREE_CRC_BLOCKS);
+ agno, 0);
else
libxfs_btree_init_block(mp, buf, XFS_ABTC_MAGIC, 0, 1,
agno, 0);
@@ -3142,7 +3142,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
block = XFS_BUF_TO_BLOCK(buf);
memset(block, 0, blocksize);
libxfs_btree_init_block(mp, buf, XFS_REFC_CRC_MAGIC, 0,
- 0, agno, XFS_BTREE_CRC_BLOCKS);
+ 0, agno, 0);
libxfs_writebuf(buf, LIBXFS_EXIT_ON_FAILURE);
}
@@ -3158,7 +3158,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
memset(block, 0, blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, buf, XFS_IBT_CRC_MAGIC, 0, 0,
- agno, XFS_BTREE_CRC_BLOCKS);
+ agno, 0);
else
libxfs_btree_init_block(mp, buf, XFS_IBT_MAGIC, 0, 0,
agno, 0);
@@ -3176,7 +3176,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
memset(block, 0, blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, buf, XFS_FIBT_CRC_MAGIC, 0, 0,
- agno, XFS_BTREE_CRC_BLOCKS);
+ agno, 0);
else
libxfs_btree_init_block(mp, buf, XFS_FIBT_MAGIC, 0, 0,
agno, 0);
@@ -3195,7 +3195,7 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
memset(block, 0, blocksize);
libxfs_btree_init_block(mp, buf, XFS_RMAP_CRC_MAGIC, 0, 0,
- agno, XFS_BTREE_CRC_BLOCKS);
+ agno, 0);
/*
* mark the AG header regions as static metadata
diff --git a/repair/phase5.c b/repair/phase5.c
index ebe1f7d673..4c9e619d48 100644
--- a/repair/phase5.c
+++ b/repair/phase5.c
@@ -696,7 +696,7 @@ prop_freespace_cursor(xfs_mount_t *mp, xfs_agnumber_t agno,
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, crc_magic, level,
- 0, agno, XFS_BTREE_CRC_BLOCKS);
+ 0, agno, 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, magic, level,
0, agno, 0);
@@ -782,7 +782,7 @@ build_freespace_tree(xfs_mount_t *mp, xfs_agnumber_t agno,
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, crc_magic, i,
- 0, agno, XFS_BTREE_CRC_BLOCKS);
+ 0, agno, 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, magic, i,
0, agno, 0);
@@ -814,7 +814,7 @@ build_freespace_tree(xfs_mount_t *mp, xfs_agnumber_t agno,
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, crc_magic, 0,
- 0, agno, XFS_BTREE_CRC_BLOCKS);
+ 0, agno, 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, magic, 0,
0, agno, 0);
@@ -1077,7 +1077,7 @@ prop_ino_cursor(xfs_mount_t *mp, xfs_agnumber_t agno, bt_status_t *btree_curs,
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, XFS_IBT_CRC_MAGIC,
level, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, XFS_IBT_MAGIC,
level, 0, agno, 0);
@@ -1202,7 +1202,7 @@ build_ino_tree(xfs_mount_t *mp, xfs_agnumber_t agno,
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, magic,
i, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, magic,
i, 0, agno, 0);
@@ -1235,8 +1235,7 @@ build_ino_tree(xfs_mount_t *mp, xfs_agnumber_t agno,
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
if (xfs_sb_version_hascrc(&mp->m_sb))
libxfs_btree_init_block(mp, lptr->buf_p, magic,
- 0, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ 0, 0, agno, 0);
else
libxfs_btree_init_block(mp, lptr->buf_p, magic,
0, 0, agno, 0);
@@ -1493,8 +1492,7 @@ prop_rmap_cursor(
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_RMAP_CRC_MAGIC,
- level, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ level, 0, agno, 0);
bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno);
@@ -1606,8 +1604,7 @@ build_rmap_tree(
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_RMAP_CRC_MAGIC,
- i, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ i, 0, agno, 0);
}
/*
@@ -1634,8 +1631,7 @@ _("Insufficient memory to construct reverse-map cursor."));
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_RMAP_CRC_MAGIC,
- 0, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ 0, 0, agno, 0);
bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno);
bt_hdr->bb_numrecs = cpu_to_be16(numrecs);
@@ -1844,8 +1840,7 @@ prop_refc_cursor(
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_REFC_CRC_MAGIC,
- level, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ level, 0, agno, 0);
bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno);
@@ -1912,8 +1907,7 @@ build_refcount_tree(
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_REFC_CRC_MAGIC,
- i, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ i, 0, agno, 0);
}
/*
@@ -1940,8 +1934,7 @@ _("Insufficient memory to construct refcount cursor."));
bt_hdr = XFS_BUF_TO_BLOCK(lptr->buf_p);
memset(bt_hdr, 0, mp->m_sb.sb_blocksize);
libxfs_btree_init_block(mp, lptr->buf_p, XFS_REFC_CRC_MAGIC,
- 0, 0, agno,
- XFS_BTREE_CRC_BLOCKS);
+ 0, 0, agno, 0);
bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno);
bt_hdr->bb_numrecs = cpu_to_be16(numrecs);