From: Allison Henderson <allison.henderson@oracle.com>
To: Brian Foster <bfoster@redhat.com>, linux-xfs@vger.kernel.org
Subject: Re: [PATCH v2 5/9] xfs: don't reset log idle state on covering checkpoints
Date: Thu, 21 Jan 2021 20:48:36 -0700 [thread overview]
Message-ID: <daf97add-e7fc-c739-7999-5d98d6aaa736@oracle.com> (raw)
In-Reply-To: <20210121154526.1852176-6-bfoster@redhat.com>
On 1/21/21 8:45 AM, Brian Foster wrote:
> Now that log covering occurs on quiesce, we'd like to reuse the
> underlying superblock sync for final superblock updates. This
> includes things like lazy superblock counter updates, log feature
> incompat bits in the future, etc. One quirk to this approach is that
> once the log is in the IDLE (i.e. already covered) state, any
> subsequent log write resets the state back to NEED. This means that
> a final superblock sync to an already covered log requires two more
> sb syncs to return the log back to IDLE again.
>
> For example, if a lazy superblock enabled filesystem is mount cycled
> without any modifications, the unmount path syncs the superblock
> once and writes an unmount record. With the desired log quiesce
> covering behavior, we sync the superblock three times at unmount
> time: once for the lazy superblock counter update and twice more to
> cover the log. By contrast, if the log is active or only partially
> covered at unmount time, a final superblock sync would doubly serve
> as the one or two remaining syncs required to cover the log.
>
> This duplicate covering sequence is unnecessary because the
> filesystem remains consistent if a crash occurs at any point. The
> superblock will either be recovered in the event of a crash or
> written back before the log is quiesced and potentially cleaned with
> an unmount record.
>
> Update the log covering state machine to remain in the IDLE state if
> additional covering checkpoints pass through the log. This
> facilitates final superblock updates (such as lazy superblock
> counters) via a single sb sync without losing covered status. This
> provides some consistency with the active and partially covered
> cases and also avoids harmless, but spurious checkpoints when
> quiescing the log.
>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Ok, makes sense
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
> ---
> fs/xfs/xfs_log.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
> index 7c31b046e790..6db65a4513a6 100644
> --- a/fs/xfs/xfs_log.c
> +++ b/fs/xfs/xfs_log.c
> @@ -2597,12 +2597,15 @@ xlog_covered_state(
> int iclogs_changed)
> {
> /*
> - * We usually go to NEED. But we go to NEED2 if the changed indicates we
> - * are done writing the dummy record. If we are done with the second
> - * dummy recored (DONE2), then we go to IDLE.
> + * We go to NEED for any non-covering writes. We go to NEED2 if we just
> + * wrote the first covering record (DONE). We go to IDLE if we just
> + * wrote the second covering record (DONE2) and remain in IDLE until a
> + * non-covering write occurs.
> */
> switch (prev_state) {
> case XLOG_STATE_COVER_IDLE:
> + if (iclogs_changed == 1)
> + return XLOG_STATE_COVER_IDLE;
> case XLOG_STATE_COVER_NEED:
> case XLOG_STATE_COVER_NEED2:
> break;
>
next prev parent reply other threads:[~2021-01-22 3:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-21 15:45 [PATCH v2 0/9] xfs: rework log quiesce to cover the log Brian Foster
2021-01-21 15:45 ` [PATCH v2 1/9] xfs: sync lazy sb accounting on quiesce of read-only mounts Brian Foster
2021-01-21 15:45 ` [PATCH v2 2/9] xfs: lift writable fs check up into log worker task Brian Foster
2021-01-21 18:43 ` Darrick J. Wong
2021-01-21 15:45 ` [PATCH v2 3/9] xfs: separate log cleaning from log quiesce Brian Foster
2021-01-21 15:45 ` [PATCH v2 4/9] xfs: cover the log during " Brian Foster
2021-01-21 18:44 ` Darrick J. Wong
2021-01-22 3:16 ` Allison Henderson
2021-01-21 15:45 ` [PATCH v2 5/9] xfs: don't reset log idle state on covering checkpoints Brian Foster
2021-01-22 3:48 ` Allison Henderson [this message]
2021-01-21 15:45 ` [PATCH v2 6/9] xfs: fold sbcount quiesce logging into log covering Brian Foster
2021-01-22 3:13 ` Allison Henderson
2021-01-21 15:45 ` [PATCH v2 7/9] xfs: remove duplicate wq cancel and log force from attr quiesce Brian Foster
2021-01-22 3:13 ` Allison Henderson
2021-01-21 15:45 ` [PATCH v2 8/9] xfs: remove xfs_quiesce_attr() Brian Foster
2021-01-22 3:13 ` Allison Henderson
2021-01-21 15:45 ` [PATCH v2 9/9] xfs: cover the log on freeze instead of cleaning it Brian Foster
2021-01-22 3:13 ` Allison Henderson
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=daf97add-e7fc-c739-7999-5d98d6aaa736@oracle.com \
--to=allison.henderson@oracle.com \
--cc=bfoster@redhat.com \
--cc=linux-xfs@vger.kernel.org \
/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