xfs: remove the truncate short cut in xfs_map_blocks

Now that we properly handle the race with truncate in the delalloc
allocator there is no need to short cut this exceptional case earlier
on.

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:
Christoph Hellwig 2019-02-15 08:02:50 -08:00 committed by Darrick J. Wong
parent 4ad765edb0
commit 19c8e4e258
1 changed files with 0 additions and 20 deletions

View File

@ -420,26 +420,6 @@ xfs_map_blocks(
xfs_iunlock(ip, XFS_ILOCK_SHARED);
wpc->fork = XFS_COW_FORK;
/*
* Truncate can race with writeback since writeback doesn't
* take the iolock and truncate decreases the file size before
* it starts truncating the pages between new_size and old_size.
* Therefore, we can end up in the situation where writeback
* gets a CoW fork mapping but the truncate makes the mapping
* invalid and we end up in here trying to get a new mapping.
* bail out here so that we simply never get a valid mapping
* and so we drop the write altogether. The page truncation
* will kill the contents anyway.
*/
if (offset > i_size_read(inode)) {
wpc->imap.br_blockcount = end_fsb - offset_fsb;
wpc->imap.br_startoff = offset_fsb;
wpc->imap.br_startblock = HOLESTARTBLOCK;
wpc->imap.br_state = XFS_EXT_NORM;
return 0;
}
goto allocate_blocks;
}