From: Eric Sandeen <sandeen@sandeen.net>
To: cbay@excellency.fr, xfs@oss.sgi.com
Subject: [PATCH] xfs: avoid false quotacheck after unclean shutdown
Date: Tue, 22 Jul 2014 12:10:14 -0500 [thread overview]
Message-ID: <53CE9AF6.3090401@sandeen.net> (raw)
In-Reply-To: <53CE6415.8080607@excellency.fr>
The commit
83e782e xfs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD
added a new function xfs_sb_quota_from_disk() which swaps
on-disk XFS_OQUOTA_* flags for in-core XFS_GQUOTA_* and XFS_PQUOTA_*
flags after the superblock is read.
However, if log recovery is required, the superblock is read again,
and the modified in-core flags are re-read from disk, so we have
XFS_OQUOTA_* flags in memory again. This causes the
XFS_QM_NEED_QUOTACHECK() test to be true, because the XFS_OQUOTA_CHKD
is still set, and not XFS_GQUOTA_CHKD or XFS_PQUOTA_CHKD.
The simple one-line fix is to call xfs_sb_quota_from_disk after
we re-read the superblock during log recovery.
Reported-by: Cyril B. <cbay@excellency.fr>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---
Quick-tested only; it seems to resolve Cyril's testcase, but I've
not done an xfstests run yet as this is somewhat of an RFC:
It feels like there may be a better/more systemic fix here, though.
We can't call xfs_sb_quota_from_disk it from xfs_sb_from_disk(),
because the sb read verifier wants to know what was really on disk,
not what was fixed up after the fact.
We could add an "xlate_quota" arg to xfs_sb_from_disk(), but
that feels a little odd; the function today quite clearly only
does endian conversions, not other more detailed translations.
But if something like that is preferred, I can send a patch V2.
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index bce53ac..0a29de7 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -4429,6 +4429,7 @@ xlog_do_recover(
/* Convert superblock from on-disk format */
sbp = &log->l_mp->m_sb;
xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp));
+ xfs_sb_quota_from_disk(sbp);
ASSERT(sbp->sb_magicnum == XFS_SB_MAGIC);
ASSERT(xfs_sb_good_version(sbp));
xfs_buf_relse(bp);
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2014-07-22 17:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-22 13:16 Forced quotacheck after unclean unmount since 3.11, bisected Cyril B.
2014-07-22 16:48 ` Eric Sandeen
2014-07-22 17:10 ` Eric Sandeen [this message]
2014-07-23 13:20 ` [PATCH] xfs: avoid false quotacheck after unclean shutdown Brian Foster
2014-07-24 23:29 ` [PATCH V2] " Eric Sandeen
2014-07-28 15:02 ` Brian Foster
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=53CE9AF6.3090401@sandeen.net \
--to=sandeen@sandeen.net \
--cc=cbay@excellency.fr \
--cc=xfs@oss.sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.