]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_scrub: allow developers to force repairs
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 1 Aug 2018 22:06:44 +0000 (17:06 -0500)
committerEric Sandeen <sandeen@redhat.com>
Wed, 1 Aug 2018 22:06:44 +0000 (17:06 -0500)
Now that we have an error injection knob in the kernel to simulate
corruptions, enable it in xfs_scrub so that developers can test all
the repair capabilities.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
scrub/scrub.c

index 79b3304fa00f09d7856b282fe3e181c93756d203..61caff9b0dc9a384945f397d30fdeee587d3388f 100644 (file)
@@ -598,14 +598,18 @@ __xfs_scrub_test(
        bool                            repair)
 {
        struct xfs_scrub_metadata       meta = {0};
+       struct xfs_error_injection      inject;
        static bool                     injected;
        int                             error;
 
        if (debug_tweak_on("XFS_SCRUB_NO_KERNEL"))
                return false;
        if (debug_tweak_on("XFS_SCRUB_FORCE_REPAIR") && !injected) {
-               str_info(ctx, "XFS_SCRUB_FORCE_REPAIR", "Not supported.");
-               return false;
+               inject.fd = ctx->mnt_fd;
+               inject.errtag = XFS_ERRTAG_FORCE_SCRUB_REPAIR;
+               error = ioctl(ctx->mnt_fd, XFS_IOC_ERROR_INJECTION, &inject);
+               if (error == 0)
+                       injected = true;
        }
 
        meta.sm_type = type;