diff options
author | Christoph Hellwig <hch@lst.de> | 2019-02-18 20:38:48 +0300 |
---|---|---|
committer | Darrick J. Wong <darrick.wong@oracle.com> | 2019-02-21 18:55:07 +0300 |
commit | c4feb0b194f37b33514ee30a9e86a68194a1361e (patch) | |
tree | 4fbf4db5663fb332c7950b00000c2c8edc8a81ef /fs/xfs | |
parent | 26b91c728b2d15952432371dc2b6ba1dda1fb61f (diff) | |
download | linux-c4feb0b194f37b33514ee30a9e86a68194a1361e.tar.xz |
xfs: report IOMAP_F_SHARED from xfs_file_iomap_begin_delay
No user of it in the iomap code at the moment, but we should not
actively report wrong information if we can trivially get it right.
Signed-off-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>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_iomap.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 08c4d1d8f90e..0803ed76e296 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -541,7 +541,7 @@ xfs_file_iomap_begin_delay( struct xfs_bmbt_irec imap, cmap; struct xfs_iext_cursor icur, ccur; xfs_fsblock_t prealloc_blocks = 0; - bool eof = false, cow_eof = false, shared; + bool eof = false, cow_eof = false, shared = false; int whichfork = XFS_DATA_FORK; int error = 0; @@ -710,13 +710,14 @@ done: if (imap.br_startoff > offset_fsb) { xfs_trim_extent(&cmap, offset_fsb, imap.br_startoff - offset_fsb); - error = xfs_bmbt_to_iomap(ip, iomap, &cmap, false); + error = xfs_bmbt_to_iomap(ip, iomap, &cmap, true); goto out_unlock; } /* ensure we only report blocks we have a reservation for */ xfs_trim_extent(&imap, cmap.br_startoff, cmap.br_blockcount); + shared = true; } - error = xfs_bmbt_to_iomap(ip, iomap, &imap, false); + error = xfs_bmbt_to_iomap(ip, iomap, &imap, shared); out_unlock: xfs_iunlock(ip, XFS_ILOCK_EXCL); return error; |