From c5a7b55001f6d86acdc0c40dfc26a25ac122b172 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 29 Jul 2024 16:23:03 -0700 Subject: [PATCH] xfs_scrub: require primary superblock repairs to complete before proceeding Phase 2 of the xfs_scrub program calls the kernel to check the primary superblock before scanning the rest of the filesystem. Though doing so is a no-op now (since the primary super must pass all checks as a prerequisite for mounting), the goal of this code is to enable future kernel code to intercept an xfs_scrub run before it actually does anything. If this some day involves fixing the primary superblock, it seems reasonable to require that /all/ repairs complete successfully before moving on to the rest of the filesystem. Unfortunately, that's not what xfs_scrub does now -- primary super repairs that fail are theoretically deferred to phase 4! So make this mandatory. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig --- scrub/phase2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scrub/phase2.c b/scrub/phase2.c index 80c77b287..2d49c604e 100644 --- a/scrub/phase2.c +++ b/scrub/phase2.c @@ -174,7 +174,8 @@ phase2_func( ret = scrub_primary_super(ctx, &alist); if (ret) goto out_wq; - ret = action_list_process_or_defer(ctx, 0, &alist); + ret = action_list_process(ctx, -1, &alist, + XRM_FINAL_WARNING | XRM_NOPROGRESS); if (ret) goto out_wq; -- 2.39.5