|
@@ -474,7 +474,6 @@ xfs_agfl_read_verify(
|
|
struct xfs_buf *bp)
|
|
struct xfs_buf *bp)
|
|
{
|
|
{
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
- int agfl_ok = 1;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
* There is no verification of non-crc AGFLs because mkfs does not
|
|
* There is no verification of non-crc AGFLs because mkfs does not
|
|
@@ -485,14 +484,13 @@ xfs_agfl_read_verify(
|
|
if (!xfs_sb_version_hascrc(&mp->m_sb))
|
|
if (!xfs_sb_version_hascrc(&mp->m_sb))
|
|
return;
|
|
return;
|
|
|
|
|
|
- agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF);
|
|
|
|
-
|
|
|
|
- agfl_ok = agfl_ok && xfs_agfl_verify(bp);
|
|
|
|
-
|
|
|
|
- if (!agfl_ok) {
|
|
|
|
- XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
|
|
|
|
|
|
+ if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF))
|
|
|
|
+ xfs_buf_ioerror(bp, EFSBADCRC);
|
|
|
|
+ else if (!xfs_agfl_verify(bp))
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ if (bp->b_error)
|
|
|
|
+ xfs_verifier_error(bp);
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -507,8 +505,8 @@ xfs_agfl_write_verify(
|
|
return;
|
|
return;
|
|
|
|
|
|
if (!xfs_agfl_verify(bp)) {
|
|
if (!xfs_agfl_verify(bp)) {
|
|
- XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
|
|
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
|
|
+ xfs_verifier_error(bp);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2236,18 +2234,17 @@ xfs_agf_read_verify(
|
|
struct xfs_buf *bp)
|
|
struct xfs_buf *bp)
|
|
{
|
|
{
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
- int agf_ok = 1;
|
|
|
|
-
|
|
|
|
- if (xfs_sb_version_hascrc(&mp->m_sb))
|
|
|
|
- agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF);
|
|
|
|
|
|
|
|
- agf_ok = agf_ok && xfs_agf_verify(mp, bp);
|
|
|
|
-
|
|
|
|
- if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF,
|
|
|
|
- XFS_RANDOM_ALLOC_READ_AGF))) {
|
|
|
|
- XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
|
|
|
|
|
|
+ if (xfs_sb_version_hascrc(&mp->m_sb) &&
|
|
|
|
+ !xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF))
|
|
|
|
+ xfs_buf_ioerror(bp, EFSBADCRC);
|
|
|
|
+ else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp,
|
|
|
|
+ XFS_ERRTAG_ALLOC_READ_AGF,
|
|
|
|
+ XFS_RANDOM_ALLOC_READ_AGF))
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ if (bp->b_error)
|
|
|
|
+ xfs_verifier_error(bp);
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -2258,8 +2255,8 @@ xfs_agf_write_verify(
|
|
struct xfs_buf_log_item *bip = bp->b_fspriv;
|
|
struct xfs_buf_log_item *bip = bp->b_fspriv;
|
|
|
|
|
|
if (!xfs_agf_verify(mp, bp)) {
|
|
if (!xfs_agf_verify(mp, bp)) {
|
|
- XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr);
|
|
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
xfs_buf_ioerror(bp, EFSCORRUPTED);
|
|
|
|
+ xfs_verifier_error(bp);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|