xfs: get rid of the ip parameter to xchk_setup_*
authorDarrick J. Wong <djwong@kernel.org>
Thu, 8 Apr 2021 00:59:39 +0000 (17:59 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Fri, 9 Apr 2021 17:27:18 +0000 (10:27 -0700)
Now that the scrub context stores a pointer to the file that was used to
invoke the scrub call, the struct xfs_inode pointer that we passed to
all the setup functions is no longer necessary.  This is only ever used
if the caller wants us to scrub the metadata of the open file.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
19 files changed:
fs/xfs/scrub/alloc.c
fs/xfs/scrub/attr.c
fs/xfs/scrub/bmap.c
fs/xfs/scrub/common.c
fs/xfs/scrub/common.h
fs/xfs/scrub/dir.c
fs/xfs/scrub/fscounters.c
fs/xfs/scrub/ialloc.c
fs/xfs/scrub/inode.c
fs/xfs/scrub/parent.c
fs/xfs/scrub/quota.c
fs/xfs/scrub/refcount.c
fs/xfs/scrub/repair.c
fs/xfs/scrub/repair.h
fs/xfs/scrub/rmap.c
fs/xfs/scrub/rtbitmap.c
fs/xfs/scrub/scrub.c
fs/xfs/scrub/scrub.h
fs/xfs/scrub/symlink.c

index 73d924e47565fe8e0ba8b11153adc5f23fb37c13..2720bd7fe53b46a2e4d69f213745cd8b5c557fc3 100644 (file)
  */
 int
 xchk_setup_ag_allocbt(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_ag_btree(sc, ip, false);
+       return xchk_setup_ag_btree(sc, false);
 }
 
 /* Free space btree scrubber. */
index 9faddb334a2c3a73390128797f1e7637c23e3107..552af0cf848287355cf5c6615157969952167cb4 100644 (file)
@@ -69,8 +69,7 @@ xchk_setup_xattr_buf(
 /* Set us up to scrub an inode's extended attributes. */
 int
 xchk_setup_xattr(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        int                     error;
 
@@ -85,7 +84,7 @@ xchk_setup_xattr(
                        return error;
        }
 
-       return xchk_setup_inode_contents(sc, ip, 0);
+       return xchk_setup_inode_contents(sc, 0);
 }
 
 /* Extended Attributes */
index 33559c3a4bc3d40489668b9f2bb801e820835c14..613e2aa7e4e7f1139017f2c61ddbedd42115bff7 100644 (file)
 /* Set us up with an inode's bmap. */
 int
 xchk_setup_inode_bmap(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        int                     error;
 
-       error = xchk_get_inode(sc, ip);
+       error = xchk_get_inode(sc);
        if (error)
                goto out;
 
index d8da0ea772bc4c55f3876bfc12895bbc0984b973..aa874607618a22e0dbc763f5e540994619231057 100644 (file)
@@ -593,8 +593,7 @@ xchk_trans_alloc(
 /* Set us up with a transaction and an empty context. */
 int
 xchk_setup_fs(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        uint                    resblks;
 
@@ -606,7 +605,6 @@ xchk_setup_fs(
 int
 xchk_setup_ag_btree(
        struct xfs_scrub        *sc,
-       struct xfs_inode        *ip,
        bool                    force_log)
 {
        struct xfs_mount        *mp = sc->mp;
@@ -624,7 +622,7 @@ xchk_setup_ag_btree(
                        return error;
        }
 
-       error = xchk_setup_fs(sc, ip);
+       error = xchk_setup_fs(sc);
        if (error)
                return error;
 
@@ -652,11 +650,11 @@ xchk_checkpoint_log(
  */
 int
 xchk_get_inode(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip_in)
+       struct xfs_scrub        *sc)
 {
        struct xfs_imap         imap;
        struct xfs_mount        *mp = sc->mp;
+       struct xfs_inode        *ip_in = XFS_I(file_inode(sc->file));
        struct xfs_inode        *ip = NULL;
        int                     error;
 
@@ -717,12 +715,11 @@ xchk_get_inode(
 int
 xchk_setup_inode_contents(
        struct xfs_scrub        *sc,
-       struct xfs_inode        *ip,
        unsigned int            resblks)
 {
        int                     error;
 
-       error = xchk_get_inode(sc, ip);
+       error = xchk_get_inode(sc);
        if (error)
                return error;
 
index 5e2c6f69350308c9143716bf6b20af541327c5f5..0410faf7d7359868e74fd6d6e64660f38b367246 100644 (file)
@@ -72,48 +72,37 @@ bool xchk_should_check_xref(struct xfs_scrub *sc, int *error,
                           struct xfs_btree_cur **curpp);
 
 /* Setup functions */
-int xchk_setup_fs(struct xfs_scrub *sc, struct xfs_inode *ip);
-int xchk_setup_ag_allocbt(struct xfs_scrub *sc,
-                              struct xfs_inode *ip);
-int xchk_setup_ag_iallocbt(struct xfs_scrub *sc,
-                               struct xfs_inode *ip);
-int xchk_setup_ag_rmapbt(struct xfs_scrub *sc,
-                             struct xfs_inode *ip);
-int xchk_setup_ag_refcountbt(struct xfs_scrub *sc,
-                                 struct xfs_inode *ip);
-int xchk_setup_inode(struct xfs_scrub *sc,
-                         struct xfs_inode *ip);
-int xchk_setup_inode_bmap(struct xfs_scrub *sc,
-                              struct xfs_inode *ip);
-int xchk_setup_inode_bmap_data(struct xfs_scrub *sc,
-                                   struct xfs_inode *ip);
-int xchk_setup_directory(struct xfs_scrub *sc,
-                             struct xfs_inode *ip);
-int xchk_setup_xattr(struct xfs_scrub *sc,
-                         struct xfs_inode *ip);
-int xchk_setup_symlink(struct xfs_scrub *sc,
-                           struct xfs_inode *ip);
-int xchk_setup_parent(struct xfs_scrub *sc,
-                          struct xfs_inode *ip);
+int xchk_setup_fs(struct xfs_scrub *sc);
+int xchk_setup_ag_allocbt(struct xfs_scrub *sc);
+int xchk_setup_ag_iallocbt(struct xfs_scrub *sc);
+int xchk_setup_ag_rmapbt(struct xfs_scrub *sc);
+int xchk_setup_ag_refcountbt(struct xfs_scrub *sc);
+int xchk_setup_inode(struct xfs_scrub *sc);
+int xchk_setup_inode_bmap(struct xfs_scrub *sc);
+int xchk_setup_inode_bmap_data(struct xfs_scrub *sc);
+int xchk_setup_directory(struct xfs_scrub *sc);
+int xchk_setup_xattr(struct xfs_scrub *sc);
+int xchk_setup_symlink(struct xfs_scrub *sc);
+int xchk_setup_parent(struct xfs_scrub *sc);
 #ifdef CONFIG_XFS_RT
-int xchk_setup_rt(struct xfs_scrub *sc, struct xfs_inode *ip);
+int xchk_setup_rt(struct xfs_scrub *sc);
 #else
 static inline int
-xchk_setup_rt(struct xfs_scrub *sc, struct xfs_inode *ip)
+xchk_setup_rt(struct xfs_scrub *sc)
 {
        return -ENOENT;
 }
 #endif
 #ifdef CONFIG_XFS_QUOTA
-int xchk_setup_quota(struct xfs_scrub *sc, struct xfs_inode *ip);
+int xchk_setup_quota(struct xfs_scrub *sc);
 #else
 static inline int
-xchk_setup_quota(struct xfs_scrub *sc, struct xfs_inode *ip)
+xchk_setup_quota(struct xfs_scrub *sc)
 {
        return -ENOENT;
 }
 #endif
-int xchk_setup_fscounters(struct xfs_scrub *sc, struct xfs_inode *ip);
+int xchk_setup_fscounters(struct xfs_scrub *sc);
 
 void xchk_ag_free(struct xfs_scrub *sc, struct xchk_ag *sa);
 int xchk_ag_init(struct xfs_scrub *sc, xfs_agnumber_t agno,
@@ -126,11 +115,9 @@ void xchk_ag_btcur_init(struct xfs_scrub *sc, struct xchk_ag *sa);
 int xchk_count_rmap_ownedby_ag(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
                const struct xfs_owner_info *oinfo, xfs_filblks_t *blocks);
 
-int xchk_setup_ag_btree(struct xfs_scrub *sc, struct xfs_inode *ip,
-               bool force_log);
-int xchk_get_inode(struct xfs_scrub *sc, struct xfs_inode *ip_in);
-int xchk_setup_inode_contents(struct xfs_scrub *sc, struct xfs_inode *ip,
-               unsigned int resblks);
+int xchk_setup_ag_btree(struct xfs_scrub *sc, bool force_log);
+int xchk_get_inode(struct xfs_scrub *sc);
+int xchk_setup_inode_contents(struct xfs_scrub *sc, unsigned int resblks);
 void xchk_buffer_recheck(struct xfs_scrub *sc, struct xfs_buf *bp);
 
 /*
index e7cc04b7454b7ee49e064c36b3dbe9579880de0c..28dda391d5df297a3e19e39a0469539409ba7b02 100644 (file)
 /* Set us up to scrub directories. */
 int
 xchk_setup_directory(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_inode_contents(sc, ip, 0);
+       return xchk_setup_inode_contents(sc, 0);
 }
 
 /* Directories */
index ec2064ed3c30f4549de65a5726f8b14f1f177fd6..7b4386c78fbf345c8af3f064b9c863c32e4d78cf 100644 (file)
@@ -116,8 +116,7 @@ next_loop_perag:
 
 int
 xchk_setup_fscounters(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        struct xchk_fscounters  *fsc;
        int                     error;
index 1644199c29a815f70b42419d3d5d5039cc9e24c4..8d9f3fb0cd22436e05fef685da6e167e5156c736 100644 (file)
  */
 int
 xchk_setup_ag_iallocbt(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_ag_btree(sc, ip, sc->flags & XCHK_TRY_HARDER);
+       return xchk_setup_ag_btree(sc, sc->flags & XCHK_TRY_HARDER);
 }
 
 /* Inode btree scrubber. */
index faf65eb5bd310311117c4fb5b5241d6e1059b813..61f90b2c943057acb62dc878c232c6f3b6fad2e1 100644 (file)
@@ -28,8 +28,7 @@
  */
 int
 xchk_setup_inode(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        int                     error;
 
@@ -37,7 +36,7 @@ xchk_setup_inode(
         * Try to get the inode.  If the verifiers fail, we try again
         * in raw mode.
         */
-       error = xchk_get_inode(sc, ip);
+       error = xchk_get_inode(sc);
        switch (error) {
        case 0:
                break;
index 076c812ed18dfd3f29e35ca3ee1cbe1e6e0961c7..ab182a5cd0c0adca5d987f8bb72b3ca01a3ca0c1 100644 (file)
 /* Set us up to scrub parents. */
 int
 xchk_setup_parent(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_inode_contents(sc, ip, 0);
+       return xchk_setup_inode_contents(sc, 0);
 }
 
 /* Parent pointers */
index 343f96f48b821c44ac9c9490371b60441d3429ee..acbb9839d42fbdbf81d6429fd63a046b2513230c 100644 (file)
@@ -37,8 +37,7 @@ xchk_quota_to_dqtype(
 /* Set us up to scrub a quota. */
 int
 xchk_setup_quota(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        xfs_dqtype_t            dqtype;
        int                     error;
@@ -53,7 +52,7 @@ xchk_setup_quota(
        mutex_lock(&sc->mp->m_quotainfo->qi_quotaofflock);
        if (!xfs_this_quota_on(sc->mp, dqtype))
                return -ENOENT;
-       error = xchk_setup_fs(sc, ip);
+       error = xchk_setup_fs(sc);
        if (error)
                return error;
        sc->ip = xfs_quota_inode(sc->mp, dqtype);
index dd672e6bbc75cfbcfe5dad7814530e9f26692aeb..744530a66c0ca917d1324533864b05d60ef8a9fc 100644 (file)
  */
 int
 xchk_setup_ag_refcountbt(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_ag_btree(sc, ip, false);
+       return xchk_setup_ag_btree(sc, false);
 }
 
 /* Reference count btree scrubber. */
index 61bc43418a2aa698cf11e4224d48c5edece79884..c2857d854c83ffef5c264e367d071c70eed2e729 100644 (file)
  */
 int
 xrep_attempt(
-       struct xfs_inode        *ip,
        struct xfs_scrub        *sc)
 {
        int                     error = 0;
 
-       trace_xrep_attempt(ip, sc->sm, error);
+       trace_xrep_attempt(XFS_I(file_inode(sc->file)), sc->sm, error);
 
        xchk_ag_btcur_free(&sc->sa);
 
        /* Repair whatever's broken. */
        ASSERT(sc->ops->repair);
        error = sc->ops->repair(sc);
-       trace_xrep_done(ip, sc->sm, error);
+       trace_xrep_done(XFS_I(file_inode(sc->file)), sc->sm, error);
        switch (error) {
        case 0:
                /*
index fe77de01abe049a0e01cc0d7f5f4690285743f20..3bb152d52a0734eef508e0a6ec6c34cef08a1b43 100644 (file)
@@ -17,7 +17,7 @@ static inline int xrep_notsupported(struct xfs_scrub *sc)
 
 /* Repair helpers */
 
-int xrep_attempt(struct xfs_inode *ip, struct xfs_scrub *sc);
+int xrep_attempt(struct xfs_scrub *sc);
 void xrep_failure(struct xfs_mount *mp);
 int xrep_roll_ag_trans(struct xfs_scrub *sc);
 bool xrep_ag_has_space(struct xfs_perag *pag, xfs_extlen_t nr_blocks,
@@ -64,8 +64,8 @@ int xrep_agi(struct xfs_scrub *sc);
 
 #else
 
-static inline int xrep_attempt(
-       struct xfs_inode        *ip,
+static inline int
+xrep_attempt(
        struct xfs_scrub        *sc)
 {
        return -EOPNOTSUPP;
index f4fcb4719f41d79339e76b946216ea9f710f967d..a4f17477c5d16dcfe55edadccb1c868d58ee66d4 100644 (file)
  */
 int
 xchk_setup_ag_rmapbt(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
-       return xchk_setup_ag_btree(sc, ip, false);
+       return xchk_setup_ag_btree(sc, false);
 }
 
 /* Reverse-mapping scrubber. */
index 1fb12928d8ef9046352b7a1d8d4931c05e686051..37c0e2266c85fe91cba9c73d31f331b050e0cc16 100644 (file)
 /* Set us up with the realtime metadata locked. */
 int
 xchk_setup_rt(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        int                     error;
 
-       error = xchk_setup_fs(sc, ip);
+       error = xchk_setup_fs(sc);
        if (error)
                return error;
 
index 21ebd3f4af9f33fdfd529b1c283f7fadd4707371..0e542636227ccdbd60169101c68b60e111b3159c 100644 (file)
@@ -468,8 +468,7 @@ xfs_scrub_metadata(
                        .agno           = NULLAGNUMBER,
                },
        };
-       struct xfs_inode                *ip = XFS_I(file_inode(file));
-       struct xfs_mount                *mp = ip->i_mount;
+       struct xfs_mount                *mp = XFS_I(file_inode(file))->i_mount;
        int                             error = 0;
 
        sc.mp = mp;
@@ -477,7 +476,7 @@ xfs_scrub_metadata(
        BUILD_BUG_ON(sizeof(meta_scrub_ops) !=
                (sizeof(struct xchk_meta_ops) * XFS_SCRUB_TYPE_NR));
 
-       trace_xchk_start(ip, sm, error);
+       trace_xchk_start(XFS_I(file_inode(file)), sm, error);
 
        /* Forbidden if we are shut down or mounted norecovery. */
        error = -ESHUTDOWN;
@@ -507,7 +506,7 @@ retry_op:
        }
 
        /* Set up for the operation. */
-       error = sc.ops->setup(&sc, ip);
+       error = sc.ops->setup(&sc);
        if (error)
                goto out_teardown;
 
@@ -553,7 +552,7 @@ retry_op:
                 * If it's broken, userspace wants us to fix it, and we haven't
                 * already tried to fix it, then attempt a repair.
                 */
-               error = xrep_attempt(ip, &sc);
+               error = xrep_attempt(&sc);
                if (error == -EAGAIN) {
                        /*
                         * Either the repair function succeeded or it couldn't
@@ -574,7 +573,7 @@ out_nofix:
 out_teardown:
        error = xchk_teardown(&sc, error);
 out:
-       trace_xchk_done(ip, sm, error);
+       trace_xchk_done(XFS_I(file_inode(file)), sm, error);
        if (error == -EFSCORRUPTED || error == -EFSBADCRC) {
                sm->sm_flags |= XFS_SCRUB_OFLAG_CORRUPT;
                error = 0;
index e776ab4ad3223964a8333e55cb1f6d028cbabc54..08a483cb46e2896ec5338ba1c37d84f7f7ccdb10 100644 (file)
@@ -18,8 +18,7 @@ enum xchk_type {
 
 struct xchk_meta_ops {
        /* Acquire whatever resources are needed for the operation. */
-       int             (*setup)(struct xfs_scrub *,
-                                struct xfs_inode *);
+       int             (*setup)(struct xfs_scrub *sc);
 
        /* Examine metadata for errors. */
        int             (*scrub)(struct xfs_scrub *);
index 8c1c3875b31d5b0009d326d54651f903dfdb7a41..ad7b85e248c78eb38d477e34583aebad0555f269 100644 (file)
 /* Set us up to scrub a symbolic link. */
 int
 xchk_setup_symlink(
-       struct xfs_scrub        *sc,
-       struct xfs_inode        *ip)
+       struct xfs_scrub        *sc)
 {
        /* Allocate the buffer without the inode lock held. */
        sc->buf = kvzalloc(XFS_SYMLINK_MAXLEN + 1, GFP_KERNEL);
        if (!sc->buf)
                return -ENOMEM;
 
-       return xchk_setup_inode_contents(sc, ip, 0);
+       return xchk_setup_inode_contents(sc, 0);
 }
 
 /* Symbolic links. */