From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: linux-xfs <linux-xfs@vger.kernel.org>
Subject: Re: [PATCH 4/6] xfs: quieter quota initialization with bad dquots
Date: Tue, 1 May 2018 09:23:21 -0700 [thread overview]
Message-ID: <20180501162321.GG4127@magnolia> (raw)
In-Reply-To: <2ce33875-44dc-539c-50a9-c8808bd4b185@redhat.com>
On Wed, Apr 04, 2018 at 02:06:17PM -0500, Eric Sandeen wrote:
> As of now, when we start quotacheck we read quotas with verifiers,
> then reread without them, if we saw corruption. This is so the
> corruption is noted in the logs; this is all well and good, except that
> the verifier errors instruct the user to run xfs_repair, which won't
> actually do anything for corrupt dqblks.
>
> We can quiet this down by doing the initial read without verifiers,
> knowing that we're going to validate the dqblks manually in later
> stages, and repair them if needed.
>
> This adds new (more terse) messages stating whether a corrupted
> dquot was found and fixed.
>
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Looks ok,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
--D
> ---
>
> I'm a bit on the fence about this one; we lose the hexdump too so we won't
> see what was wrong (I could add that back in, I suppose).
>
> fs/xfs/libxfs/xfs_dquot_buf.c | 4 ++++
> fs/xfs/xfs_qm.c | 30 +++++++++++++-----------------
> 2 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/fs/xfs/libxfs/xfs_dquot_buf.c b/fs/xfs/libxfs/xfs_dquot_buf.c
> index 9f8b2c5..c13d440 100644
> --- a/fs/xfs/libxfs/xfs_dquot_buf.c
> +++ b/fs/xfs/libxfs/xfs_dquot_buf.c
> @@ -136,6 +136,10 @@
> XFS_DQUOT_CRC_OFF);
> }
>
> + xfs_alert(mp, "Repaired %s quota block for id %d.",
> + type == XFS_DQ_USER ? "user" :
> + (type == XFS_DQ_GROUP ? "group" : "project"), id);
> +
> return 0;
> }
>
> diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
> index b422382..328d770 100644
> --- a/fs/xfs/xfs_qm.c
> +++ b/fs/xfs/xfs_qm.c
> @@ -868,8 +868,12 @@ struct xfs_qm_isolate {
> * xfs_dquot_verify.
> */
> fa = xfs_dquot_verify(mp, &dqb[j], id + j, type);
> - if (fa)
> + if (fa) {
> + xfs_alert(mp,
> +"Metadata corruption error detected at %pS, xfs_dquot block 0x%llx.",
> + __this_address, bp->b_bn);
> xfs_dquot_repair(mp, &dqb[j], id + j, type);
> + }
>
> /*
> * Reset type in case we are reusing group quota file for
> @@ -922,24 +926,16 @@ struct xfs_qm_isolate {
> * everything if we were to crash in the middle of this loop.
> */
> while (blkcnt--) {
> - error = xfs_trans_read_buf(mp, NULL, mp->m_ddev_targp,
> - XFS_FSB_TO_DADDR(mp, bno),
> - mp->m_quotainfo->qi_dqchunklen, 0, &bp,
> - &xfs_dquot_buf_ops);
> -
> /*
> - * CRC and validation errors will return a EFSCORRUPTED here. If
> - * this occurs, re-read without CRC validation so that we can
> - * repair the damage via xfs_qm_reset_dqcounts(). This process
> - * will leave a trace in the log indicating corruption has
> - * been detected.
> + * CRC and validation errors are possible here. Because
> + * this may occur, we read without CRC validation so that we can
> + * repair the damage via xfs_qm_reset_dqcounts().
> + * Errors will be detected, declared, and repaired later in the
> + * quotacheck process.
> */
> - if (error == -EFSCORRUPTED) {
> - error = xfs_trans_read_buf(mp, NULL, mp->m_ddev_targp,
> - XFS_FSB_TO_DADDR(mp, bno),
> - mp->m_quotainfo->qi_dqchunklen, 0, &bp,
> - NULL);
> - }
> + error = xfs_trans_read_buf(mp, NULL, mp->m_ddev_targp,
> + XFS_FSB_TO_DADDR(mp, bno),
> + mp->m_quotainfo->qi_dqchunklen, 0, &bp, NULL);
>
> if (error)
> break;
> --
> 1.8.3.1
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-05-01 16:23 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-04 18:47 [PATCH 0/6] xfs: quota fixes and enhancements Eric Sandeen
2018-04-04 18:49 ` [PATCH 1/6] xfs: remove unused flags arg from xfs_dquot_verify Eric Sandeen
2018-04-05 7:11 ` Christoph Hellwig
2018-05-01 16:13 ` Darrick J. Wong
2018-04-04 18:54 ` [PATCH 2/6] xfs: pass xfs_dqblk to xfs_dquot_verify/xfs_dquot_repair Eric Sandeen
2018-04-05 3:52 ` Darrick J. Wong
2018-04-05 4:13 ` Eric Sandeen
2018-04-05 22:40 ` Dave Chinner
2018-04-06 2:50 ` Eric Sandeen
2018-04-06 3:30 ` Dave Chinner
2018-04-11 3:28 ` Darrick J. Wong
2018-04-05 7:14 ` Christoph Hellwig
2018-05-01 16:25 ` Darrick J. Wong
2018-05-01 18:58 ` [PATCH 2/6 V2] " Eric Sandeen
2018-04-04 19:00 ` [PATCH 3/6] xfs: validate UUID and type in xfs_dquot_verify Eric Sandeen
2018-04-05 7:14 ` Christoph Hellwig
2018-05-01 16:13 ` Darrick J. Wong
2018-05-02 16:20 ` Darrick J. Wong
2018-04-04 19:06 ` [PATCH 4/6] xfs: quieter quota initialization with bad dquots Eric Sandeen
2018-04-05 7:14 ` Christoph Hellwig
2018-05-01 16:23 ` Darrick J. Wong [this message]
2018-04-04 19:10 ` [PATCH 5/6] xfs: factor out quota time limit initialization Eric Sandeen
2018-04-05 7:15 ` Christoph Hellwig
2018-04-05 12:36 ` Eric Sandeen
2018-04-05 22:49 ` Dave Chinner
2018-05-01 16:23 ` Darrick J. Wong
2018-05-01 19:00 ` [PATCH 5/6 V2] " Eric Sandeen
2018-04-04 19:12 ` [PATCH 6/6] xfs: delay quota timelimit init until after quotacheck Eric Sandeen
2018-04-05 7:16 ` Christoph Hellwig
2018-05-01 16:24 ` Darrick J. Wong
2018-04-07 22:00 ` [PATCH 0/6] xfs: quota fixes and enhancements Eric Sandeen
2018-04-08 1:37 ` Darrick J. Wong
2018-04-08 1:48 ` Eric Sandeen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180501162321.GG4127@magnolia \
--to=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).