xfs: move locking into xfs_bmap_punch_delalloc_range
Both callers want the same looking, so do it only once. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com> 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
0362572138
commit
d438017757
|
@ -760,10 +760,8 @@ xfs_aops_discard_page(
|
|||
"page discard on page "PTR_FMT", inode 0x%llx, offset %llu.",
|
||||
page, ip->i_ino, offset);
|
||||
|
||||
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
||||
error = xfs_bmap_punch_delalloc_range(ip, start_fsb,
|
||||
PAGE_SIZE / i_blocksize(inode));
|
||||
xfs_iunlock(ip, XFS_ILOCK_EXCL);
|
||||
if (error && !XFS_FORCED_SHUTDOWN(mp))
|
||||
xfs_alert(mp, "page discard unable to remove delalloc mapping.");
|
||||
out_invalidate:
|
||||
|
|
|
@ -702,16 +702,15 @@ xfs_bmap_punch_delalloc_range(
|
|||
struct xfs_iext_cursor icur;
|
||||
int error = 0;
|
||||
|
||||
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
||||
|
||||
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
||||
if (!(ifp->if_flags & XFS_IFEXTENTS)) {
|
||||
error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK);
|
||||
if (error)
|
||||
return error;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
if (!xfs_iext_lookup_extent_before(ip, ifp, &end_fsb, &icur, &got))
|
||||
return 0;
|
||||
goto out_unlock;
|
||||
|
||||
while (got.br_startoff + got.br_blockcount > start_fsb) {
|
||||
del = got;
|
||||
|
@ -735,6 +734,8 @@ xfs_bmap_punch_delalloc_range(
|
|||
break;
|
||||
}
|
||||
|
||||
out_unlock:
|
||||
xfs_iunlock(ip, XFS_ILOCK_EXCL);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
|
|
@ -1204,11 +1204,8 @@ xfs_file_iomap_end_delalloc(
|
|||
truncate_pagecache_range(VFS_I(ip), XFS_FSB_TO_B(mp, start_fsb),
|
||||
XFS_FSB_TO_B(mp, end_fsb) - 1);
|
||||
|
||||
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
||||
error = xfs_bmap_punch_delalloc_range(ip, start_fsb,
|
||||
end_fsb - start_fsb);
|
||||
xfs_iunlock(ip, XFS_ILOCK_EXCL);
|
||||
|
||||
if (error && !XFS_FORCED_SHUTDOWN(mp)) {
|
||||
xfs_alert(mp, "%s: unable to clean up ino %lld",
|
||||
__func__, ip->i_ino);
|
||||
|
|
Loading…
Reference in New Issue