xfs: kill xfs_itruncate_start
xfs_itruncate_start is a rather length wrapper that evaluates to a call to xfs_ioend_wait and xfs_tosspages, and only has two callers. Instead of using the complicated checks left over from IRIX where we can to truncate the pagecache just call xfs_tosspages (aka truncate_inode_pages) directly as we want to get rid of all data after i_size, and truncate_inode_pages handles incorrect alignments and too large offsets just fine. 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:
parent
681b120018
commit
857b9778d8
4 changed files with 4 additions and 231 deletions
|
@ -197,13 +197,6 @@ xfs_free_eofblocks(
|
|||
*/
|
||||
tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE);
|
||||
|
||||
/*
|
||||
* Do the xfs_itruncate_start() call before
|
||||
* reserving any log space because
|
||||
* itruncate_start will call into the buffer
|
||||
* cache and we can't
|
||||
* do that within a transaction.
|
||||
*/
|
||||
if (flags & XFS_FREE_EOF_TRYLOCK) {
|
||||
if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) {
|
||||
xfs_trans_cancel(tp, 0);
|
||||
|
@ -212,13 +205,6 @@ xfs_free_eofblocks(
|
|||
} else {
|
||||
xfs_ilock(ip, XFS_IOLOCK_EXCL);
|
||||
}
|
||||
error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE,
|
||||
ip->i_size);
|
||||
if (error) {
|
||||
xfs_trans_cancel(tp, 0);
|
||||
xfs_iunlock(ip, XFS_IOLOCK_EXCL);
|
||||
return error;
|
||||
}
|
||||
|
||||
error = xfs_trans_reserve(tp, 0,
|
||||
XFS_ITRUNCATE_LOG_RES(mp),
|
||||
|
@ -660,20 +646,9 @@ xfs_inactive(
|
|||
|
||||
tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE);
|
||||
if (truncate) {
|
||||
/*
|
||||
* Do the xfs_itruncate_start() call before
|
||||
* reserving any log space because itruncate_start
|
||||
* will call into the buffer cache and we can't
|
||||
* do that within a transaction.
|
||||
*/
|
||||
xfs_ilock(ip, XFS_IOLOCK_EXCL);
|
||||
|
||||
error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, 0);
|
||||
if (error) {
|
||||
xfs_trans_cancel(tp, 0);
|
||||
xfs_iunlock(ip, XFS_IOLOCK_EXCL);
|
||||
return VN_INACTIVE_CACHE;
|
||||
}
|
||||
xfs_ioend_wait(ip);
|
||||
|
||||
error = xfs_trans_reserve(tp, 0,
|
||||
XFS_ITRUNCATE_LOG_RES(mp),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue