xfs: fix double ijoin in xfs_reflink_clear_inode_flag()
xfs_reflink_clear_inode_flag double-joins an inode to a transaction, which is not allowed. Fix that and document that the caller must have already joined it. Signed-Off-By: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com> [darrick: edit out trace for nonexistent ASSERT] Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
c5295c6aad
commit
844e5e74c1
@ -1553,7 +1553,12 @@ next:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Clear the inode reflink flag if there are no shared extents. */
|
||||
/*
|
||||
* Clear the inode reflink flag if there are no shared extents.
|
||||
*
|
||||
* The caller is responsible for joining the inode to the transaction passed in.
|
||||
* The inode will be joined to the transaction that is returned to the caller.
|
||||
*/
|
||||
int
|
||||
xfs_reflink_clear_inode_flag(
|
||||
struct xfs_inode *ip,
|
||||
@ -1572,7 +1577,6 @@ xfs_reflink_clear_inode_flag(
|
||||
* We didn't find any shared blocks so turn off the reflink flag.
|
||||
* First, get rid of any leftover CoW mappings.
|
||||
*/
|
||||
xfs_trans_ijoin(*tpp, ip, 0);
|
||||
error = xfs_reflink_cancel_cow_blocks(ip, tpp, 0, NULLFILEOFF, true);
|
||||
if (error)
|
||||
return error;
|
||||
|
Loading…
Reference in New Issue
Block a user