Commit 5885539f authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: preserve default grace interval during quotacheck

When quotacheck runs, it zeroes all the timer fields in every dquot.
Unfortunately, it also does this to the root dquot, which erases any
preconfigured grace intervals and warning limits that the administrator
may have set.  Worse yet, the incore copies of those variables remain
set.  This cache coherence problem manifests itself as the grace
interval mysteriously being reset back to the defaults at the /next/
mount.

Fix it by not resetting the root disk dquot's timer and warning fields.
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 69363999
...@@ -871,12 +871,20 @@ xfs_qm_reset_dqcounts( ...@@ -871,12 +871,20 @@ xfs_qm_reset_dqcounts(
ddq->d_bcount = 0; ddq->d_bcount = 0;
ddq->d_icount = 0; ddq->d_icount = 0;
ddq->d_rtbcount = 0; ddq->d_rtbcount = 0;
ddq->d_btimer = 0;
ddq->d_itimer = 0; /*
ddq->d_rtbtimer = 0; * dquot id 0 stores the default grace period and the maximum
ddq->d_bwarns = 0; * warning limit that were set by the administrator, so we
ddq->d_iwarns = 0; * should not reset them.
ddq->d_rtbwarns = 0; */
if (ddq->d_id != 0) {
ddq->d_btimer = 0;
ddq->d_itimer = 0;
ddq->d_rtbtimer = 0;
ddq->d_bwarns = 0;
ddq->d_iwarns = 0;
ddq->d_rtbwarns = 0;
}
if (xfs_sb_version_hascrc(&mp->m_sb)) { if (xfs_sb_version_hascrc(&mp->m_sb)) {
xfs_update_cksum((char *)&dqb[j], xfs_update_cksum((char *)&dqb[j],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment