xfs: always log corruption errors
Make sure we log something to dmesg whenever we return -EFSCORRUPTED up the call stack. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@@ -3537,6 +3537,7 @@ xfs_cui_copy_format(
|
||||
memcpy(dst_cui_fmt, src_cui_fmt, len);
|
||||
return 0;
|
||||
}
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, NULL);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
@@ -3601,8 +3602,10 @@ xlog_recover_cud_pass2(
|
||||
struct xfs_ail *ailp = log->l_ailp;
|
||||
|
||||
cud_formatp = item->ri_buf[0].i_addr;
|
||||
if (item->ri_buf[0].i_len != sizeof(struct xfs_cud_log_format))
|
||||
if (item->ri_buf[0].i_len != sizeof(struct xfs_cud_log_format)) {
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
cui_id = cud_formatp->cud_cui_id;
|
||||
|
||||
/*
|
||||
@@ -3654,6 +3657,7 @@ xfs_bui_copy_format(
|
||||
memcpy(dst_bui_fmt, src_bui_fmt, len);
|
||||
return 0;
|
||||
}
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, NULL);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
@@ -3677,8 +3681,10 @@ xlog_recover_bui_pass2(
|
||||
|
||||
bui_formatp = item->ri_buf[0].i_addr;
|
||||
|
||||
if (bui_formatp->bui_nextents != XFS_BUI_MAX_FAST_EXTENTS)
|
||||
if (bui_formatp->bui_nextents != XFS_BUI_MAX_FAST_EXTENTS) {
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
buip = xfs_bui_init(mp);
|
||||
error = xfs_bui_copy_format(&item->ri_buf[0], &buip->bui_format);
|
||||
if (error) {
|
||||
@@ -3720,8 +3726,10 @@ xlog_recover_bud_pass2(
|
||||
struct xfs_ail *ailp = log->l_ailp;
|
||||
|
||||
bud_formatp = item->ri_buf[0].i_addr;
|
||||
if (item->ri_buf[0].i_len != sizeof(struct xfs_bud_log_format))
|
||||
if (item->ri_buf[0].i_len != sizeof(struct xfs_bud_log_format)) {
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
bui_id = bud_formatp->bud_bui_id;
|
||||
|
||||
/*
|
||||
@@ -5172,8 +5180,10 @@ xlog_recover_process(
|
||||
* If the filesystem is CRC enabled, this mismatch becomes a
|
||||
* fatal log corruption failure.
|
||||
*/
|
||||
if (xfs_sb_version_hascrc(&log->l_mp->m_sb))
|
||||
if (xfs_sb_version_hascrc(&log->l_mp->m_sb)) {
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
xlog_unpack_data(rhead, dp, log);
|
||||
@@ -5296,8 +5306,11 @@ xlog_do_recovery_pass(
|
||||
"invalid iclog size (%d bytes), using lsunit (%d bytes)",
|
||||
h_size, log->l_mp->m_logbsize);
|
||||
h_size = log->l_mp->m_logbsize;
|
||||
} else
|
||||
} else {
|
||||
XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW,
|
||||
log->l_mp);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
if ((be32_to_cpu(rhead->h_version) & XLOG_VERSION_2) &&
|
||||
|
Reference in New Issue
Block a user