xfs: only look at the fork format in xfs_idestroy_fork
[linux-2.6-microblaze.git] / 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;
        }
 }