]> git.karo-electronics.de Git - linux-beck.git/commitdiff
xfs: add helper for verifying checksums on xfs_bufs
authorEric Sandeen <sandeen@redhat.com>
Thu, 27 Feb 2014 04:17:27 +0000 (15:17 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 27 Feb 2014 04:17:27 +0000 (15:17 +1100)
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: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
13 files changed:
fs/xfs/xfs_alloc.c
fs/xfs/xfs_attr_leaf.c
fs/xfs/xfs_btree.c
fs/xfs/xfs_buf.h
fs/xfs/xfs_da_btree.c
fs/xfs/xfs_dir2_block.c
fs/xfs/xfs_dir2_data.c
fs/xfs/xfs_dir2_leaf.c
fs/xfs/xfs_dir2_node.c
fs/xfs/xfs_ialloc.c
fs/xfs/xfs_linux.h
fs/xfs/xfs_sb.c
fs/xfs/xfs_symlink_remote.c

index 72ea85512eb6d9534cf14f104503020c94ba743f..5050c9a2fbb0604a729e86c9ca62e48c6af21960 100644 (file)
@@ -485,8 +485,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);
 
@@ -2240,8 +2239,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 7b126f46a2f99689cf0bee0efba6c026c0e23186..a19a0234c82afd4fc51ce0567d9b38ddecbddeb4 100644 (file)
@@ -240,8 +240,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 9adaae4f3e2fd21c647c9e7fa023a120e5012272..4e8524d7741b3dad39e34c47974fc24b9ff8c3a5 100644 (file)
@@ -243,8 +243,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;
 }
 
@@ -276,8 +276,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 995339534db6a4b65c6ec332055734f7415ca621..5edcfbaddb2666064e53548eaa9cd719ba7cf2bb 100644 (file)
@@ -369,6 +369,13 @@ static inline void xfs_buf_relse(xfs_buf_t *bp)
        xfs_buf_rele(bp);
 }
 
+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);
+}
+
 /*
  *     Handling of buftargs.
  */
index 796272a2e1298fca3a5cc08ef4c6b226d6eec15c..6cece557c3c4f514dcc779f44148e42abcd827ae 100644 (file)
@@ -214,8 +214,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 90cdbf4b5f1902f983f504b6b704cd2a433ddfbb..948dc391d42ec1700e014744444e95a6c10d4a0d 100644 (file)
@@ -90,8 +90,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 70acff4ee1739860a4ed8a311aa8ff2f2b33aafe..1952f00286ea702a04e91d137c5891f27ebda271 100644 (file)
@@ -268,8 +268,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 ae47ec6e16c4031e50ba9ef63884ce216757d41e..1a412eb0e4deb793ba889cf2e711c669e856f325 100644 (file)
@@ -180,8 +180,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 48c7d18f68c3fb23a89a31a955fc9250fbd63108..875e7c03c97808360a17dd3100bb47cd5ec5286e 100644 (file)
@@ -116,8 +116,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 d79210b15bc07a58bcebad99af240220cfa19a98..d6a879d879ca3c5c1546915721752a6ea9e01394 100644 (file)
@@ -1571,8 +1571,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 f9bb590acc0ebfd38a4aaaee3baaa5b0bf6ec505..e8fed74dd669085419a6119fae0055a23ca0ea84 100644 (file)
@@ -119,6 +119,7 @@ typedef __uint64_t __psunsigned_t;
 #include "xfs_iops.h"
 #include "xfs_aops.h"
 #include "xfs_super.h"
+#include "xfs_cksum.h"
 #include "xfs_buf.h"
 #include "xfs_message.h"
 
index 1ea7c865b208bdb35eeb60bd6074412af4d3f9a1..36f287fa9e26fe3af6e28aa0e650a605243aaede 100644 (file)
@@ -610,8 +610,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 7a705a451ebcd57ce3b7be8624c6ad0f8e69d7fa..b17295515b1824d1372f7b35c4a2d6cfff654fdc 100644 (file)
@@ -133,8 +133,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);