xfs: move xfs_ioc_scrub_metadata to scrub.c
authorDarrick J. Wong <djwong@kernel.org>
Mon, 22 Apr 2024 16:48:24 +0000 (09:48 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 23 Apr 2024 23:55:17 +0000 (16:55 -0700)
Move the scrub ioctl handler to scrub.c to keep the code together and to
reduce unnecessary code when CONFIG_XFS_ONLINE_SCRUB=n.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/scrub/scrub.c
fs/xfs/scrub/xfs_scrub.h
fs/xfs/xfs_ioctl.c

index 4a81f828f9f135cfdf8621a0e9d05c96afa9e869..1456cc11c406dc632f5be1720eb9fd09791b905c 100644 (file)
@@ -578,7 +578,7 @@ xchk_scrub_create_subord(
 }
 
 /* Dispatch metadata scrubbing. */
-int
+STATIC int
 xfs_scrub_metadata(
        struct file                     *file,
        struct xfs_scrub_metadata       *sm)
@@ -724,3 +724,28 @@ try_harder:
        run.retries++;
        goto retry_op;
 }
+
+/* Scrub one aspect of one piece of metadata. */
+int
+xfs_ioc_scrub_metadata(
+       struct file                     *file,
+       void                            __user *arg)
+{
+       struct xfs_scrub_metadata       scrub;
+       int                             error;
+
+       if (!capable(CAP_SYS_ADMIN))
+               return -EPERM;
+
+       if (copy_from_user(&scrub, arg, sizeof(scrub)))
+               return -EFAULT;
+
+       error = xfs_scrub_metadata(file, &scrub);
+       if (error)
+               return error;
+
+       if (copy_to_user(arg, &scrub, sizeof(scrub)))
+               return -EFAULT;
+
+       return 0;
+}
index a39befa743ce0fbc48b0ca3b957b215814e28579..02c930f175d0b77024911e35b5a4efe9d2c1148a 100644 (file)
@@ -7,9 +7,9 @@
 #define __XFS_SCRUB_H__
 
 #ifndef CONFIG_XFS_ONLINE_SCRUB
-# define xfs_scrub_metadata(file, sm)  (-ENOTTY)
+# define xfs_ioc_scrub_metadata(f, a)  (-ENOTTY)
 #else
-int xfs_scrub_metadata(struct file *file, struct xfs_scrub_metadata *sm);
+int xfs_ioc_scrub_metadata(struct file *file, void __user *arg);
 #endif /* CONFIG_XFS_ONLINE_SCRUB */
 
 #endif /* __XFS_SCRUB_H__ */
index 0e97070abe80227a7d100bb337af186898f6c5d0..857b19428984a3f1c9af16d2e12a9e3717989f57 100644 (file)
@@ -1055,30 +1055,6 @@ out_free:
        return error;
 }
 
-STATIC int
-xfs_ioc_scrub_metadata(
-       struct file                     *file,
-       void                            __user *arg)
-{
-       struct xfs_scrub_metadata       scrub;
-       int                             error;
-
-       if (!capable(CAP_SYS_ADMIN))
-               return -EPERM;
-
-       if (copy_from_user(&scrub, arg, sizeof(scrub)))
-               return -EFAULT;
-
-       error = xfs_scrub_metadata(file, &scrub);
-       if (error)
-               return error;
-
-       if (copy_to_user(arg, &scrub, sizeof(scrub)))
-               return -EFAULT;
-
-       return 0;
-}
-
 int
 xfs_ioc_swapext(
        xfs_swapext_t   *sxp)