]> git.apps.os.sepia.ceph.com Git - xfsprogs-dev.git/commitdiff
xfs_scrub: require primary superblock repairs to complete before proceeding
authorDarrick J. Wong <djwong@kernel.org>
Mon, 29 Jul 2024 23:23:03 +0000 (16:23 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 30 Jul 2024 00:01:06 +0000 (17:01 -0700)
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 <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
scrub/phase2.c

index 80c77b2876ffbb2f2918b520ab6cf603cbfa8a6d..2d49c604eae64314791baa8dae98cae982e4a870 100644 (file)
@@ -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;