diff options
| -rw-r--r-- | fs/xfs/xfs_iomap.c | 13 |
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)) { |
