mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 15:15:47 +00:00
xfs: convert EIO to EFSCORRUPTED when log contents are invalid
commit 895e196fb6
upstream.
Convert EIO to EFSCORRUPTED in the logging code when we can determine
that the log contents are invalid.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9185003c93
commit
8856a6572f
5 changed files with 21 additions and 21 deletions
|
@ -456,7 +456,7 @@ xfs_bui_recover(
|
|||
if (buip->bui_format.bui_nextents != XFS_BUI_MAX_FAST_EXTENTS) {
|
||||
set_bit(XFS_BUI_RECOVERED, &buip->bui_flags);
|
||||
xfs_bui_release(buip);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -490,7 +490,7 @@ xfs_bui_recover(
|
|||
*/
|
||||
set_bit(XFS_BUI_RECOVERED, &buip->bui_flags);
|
||||
xfs_bui_release(buip);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate,
|
||||
|
|
|
@ -624,7 +624,7 @@ xfs_efi_recover(
|
|||
*/
|
||||
set_bit(XFS_EFI_RECOVERED, &efip->efi_flags);
|
||||
xfs_efi_release(efip);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -471,7 +471,7 @@ xlog_find_verify_log_record(
|
|||
xfs_warn(log->l_mp,
|
||||
"Log inconsistent (didn't find previous header)");
|
||||
ASSERT(0);
|
||||
error = -EIO;
|
||||
error = -EFSCORRUPTED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -1350,7 +1350,7 @@ xlog_find_tail(
|
|||
return error;
|
||||
if (!error) {
|
||||
xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
*tail_blk = BLOCK_LSN(be64_to_cpu(rhead->h_tail_lsn));
|
||||
|
||||
|
@ -3166,7 +3166,7 @@ xlog_recover_inode_pass2(
|
|||
default:
|
||||
xfs_warn(log->l_mp, "%s: Invalid flag", __func__);
|
||||
ASSERT(0);
|
||||
error = -EIO;
|
||||
error = -EFSCORRUPTED;
|
||||
goto out_release;
|
||||
}
|
||||
}
|
||||
|
@ -3247,12 +3247,12 @@ xlog_recover_dquot_pass2(
|
|||
recddq = item->ri_buf[1].i_addr;
|
||||
if (recddq == NULL) {
|
||||
xfs_alert(log->l_mp, "NULL dquot in %s.", __func__);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
if (item->ri_buf[1].i_len < sizeof(xfs_disk_dquot_t)) {
|
||||
xfs_alert(log->l_mp, "dquot too small (%d) in %s.",
|
||||
item->ri_buf[1].i_len, __func__);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3279,7 +3279,7 @@ xlog_recover_dquot_pass2(
|
|||
if (fa) {
|
||||
xfs_alert(mp, "corrupt dquot ID 0x%x in log at %pS",
|
||||
dq_f->qlf_id, fa);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
ASSERT(dq_f->qlf_len == 1);
|
||||
|
||||
|
@ -4018,7 +4018,7 @@ xlog_recover_commit_pass1(
|
|||
xfs_warn(log->l_mp, "%s: invalid item type (%d)",
|
||||
__func__, ITEM_TYPE(item));
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4066,7 +4066,7 @@ xlog_recover_commit_pass2(
|
|||
xfs_warn(log->l_mp, "%s: invalid item type (%d)",
|
||||
__func__, ITEM_TYPE(item));
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4187,7 +4187,7 @@ xlog_recover_add_to_cont_trans(
|
|||
ASSERT(len <= sizeof(struct xfs_trans_header));
|
||||
if (len > sizeof(struct xfs_trans_header)) {
|
||||
xfs_warn(log->l_mp, "%s: bad header length", __func__);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
xlog_recover_add_item(&trans->r_itemq);
|
||||
|
@ -4243,13 +4243,13 @@ xlog_recover_add_to_trans(
|
|||
xfs_warn(log->l_mp, "%s: bad header magic number",
|
||||
__func__);
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
if (len > sizeof(struct xfs_trans_header)) {
|
||||
xfs_warn(log->l_mp, "%s: bad header length", __func__);
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -4285,7 +4285,7 @@ xlog_recover_add_to_trans(
|
|||
in_f->ilf_size);
|
||||
ASSERT(0);
|
||||
kmem_free(ptr);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
item->ri_total = in_f->ilf_size;
|
||||
|
@ -4389,7 +4389,7 @@ xlog_recovery_process_trans(
|
|||
default:
|
||||
xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags);
|
||||
ASSERT(0);
|
||||
error = -EIO;
|
||||
error = -EFSCORRUPTED;
|
||||
break;
|
||||
}
|
||||
if (error || freeit)
|
||||
|
@ -4469,7 +4469,7 @@ xlog_recover_process_ophdr(
|
|||
xfs_warn(log->l_mp, "%s: bad clientid 0x%x",
|
||||
__func__, ohead->oh_clientid);
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -4479,7 +4479,7 @@ xlog_recover_process_ophdr(
|
|||
if (dp + len > end) {
|
||||
xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len);
|
||||
WARN_ON(1);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
trans = xlog_recover_ophdr_to_trans(rhash, rhead, ohead);
|
||||
|
@ -5209,7 +5209,7 @@ xlog_valid_rec_header(
|
|||
(be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS))))) {
|
||||
xfs_warn(log->l_mp, "%s: unrecognised log version (%d).",
|
||||
__func__, be32_to_cpu(rhead->h_version));
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/* LR body must have data or it wouldn't have been written */
|
||||
|
|
|
@ -497,7 +497,7 @@ xfs_cui_recover(
|
|||
*/
|
||||
set_bit(XFS_CUI_RECOVERED, &cuip->cui_flags);
|
||||
xfs_cui_release(cuip);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -539,7 +539,7 @@ xfs_rui_recover(
|
|||
*/
|
||||
set_bit(XFS_RUI_RECOVERED, &ruip->rui_flags);
|
||||
xfs_rui_release(ruip);
|
||||
return -EIO;
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue