xfs: only cancel cow blocks when truncating the data fork
PATCH 1/1 xfs: only cancel cow blocks when truncating the data fork
From: Darrick J. Wong <[email protected]>
In xfs_itruncate_extents, only cancel cow blocks and clear the reflink flag if we were asked to truncate the data fork. Attr fork blocks cannot be shared, so this makes no sense.
Signed-off-by Darrick J. Wong <[email protected]>
--- fs/xfs/xfs_inode.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
fs/xfs/xfs_inode.c +8 -6
@@ -1611,13 +1611,15 @@ xfs_itruncate_extents( goto out; } -/* Remove all pending CoW reservations. */ - error =xfs_reflink_cancel_cow_blocks (ip, &tp, first_unmap_block, - last_block, true); -if (error) - goto out; +if (whichfork ==XFS_DATA_FORK ) { +/* Remove all pending CoW reservations. */ + error =xfs_reflink_cancel_cow_blocks (ip, &tp, + first_unmap_block, last_block, true); +if (error) + goto out; -xfs_itruncate_clear_reflink_flags (ip); +xfs_itruncate_clear_reflink_flags (ip); + }/* * Always re-log the inode so that our permanent transaction can keep
Quoted 7 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
In
xfs_itruncate_extents, only cancel cow blocks and clear the reflink flag if we were asked to truncate the data fork. Attr fork blocks cannot be shared, so this makes no sense.Signed-off-by Darrick J. Wong <[email protected]>
Looks good,
Reviewed-by Christoph Hellwig <[email protected]>