xfs: don't bother looking at the refcount tree for reads
authorChristoph Hellwig <hch@lst.de>
Thu, 20 Oct 2016 04:53:32 +0000 (15:53 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 20 Oct 2016 04:53:32 +0000 (15:53 +1100)
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>
fs/xfs/xfs_iomap.c

index d907eb9..1dabf2e 100644 (file)
@@ -996,11 +996,14 @@ xfs_file_iomap_begin(
                return error;
        }
 
                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)) {
        }
 
        if ((flags & IOMAP_WRITE) && imap_needs_alloc(inode, &imap, nimaps)) {