diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_inode_fork.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_inode_fork.c | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c index 0e80f34fe97c..31840ca24018 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.c +++ b/fs/xfs/libxfs/xfs_inode_fork.c @@ -1499,14 +1499,11 @@ xfs_iext_realloc_indirect(  	xfs_ifork_t	*ifp,		/* inode fork pointer */  	int		new_size)	/* new indirection array size */  { -	int		nlists;		/* number of irec's (ex lists) */ -	int		size;		/* current indirection array size */ -  	ASSERT(ifp->if_flags & XFS_IFEXTIREC); -	nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; -	size = nlists * sizeof(xfs_ext_irec_t);  	ASSERT(ifp->if_real_bytes); -	ASSERT((new_size >= 0) && (new_size != size)); +	ASSERT((new_size >= 0) && +	       (new_size != ((ifp->if_real_bytes / XFS_IEXT_BUFSZ) * +			     sizeof(xfs_ext_irec_t))));  	if (new_size == 0) {  		xfs_iext_destroy(ifp);  	} else { @@ -2023,3 +2020,15 @@ xfs_iext_get_extent(  	xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx), gotp);  	return true;  } + +void +xfs_iext_update_extent( +	struct xfs_ifork	*ifp, +	xfs_extnum_t		idx, +	struct xfs_bmbt_irec	*gotp) +{ +	ASSERT(idx >= 0); +	ASSERT(idx < xfs_iext_count(ifp)); + +	xfs_bmbt_set_all(xfs_iext_get_ext(ifp, idx), gotp); +} |