public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
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;
> 

  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