diff options
| author | Christoph Hellwig <hch@infradead.org> | 2010-07-20 17:51:31 +1000 | 
|---|---|---|
| committer | Alex Elder <aelder@sgi.com> | 2010-07-26 13:16:52 -0500 | 
| commit | 5d18898b20dfed5f373f8a9a7cbe01446036f8e9 (patch) | |
| tree | dc96915d62c7140ad4ac33a3724ddf36f9db022f /fs/xfs/xfs_utils.c | |
| parent | 939d723b721eef71060201738653a73443ff4510 (diff) | |
| download | olio-linux-3.10-5d18898b20dfed5f373f8a9a7cbe01446036f8e9.tar.xz olio-linux-3.10-5d18898b20dfed5f373f8a9a7cbe01446036f8e9.zip  | |
xfs: simplify xfs_truncate_file
xfs_truncate_file is only used for truncating quota files.  Move it to
xfs_qm_syscalls.c so it can be marked static and take advatange of the
fact by removing the unused page cache validation and taking the iget
into the helper.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_utils.c')
| -rw-r--r-- | fs/xfs/xfs_utils.c | 83 | 
1 files changed, 0 insertions, 83 deletions
diff --git a/fs/xfs/xfs_utils.c b/fs/xfs/xfs_utils.c index 102ce4898ab..b7d5769d2df 100644 --- a/fs/xfs/xfs_utils.c +++ b/fs/xfs/xfs_utils.c @@ -320,86 +320,3 @@ xfs_bumplink(  	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);  	return 0;  } - -/* - * Try to truncate the given file to 0 length.  Currently called - * only out of xfs_remove when it has to truncate a file to free - * up space for the remove to proceed. - */ -int -xfs_truncate_file( -	xfs_mount_t	*mp, -	xfs_inode_t	*ip) -{ -	xfs_trans_t	*tp; -	int		error; - -#ifdef QUOTADEBUG -	/* -	 * This is called to truncate the quotainodes too. -	 */ -	if (XFS_IS_UQUOTA_ON(mp)) { -		if (ip->i_ino != mp->m_sb.sb_uquotino) -			ASSERT(ip->i_udquot); -	} -	if (XFS_IS_OQUOTA_ON(mp)) { -		if (ip->i_ino != mp->m_sb.sb_gquotino) -			ASSERT(ip->i_gdquot); -	} -#endif -	/* -	 * Make the call to xfs_itruncate_start before starting the -	 * transaction, because we cannot make the call while we're -	 * in a transaction. -	 */ -	xfs_ilock(ip, XFS_IOLOCK_EXCL); -	error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, (xfs_fsize_t)0); -	if (error) { -		xfs_iunlock(ip, XFS_IOLOCK_EXCL); -		return error; -	} - -	tp = xfs_trans_alloc(mp, XFS_TRANS_TRUNCATE_FILE); -	if ((error = xfs_trans_reserve(tp, 0, XFS_ITRUNCATE_LOG_RES(mp), 0, -				      XFS_TRANS_PERM_LOG_RES, -				      XFS_ITRUNCATE_LOG_COUNT))) { -		xfs_trans_cancel(tp, 0); -		xfs_iunlock(ip, XFS_IOLOCK_EXCL); -		return error; -	} - -	/* -	 * Follow the normal truncate locking protocol.  Since we -	 * hold the inode in the transaction, we know that its number -	 * of references will stay constant. -	 */ -	xfs_ilock(ip, XFS_ILOCK_EXCL); -	xfs_trans_ijoin(tp, ip); - -	/* -	 * Signal a sync xaction.  The only case where that isn't -	 * the case is if we're truncating an already unlinked file -	 * on a wsync fs.  In that case, we know the blocks can't -	 * reappear in the file because the links to file are -	 * permanently toast.  Currently, we're always going to -	 * want a sync transaction because this code is being -	 * called from places where nlink is guaranteed to be 1 -	 * but I'm leaving the tests in to protect against future -	 * changes -- rcc. -	 */ -	error = xfs_itruncate_finish(&tp, ip, (xfs_fsize_t)0, -				     XFS_DATA_FORK, -				     ((ip->i_d.di_nlink != 0 || -				       !(mp->m_flags & XFS_MOUNT_WSYNC)) -				      ? 1 : 0)); -	if (error) { -		xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | -				 XFS_TRANS_ABORT); -	} else { -		xfs_ichgtime(ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); -		error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); -	} -	xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); - -	return error; -}  |