aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5a8a749b7e6b..01d223e22bb1 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7015,9 +7015,19 @@ static int lock_extent_direct(struct inode *inode, u64 lockstart, u64 lockend,
7015 btrfs_put_ordered_extent(ordered); 7015 btrfs_put_ordered_extent(ordered);
7016 } else { 7016 } else {
7017 /* Screw you mmap */ 7017 /* Screw you mmap */
7018 ret = filemap_write_and_wait_range(inode->i_mapping, 7018 ret = filemap_fdatawrite_range(inode->i_mapping,
7019 lockstart, 7019 lockstart,
7020 lockend); 7020 lockend);
7021 if (!ret && test_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
7022 &BTRFS_I(inode)->runtime_flags))
7023 ret = filemap_fdatawrite_range(inode->i_mapping,
7024 lockstart,
7025 lockend);
7026 if (ret)
7027 break;
7028 ret = filemap_fdatawait_range(inode->i_mapping,
7029 lockstart,
7030 lockend);
7021 if (ret) 7031 if (ret)
7022 break; 7032 break;
7023 7033