All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/2] xfs: add a repair revalidation function pointer
Date: Wed, 23 Oct 2019 07:09:01 -0400	[thread overview]
Message-ID: <20191023110901.GA59518@bfoster> (raw)
In-Reply-To: <157063977906.2913625.11610063964985485066.stgit@magnolia>

On Wed, Oct 09, 2019 at 09:49:39AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Allow repair functions to set a separate function pointer to validate
> the metadata that they've rebuilt.  This prevents us from exiting from a
> repair function that rebuilds both A and B without checking that both A
> and B can pass a scrub test.  We'll need this for the free space and
> inode btree repair strategies.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---

Seems reasonable, but perhaps should be placed along with the first
patch that uses the callback..

Brian

>  fs/xfs/scrub/scrub.c |    5 ++++-
>  fs/xfs/scrub/scrub.h |    8 ++++++++
>  2 files changed, 12 insertions(+), 1 deletion(-)
> 
> 
> diff --git a/fs/xfs/scrub/scrub.c b/fs/xfs/scrub/scrub.c
> index 15c8c5f3f688..0f0b64d7164b 100644
> --- a/fs/xfs/scrub/scrub.c
> +++ b/fs/xfs/scrub/scrub.c
> @@ -495,7 +495,10 @@ xfs_scrub_metadata(
>  		goto out_teardown;
>  
>  	/* Scrub for errors. */
> -	error = sc.ops->scrub(&sc);
> +	if ((sc.flags & XREP_ALREADY_FIXED) && sc.ops->repair_eval != NULL)
> +		error = sc.ops->repair_eval(&sc);
> +	else
> +		error = sc.ops->scrub(&sc);
>  	if (!(sc.flags & XCHK_TRY_HARDER) && error == -EDEADLOCK) {
>  		/*
>  		 * Scrubbers return -EDEADLOCK to mean 'try harder'.
> diff --git a/fs/xfs/scrub/scrub.h b/fs/xfs/scrub/scrub.h
> index ad1ceb44a628..94a30637a127 100644
> --- a/fs/xfs/scrub/scrub.h
> +++ b/fs/xfs/scrub/scrub.h
> @@ -27,6 +27,14 @@ struct xchk_meta_ops {
>  	/* Repair or optimize the metadata. */
>  	int		(*repair)(struct xfs_scrub *);
>  
> +	/*
> +	 * Re-scrub the metadata we repaired, in case there's extra work that
> +	 * we need to do to check our repair work.  If this is NULL, we'll use
> +	 * the ->scrub function pointer, assuming that the regular scrub is
> +	 * sufficient.
> +	 */
> +	int		(*repair_eval)(struct xfs_scrub *sc);
> +
>  	/* Decide if we even have this piece of metadata. */
>  	bool		(*has)(struct xfs_sb *);
>  
> 


  reply	other threads:[~2019-10-23 11:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-09 16:49 [PATCH 0/2] xfs: health evaluations for repair Darrick J. Wong
2019-10-09 16:49 ` [PATCH 1/2] xfs: add a repair revalidation function pointer Darrick J. Wong
2019-10-23 11:09   ` Brian Foster [this message]
2019-10-09 16:49 ` [PATCH 2/2] xfs: always rescan allegedly healthy per-ag metadata after repair Darrick J. Wong
2019-10-23 11:09   ` 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=20191023110901.GA59518@bfoster \
    --to=bfoster@redhat.com \
    --cc=darrick.wong@oracle.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 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.