diff options
author | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:34:34 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:34:34 -0400 |
commit | 8f04c47aa9712874af2c8816c2ca2a332cba80e4 (patch) | |
tree | 56f76e7d1443759ed68c6720e7f242950e220f8c /fs/xfs/linux-2.6/xfs_iops.c | |
parent | 857b9778d86ccba7d7b42c9d8aeecde794ec8a6b (diff) |
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>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_iops.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_iops.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 5a0fcb09fc7e..501e4f630548 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
@@ -879,15 +879,7 @@ xfs_setattr_size( | |||
879 | ip->i_size = iattr->ia_size; | 879 | ip->i_size = iattr->ia_size; |
880 | } else if (iattr->ia_size <= ip->i_size || | 880 | } else if (iattr->ia_size <= ip->i_size || |
881 | (iattr->ia_size == 0 && ip->i_d.di_nextents)) { | 881 | (iattr->ia_size == 0 && ip->i_d.di_nextents)) { |
882 | /* | 882 | error = xfs_itruncate_data(&tp, ip, iattr->ia_size); |
883 | * Signal a sync transaction unless we are truncating an | ||
884 | * already unlinked file on a wsync filesystem. | ||
885 | */ | ||
886 | error = xfs_itruncate_finish(&tp, ip, iattr->ia_size, | ||
887 | XFS_DATA_FORK, | ||
888 | ((ip->i_d.di_nlink != 0 || | ||
889 | !(mp->m_flags & XFS_MOUNT_WSYNC)) | ||
890 | ? 1 : 0)); | ||
891 | if (error) | 883 | if (error) |
892 | goto out_trans_abort; | 884 | goto out_trans_abort; |
893 | 885 | ||