diff options
Diffstat (limited to 'fs/xfs/xfs_inode.c')
| -rw-r--r-- | fs/xfs/xfs_inode.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 604ee384a00a..50fbbf5f5a7a 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1872,6 +1872,7 @@ xfs_inactive(  	xfs_inode_t	*ip)  {  	struct xfs_mount	*mp; +	struct xfs_ifork	*cow_ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);  	int			error;  	int			truncate = 0; @@ -1892,6 +1893,10 @@ xfs_inactive(  	if (mp->m_flags & XFS_MOUNT_RDONLY)  		return; +	/* Try to clean out the cow blocks if there are any. */ +	if (xfs_is_reflink_inode(ip) && cow_ifp->if_bytes > 0) +		xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, true); +  	if (VFS_I(ip)->i_nlink != 0) {  		/*  		 * force is true because we are evicting an inode from the  | 
