Message ID | 20210412133819.2618857-5-hch@lst.de (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [1/7] xfs: move the XFS_IFEXTENTS check into xfs_iread_extents | expand |
On Mon, Apr 12, 2021 at 03:38:16PM +0200, Christoph Hellwig wrote: > 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> Looks ok, Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/xfs/libxfs/xfs_inode_fork.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c > index a8800ff03f9432..73eea7939b55e4 100644 > --- a/fs/xfs/libxfs/xfs_inode_fork.c > +++ b/fs/xfs/libxfs/xfs_inode_fork.c > @@ -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; > } > } > > -- > 2.30.1 >
diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c index a8800ff03f9432..73eea7939b55e4 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.c +++ b/fs/xfs/libxfs/xfs_inode_fork.c @@ -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; } }