mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 12:16:29 -04:00
xfs: check XFS_EOFBLOCKS_RELEASED earlier in xfs_release_eofblocks
If the XFS_EOFBLOCKS_RELEASED flag is set, we are not going to free the eofblocks, so don't bother locking the inode or performing the checks in xfs_can_free_eofblocks. Also switch to a test_and_set operation once the iolock has been acquire so that only the caller that sets it actually frees the post-EOF blocks. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
This commit is contained in:
committed by
Chandan Babu R
parent
f1204d9645
commit
b717089efe
@@ -1234,12 +1234,11 @@ xfs_file_release(
|
||||
*/
|
||||
if (inode->i_nlink &&
|
||||
(file->f_mode & FMODE_WRITE) &&
|
||||
!xfs_iflags_test(ip, XFS_EOFBLOCKS_RELEASED) &&
|
||||
xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) {
|
||||
if (xfs_can_free_eofblocks(ip) &&
|
||||
!xfs_iflags_test(ip, XFS_EOFBLOCKS_RELEASED)) {
|
||||
!xfs_iflags_test_and_set(ip, XFS_EOFBLOCKS_RELEASED))
|
||||
xfs_free_eofblocks(ip);
|
||||
xfs_iflags_set(ip, XFS_EOFBLOCKS_RELEASED);
|
||||
}
|
||||
xfs_iunlock(ip, XFS_IOLOCK_EXCL);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user