xfs: remove superfluous writeback mapping eof trimming
Now that the cached writeback mapping is explicitly invalidated on data fork changes, the EOF trimming band-aid is no longer necessary. Remove xfs_trim_extent_eof() as well since it has no other users. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
committed by
Darrick J. Wong
parent
d9252d526b
commit
3b35089807
@@ -3685,17 +3685,6 @@ xfs_trim_extent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* trim extent to within eof */
|
|
||||||
void
|
|
||||||
xfs_trim_extent_eof(
|
|
||||||
struct xfs_bmbt_irec *irec,
|
|
||||||
struct xfs_inode *ip)
|
|
||||||
|
|
||||||
{
|
|
||||||
xfs_trim_extent(irec, 0, XFS_B_TO_FSB(ip->i_mount,
|
|
||||||
i_size_read(VFS_I(ip))));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Trim the returned map to the required bounds
|
* Trim the returned map to the required bounds
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ static inline bool xfs_bmap_is_real_extent(struct xfs_bmbt_irec *irec)
|
|||||||
|
|
||||||
void xfs_trim_extent(struct xfs_bmbt_irec *irec, xfs_fileoff_t bno,
|
void xfs_trim_extent(struct xfs_bmbt_irec *irec, xfs_fileoff_t bno,
|
||||||
xfs_filblks_t len);
|
xfs_filblks_t len);
|
||||||
void xfs_trim_extent_eof(struct xfs_bmbt_irec *, struct xfs_inode *);
|
|
||||||
int xfs_bmap_add_attrfork(struct xfs_inode *ip, int size, int rsvd);
|
int xfs_bmap_add_attrfork(struct xfs_inode *ip, int size, int rsvd);
|
||||||
int xfs_bmap_set_attrforkoff(struct xfs_inode *ip, int size, int *version);
|
int xfs_bmap_set_attrforkoff(struct xfs_inode *ip, int size, int *version);
|
||||||
void xfs_bmap_local_to_extents_empty(struct xfs_inode *ip, int whichfork);
|
void xfs_bmap_local_to_extents_empty(struct xfs_inode *ip, int whichfork);
|
||||||
|
|||||||
@@ -357,19 +357,6 @@ xfs_map_blocks(
|
|||||||
if (XFS_FORCED_SHUTDOWN(mp))
|
if (XFS_FORCED_SHUTDOWN(mp))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
/*
|
|
||||||
* We have to make sure the cached mapping is within EOF to protect
|
|
||||||
* against eofblocks trimming on file release leaving us with a stale
|
|
||||||
* mapping. Otherwise, a page for a subsequent file extending buffered
|
|
||||||
* write could get picked up by this writeback cycle and written to the
|
|
||||||
* wrong blocks.
|
|
||||||
*
|
|
||||||
* Note that what we really want here is a generic mapping invalidation
|
|
||||||
* mechanism to protect us from arbitrary extent modifying contexts, not
|
|
||||||
* just eofblocks.
|
|
||||||
*/
|
|
||||||
xfs_trim_extent_eof(&wpc->imap, ip);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* COW fork blocks can overlap data fork blocks even if the blocks
|
* COW fork blocks can overlap data fork blocks even if the blocks
|
||||||
* aren't shared. COW I/O always takes precedent, so we must always
|
* aren't shared. COW I/O always takes precedent, so we must always
|
||||||
@@ -482,7 +469,6 @@ xfs_map_blocks(
|
|||||||
}
|
}
|
||||||
|
|
||||||
wpc->imap = imap;
|
wpc->imap = imap;
|
||||||
xfs_trim_extent_eof(&wpc->imap, ip);
|
|
||||||
trace_xfs_map_blocks_found(ip, offset, count, wpc->io_type, &imap);
|
trace_xfs_map_blocks_found(ip, offset, count, wpc->io_type, &imap);
|
||||||
return 0;
|
return 0;
|
||||||
allocate_blocks:
|
allocate_blocks:
|
||||||
@@ -494,7 +480,6 @@ allocate_blocks:
|
|||||||
ASSERT(whichfork == XFS_COW_FORK || cow_fsb == NULLFILEOFF ||
|
ASSERT(whichfork == XFS_COW_FORK || cow_fsb == NULLFILEOFF ||
|
||||||
imap.br_startoff + imap.br_blockcount <= cow_fsb);
|
imap.br_startoff + imap.br_blockcount <= cow_fsb);
|
||||||
wpc->imap = imap;
|
wpc->imap = imap;
|
||||||
xfs_trim_extent_eof(&wpc->imap, ip);
|
|
||||||
trace_xfs_map_blocks_alloc(ip, offset, count, wpc->io_type, &imap);
|
trace_xfs_map_blocks_alloc(ip, offset, count, wpc->io_type, &imap);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user