Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51582170 authored by Eric Sandeen's avatar Eric Sandeen Committed by Dave Chinner
Browse files

xfs: add helper for verifying checksums on xfs_bufs



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: default avatarEric Sandeen <sandeen@redhat.com>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 533b81c8
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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);

+1 −2
Original line number Diff line number Diff line
@@ -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);
+4 −4
Original line number Diff line number Diff line
@@ -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;
}

+7 −0
Original line number Diff line number Diff line
@@ -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.
 */
+1 −2
Original line number Diff line number Diff line
@@ -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:
Loading