From c767c5aee0427c117b9338a62a5f140befd15aaa Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Thu, 8 Mar 2018 20:35:23 -0600 Subject: [PATCH] xfs_scrub: don't ask user to run xfs_repair for only warnings Don't advise the user to run xfs_repair on a filesystem that triggers warnings but no errors; there's no corruption for it to fix. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- scrub/phase1.c | 2 +- scrub/xfs_scrub.c | 7 ++++++- scrub/xfs_scrub.h | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/scrub/phase1.c b/scrub/phase1.c index b856a7f50..002c6425f 100644 --- a/scrub/phase1.c +++ b/scrub/phase1.c @@ -237,6 +237,6 @@ _("Unable to find realtime device path.")); * purely setup errors). */ log_info(ctx, _("Invoking online scrub."), ctx); - ctx->need_repair = true; + ctx->scrub_setup_succeeded = true; return true; } diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c index 7ab0c3ee6..7ee02b669 100644 --- a/scrub/xfs_scrub.c +++ b/scrub/xfs_scrub.c @@ -522,7 +522,12 @@ report_outcome( total_errors, ctx->warnings_found); } - if (ctx->need_repair) + /* + * Don't advise the user to run repair unless we were successful in + * setting up the scrub and we actually saw corruptions. Warnings + * are not corruptions. + */ + if (ctx->scrub_setup_succeeded && total_errors > 0) fprintf(stderr, _("%s: Unmount and run xfs_repair.\n"), ctx->mntpoint); } diff --git a/scrub/xfs_scrub.h b/scrub/xfs_scrub.h index b455747dd..aa130a73f 100644 --- a/scrub/xfs_scrub.h +++ b/scrub/xfs_scrub.h @@ -96,7 +96,7 @@ struct scrub_ctx { unsigned long long naming_warnings; unsigned long long repairs; unsigned long long preens; - bool need_repair; + bool scrub_setup_succeeded; bool preen_triggers[XFS_SCRUB_TYPE_NR]; }; -- 2.47.2