xfs: only look at the fork format in xfs_idestroy_fork
authorChristoph Hellwig <hch@lst.de>
Tue, 13 Apr 2021 18:15:10 +0000 (11:15 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 15 Apr 2021 16:35:50 +0000 (09:35 -0700)
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>
fs/xfs/libxfs/xfs_inode_fork.c

index a8800ff..73eea79 100644 (file)
@@ -522,17 +522,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;
        }
 }