xfs: move xattr scrub buffer allocation to top level function
authorDarrick J. Wong <djwong@kernel.org>
Wed, 12 Apr 2023 02:00:32 +0000 (19:00 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 12 Apr 2023 02:00:32 +0000 (19:00 -0700)
Move the xchk_setup_xattr_buf call from xchk_xattr_block to xchk_xattr,
since we only need to set up the leaf block bitmaps once.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/scrub/attr.c

index 4201663..b37de94 100644 (file)
@@ -346,18 +346,10 @@ xchk_xattr_block(
        unsigned int                    usedbytes = 0;
        unsigned int                    hdrsize;
        int                             i;
-       int                             error;
 
        if (*last_checked == blk->blkno)
                return 0;
 
-       /* Allocate memory for block usage checking. */
-       error = xchk_setup_xattr_buf(ds->sc, 0);
-       if (error == -ENOMEM)
-               return -EDEADLOCK;
-       if (error)
-               return error;
-
        *last_checked = blk->blkno;
        bitmap_zero(ab->usedmap, mp->m_attr_geo->blksize);
 
@@ -507,6 +499,13 @@ xchk_xattr(
        if (!xfs_inode_hasattr(sc->ip))
                return -ENOENT;
 
+       /* Allocate memory for xattr checking. */
+       error = xchk_setup_xattr_buf(sc, 0);
+       if (error == -ENOMEM)
+               return -EDEADLOCK;
+       if (error)
+               return error;
+
        memset(&sx, 0, sizeof(sx));
        /* Check attribute tree structure */
        error = xchk_da_btree(sc, XFS_ATTR_FORK, xchk_xattr_rec,