]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
libxfs: add helper for verifying checksums on xfs_bufs
authorDave Chinner <dchinner@redhat.com>
Thu, 6 Mar 2014 23:25:33 +0000 (10:25 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 6 Mar 2014 23:25:33 +0000 (10:25 +1100)
[userspace port]

Many/most callers of xfs_verify_cksum() pass bp->b_addr and
BBTOB(bp->b_length) as the first 2 args.  Add a helper
which can just accept the bp and the crc offset, and work
it out on its own, for brevity.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
12 files changed:
include/libxfs.h
libxfs/xfs_alloc.c
libxfs/xfs_attr_leaf.c
libxfs/xfs_btree.c
libxfs/xfs_da_btree.c
libxfs/xfs_dir2_block.c
libxfs/xfs_dir2_data.c
libxfs/xfs_dir2_leaf.c
libxfs/xfs_dir2_node.c
libxfs/xfs_ialloc.c
libxfs/xfs_sb.c
libxfs/xfs_symlink_remote.c

index f68859892cbe15a1dbb7f1a17c0fd44d88b71e8b..610e7d5554e5700717d3be2d0c919f7885b65637 100644 (file)
@@ -779,6 +779,13 @@ extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
 
 #include <xfs/xfs_cksum.h>
 
+static inline int
+xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
+{
+       return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
+                               cksum_offset);
+}
+
 #define xfs_notice(mp,fmt,args...)             cmn_err(CE_NOTE,fmt, ## args)
 #define xfs_warn(mp,fmt,args...)               cmn_err(CE_WARN,fmt, ## args)
 #define xfs_alert(mp,fmt,args...)              cmn_err(CE_ALERT,fmt, ## args)
index 8a6725e8809cd10628c20a2d1dc3fb4a22b9f7c3..2f6a2417c3958bd7006447a629a6073217312d4b 100644 (file)
@@ -463,8 +463,7 @@ xfs_agfl_read_verify(
        if (!xfs_sb_version_hascrc(&mp->m_sb))
                return;
 
-       agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                  XFS_AGFL_CRC_OFF);
+       agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF);
 
        agfl_ok = agfl_ok && xfs_agfl_verify(bp);
 
@@ -2220,8 +2219,7 @@ xfs_agf_read_verify(
        int             agf_ok = 1;
 
        if (xfs_sb_version_hascrc(&mp->m_sb))
-               agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_AGF_CRC_OFF);
+               agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF);
 
        agf_ok = agf_ok && xfs_agf_verify(mp, bp);
 
index fd52397bf4fd046cc3e03094e3678b10d8a54cef..0bd316903a000f1fd44a4a3d8ed5f250dfb67a9a 100644 (file)
@@ -214,8 +214,7 @@ xfs_attr3_leaf_read_verify(
        struct xfs_mount        *mp = bp->b_target->bt_mount;
 
        if ((xfs_sb_version_hascrc(&mp->m_sb) &&
-            !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_ATTR3_LEAF_CRC_OFF)) ||
+            !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) ||
            !xfs_attr3_leaf_verify(bp)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);
index 2dd6fb7646c4ffc3cb3c2fb536737e414bb458f8..fffed0a25864530a72416726f2ab454478ab86cc 100644 (file)
@@ -227,8 +227,8 @@ xfs_btree_lblock_verify_crc(
        struct xfs_buf          *bp)
 {
        if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb))
-               return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                       XFS_BTREE_LBLOCK_CRC_OFF);
+               return xfs_buf_verify_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF);
+
        return true;
 }
 
@@ -260,8 +260,8 @@ xfs_btree_sblock_verify_crc(
        struct xfs_buf          *bp)
 {
        if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb))
-               return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                       XFS_BTREE_SBLOCK_CRC_OFF);
+               return xfs_buf_verify_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF);
+
        return true;
 }
 
index 53414f556803a1a4c8f09aa7d8c01cf2f6052dbd..4e8b41a32ef5baf857c6611e6ca83febd1fca6b0 100644 (file)
@@ -238,8 +238,7 @@ xfs_da3_node_read_verify(
 
        switch (be16_to_cpu(info->magic)) {
                case XFS_DA3_NODE_MAGIC:
-                       if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                             XFS_DA3_NODE_CRC_OFF))
+                       if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF))
                                break;
                        /* fall through */
                case XFS_DA_NODE_MAGIC:
index 1d8f598e9ca64891bd5e4599c31c53237789f527..13561c32dfe635ef72c5971150b008349b076522 100644 (file)
@@ -71,8 +71,7 @@ xfs_dir3_block_read_verify(
        struct xfs_mount        *mp = bp->b_target->bt_mount;
 
        if ((xfs_sb_version_hascrc(&mp->m_sb) &&
-            !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_DIR3_DATA_CRC_OFF)) ||
+            !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) ||
            !xfs_dir3_block_verify(bp)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);
index 189699ff4003a25b89e078da277f994dde399415..2a0de280e3982fe2a17fdbd8acef737f195e9b05 100644 (file)
@@ -235,8 +235,7 @@ xfs_dir3_data_read_verify(
        struct xfs_mount        *mp = bp->b_target->bt_mount;
 
        if ((xfs_sb_version_hascrc(&mp->m_sb) &&
-            !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_DIR3_DATA_CRC_OFF)) ||
+            !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) ||
            !xfs_dir3_data_verify(bp)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);
index 683536e7a5fc88fe54d00af9f3c0764ea12c7963..0fa147f6e7fd1c2d701c24c4dd94b31633ee044a 100644 (file)
@@ -207,8 +207,7 @@ __read_verify(
        struct xfs_mount        *mp = bp->b_target->bt_mount;
 
        if ((xfs_sb_version_hascrc(&mp->m_sb) &&
-            !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_DIR3_LEAF_CRC_OFF)) ||
+            !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) ||
            !xfs_dir3_leaf_verify(bp, magic)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);
index ced8c5884492acfe773ff18dd030ce45647e65ec..78c77ede646ad392b84188e92009de00507ab58e 100644 (file)
@@ -99,8 +99,7 @@ xfs_dir3_free_read_verify(
        struct xfs_mount        *mp = bp->b_target->bt_mount;
 
        if ((xfs_sb_version_hascrc(&mp->m_sb) &&
-            !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_DIR3_FREE_CRC_OFF)) ||
+            !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) ||
            !xfs_dir3_free_verify(bp)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);
index b83ad98a6370ead6b1eb99d57e314c70945fc626..21683b5fb77bde9b05b1d1bb3dd8617598d80b0b 100644 (file)
@@ -1554,8 +1554,8 @@ xfs_agi_read_verify(
        int             agi_ok = 1;
 
        if (xfs_sb_version_hascrc(&mp->m_sb))
-               agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                         XFS_AGI_CRC_OFF);
+               agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF);
+
        agi_ok = agi_ok && xfs_agi_verify(bp);
 
        if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI,
index bbcf886cdf35451ca40839a1151210dbfe705aef..43fdb5983b23dc9cb73b5ee8215b57793dce7c4b 100644 (file)
@@ -565,8 +565,7 @@ xfs_sb_read_verify(
                                                XFS_SB_VERSION_5) ||
             dsb->sb_crc != 0)) {
 
-               if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                     XFS_SB_CRC_OFF)) {
+               if (!xfs_buf_verify_cksum(bp, XFS_SB_CRC_OFF)) {
                        /* Only fail bad secondaries on a known V5 filesystem */
                        if (bp->b_bn == XFS_SB_DADDR ||
                            xfs_sb_version_hascrc(&mp->m_sb)) {
index 09ee9d43ee387ab7851236842c591addcfc681d2..716f8a39f13789c9880bd7ff715f1ea655495887 100644 (file)
@@ -116,8 +116,7 @@ xfs_symlink_read_verify(
        if (!xfs_sb_version_hascrc(&mp->m_sb))
                return;
 
-       if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-                                 XFS_SYMLINK_CRC_OFF) ||
+       if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) ||
            !xfs_symlink_verify(bp)) {
                XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
                xfs_buf_ioerror(bp, EFSCORRUPTED);