]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: only look at the fork format in xfs_idestroy_fork
authorChristoph Hellwig <hch@lst.de>
Wed, 30 Jun 2021 22:38:58 +0000 (18:38 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Wed, 30 Jun 2021 22:38:58 +0000 (18:38 -0400)
Source kernel commit: 0eba048dd3b73fab6c97742468176dff58650860

Stop using the XFS_IFEXTENTS flag, and instead switch on the fork format
in xfs_idestroy_fork to decide how to cleanup.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_inode_fork.c

index 55f0deabd701024920564ec1c1f92ce8621516f2..b1b6ac3f81a0cce6c3532504f65d5a8991e2fa10 100644 (file)
@@ -520,17 +520,16 @@ xfs_idestroy_fork(
                ifp->if_broot = NULL;
        }
 
-       /*
-        * If the format is local, then we can't have an extents array so just
-        * look for an inline data array.  If we're not local then we may or may
-        * not have an extents list, so check and free it up if we do.
-        */
-       if (ifp->if_format == XFS_DINODE_FMT_LOCAL) {
+       switch (ifp->if_format) {
+       case XFS_DINODE_FMT_LOCAL:
                kmem_free(ifp->if_u1.if_data);
                ifp->if_u1.if_data = NULL;
-       } else if (ifp->if_flags & XFS_IFEXTENTS) {
+               break;
+       case XFS_DINODE_FMT_EXTENTS:
+       case XFS_DINODE_FMT_BTREE:
                if (ifp->if_height)
                        xfs_iext_destroy(ifp);
+               break;
        }
 }