aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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(
996 return error; 996 return error;
997 } 997 }
998 998
999 /* Trim the mapping to the nearest shared extent boundary. */ 999 if (flags & (IOMAP_WRITE | IOMAP_ZERO | IOMAP_REPORT)) {
1000 error = xfs_reflink_trim_around_shared(ip, &imap, &shared, &trimmed); 1000 /* Trim the mapping to the nearest shared extent boundary. */
1001 if (error) { 1001 error = xfs_reflink_trim_around_shared(ip, &imap, &shared,
1002 xfs_iunlock(ip, lockmode); 1002 &trimmed);
1003 return error; 1003 if (error) {
1004 xfs_iunlock(ip, lockmode);
1005 return error;
1006 }
1004 } 1007 }
1005 1008
1006 if ((flags & IOMAP_WRITE) && imap_needs_alloc(inode, &imap, nimaps)) { 1009 if ((flags & IOMAP_WRITE) && imap_needs_alloc(inode, &imap, nimaps)) {