xfs: split xfs_itruncate_finish
Split the guts of xfs_itruncate_finish that loop over the existing extents and calls xfs_bunmapi on them into a new helper, xfs_itruncate_externs. Make xfs_attr_inactive call it directly instead of xfs_itruncate_finish, which allows to simplify the latter a lot, by only letting it deal with the data fork. As a result xfs_itruncate_finish is renamed to xfs_itruncate_data to make its use case more obvious. Also remove the sync parameter from xfs_itruncate_data, which has been unessecary since the introduction of the busy extent list in 2002, and completely dead code since 2003 when the XFS_BMAPI_ASYNC parameter was made a no-op. I can't actually see why the xfs_attr_inactive needs to set the transaction sync, but let's keep this patch simple and without changes in behaviour. Also avoid passing a useless argument to xfs_isize_check, and make it private to xfs_inode.c. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Alex Elder <aelder@sgi.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
@@ -822,17 +822,21 @@ xfs_attr_inactive(xfs_inode_t *dp)
|
||||
error = xfs_attr_root_inactive(&trans, dp);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
* signal synchronous inactive transactions unless this
|
||||
* is a synchronous mount filesystem in which case we
|
||||
* know that we're here because we've been called out of
|
||||
* xfs_inactive which means that the last reference is gone
|
||||
* and the unlink transaction has already hit the disk so
|
||||
* async inactive transactions are safe.
|
||||
* Signal synchronous inactive transactions unless this is a
|
||||
* synchronous mount filesystem in which case we know that we're here
|
||||
* because we've been called out of xfs_inactive which means that the
|
||||
* last reference is gone and the unlink transaction has already hit
|
||||
* the disk so async inactive transactions are safe.
|
||||
*/
|
||||
if ((error = xfs_itruncate_finish(&trans, dp, 0LL, XFS_ATTR_FORK,
|
||||
(!(mp->m_flags & XFS_MOUNT_WSYNC)
|
||||
? 1 : 0))))
|
||||
if (!(mp->m_flags & XFS_MOUNT_WSYNC)) {
|
||||
if (dp->i_d.di_anextents > 0)
|
||||
xfs_trans_set_sync(trans);
|
||||
}
|
||||
|
||||
error = xfs_itruncate_extents(&trans, dp, XFS_ATTR_FORK, 0);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user