xfs: standardize quota verification function outputs
Rename xfs_dqcheck to xfs_dquot_verify and make it return an xfs_failaddr_t like every other structure verifier function. This enables us to check on-disk quotas in the same way that we check everything else. Callers are now responsible for logging errors, as XFS_QMOPT_DOWARN goes away. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
@@ -2652,7 +2652,7 @@ xlog_recover_do_reg_buffer(
|
||||
int i;
|
||||
int bit;
|
||||
int nbits;
|
||||
int error;
|
||||
xfs_failaddr_t fa;
|
||||
|
||||
trace_xfs_log_recover_buf_reg_buf(mp->m_log, buf_f);
|
||||
|
||||
@@ -2687,7 +2687,7 @@ xlog_recover_do_reg_buffer(
|
||||
* the first dquot in the buffer should do. XXXThis is
|
||||
* probably a good thing to do for other buf types also.
|
||||
*/
|
||||
error = 0;
|
||||
fa = NULL;
|
||||
if (buf_f->blf_flags &
|
||||
(XFS_BLF_UDQUOT_BUF|XFS_BLF_PDQUOT_BUF|XFS_BLF_GDQUOT_BUF)) {
|
||||
if (item->ri_buf[i].i_addr == NULL) {
|
||||
@@ -2701,11 +2701,14 @@ xlog_recover_do_reg_buffer(
|
||||
item->ri_buf[i].i_len, __func__);
|
||||
goto next;
|
||||
}
|
||||
error = xfs_dqcheck(mp, item->ri_buf[i].i_addr,
|
||||
-1, 0, XFS_QMOPT_DOWARN,
|
||||
"dquot_buf_recover");
|
||||
if (error)
|
||||
fa = xfs_dquot_verify(mp, item->ri_buf[i].i_addr,
|
||||
-1, 0, 0);
|
||||
if (fa) {
|
||||
xfs_alert(mp,
|
||||
"dquot corrupt at %pS trying to replay into block 0x%llx",
|
||||
fa, bp->b_bn);
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(xfs_buf_offset(bp,
|
||||
@@ -3307,6 +3310,7 @@ xlog_recover_dquot_pass2(
|
||||
xfs_mount_t *mp = log->l_mp;
|
||||
xfs_buf_t *bp;
|
||||
struct xfs_disk_dquot *ddq, *recddq;
|
||||
xfs_failaddr_t fa;
|
||||
int error;
|
||||
xfs_dq_logformat_t *dq_f;
|
||||
uint type;
|
||||
@@ -3349,10 +3353,12 @@ xlog_recover_dquot_pass2(
|
||||
*/
|
||||
dq_f = item->ri_buf[0].i_addr;
|
||||
ASSERT(dq_f);
|
||||
error = xfs_dqcheck(mp, recddq, dq_f->qlf_id, 0, XFS_QMOPT_DOWARN,
|
||||
"xlog_recover_dquot_pass2 (log copy)");
|
||||
if (error)
|
||||
fa = xfs_dquot_verify(mp, recddq, dq_f->qlf_id, 0, 0);
|
||||
if (fa) {
|
||||
xfs_alert(mp, "corrupt dquot ID 0x%x in log at %pS",
|
||||
dq_f->qlf_id, fa);
|
||||
return -EIO;
|
||||
}
|
||||
ASSERT(dq_f->qlf_len == 1);
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user