aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2016-10-20 15:53:32 +1100
committerDave Chinner <david@fromorbit.com>2016-10-20 15:53:32 +1100
commit5f9268ca53aca992106d74edde3e7cf6c1be60a0 (patch)
treed7bbd9ab08f2fde333d67cdc20dbb126ca0bf56e /fs/xfs
parentxfs: handle "raw" delayed extents xfs_reflink_trim_around_shared (diff)
downloadlinux-dev-5f9268ca53aca992106d74edde3e7cf6c1be60a0.tar.xz
linux-dev-5f9268ca53aca992106d74edde3e7cf6c1be60a0.zip
xfs: don't bother looking at the refcount tree for reads
There is no need to trim an extent into a shared or non-shared one, or report any flags for plain old reads. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_iomap.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index d907eb9f8ef3..1dabf2eb136a 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -996,11 +996,14 @@ xfs_file_iomap_begin(
return error;
}
- /* Trim the mapping to the nearest shared extent boundary. */
- error = xfs_reflink_trim_around_shared(ip, &imap, &shared, &trimmed);
- if (error) {
- xfs_iunlock(ip, lockmode);
- return error;
+ if (flags & (IOMAP_WRITE | IOMAP_ZERO | IOMAP_REPORT)) {
+ /* Trim the mapping to the nearest shared extent boundary. */
+ error = xfs_reflink_trim_around_shared(ip, &imap, &shared,
+ &trimmed);
+ if (error) {
+ xfs_iunlock(ip, lockmode);
+ return error;
+ }
}
if ((flags & IOMAP_WRITE) && imap_needs_alloc(inode, &imap, nimaps)) {