diff options
-rw-r--r-- | fs/btrfs/file.c | 3 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index b5a6a2b6f668..71bfe3a6a444 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -1228,7 +1228,8 @@ int btrfs_sync_file(struct file *file, struct dentry *dentry, int datasync) | |||
1228 | mutex_unlock(&root->fs_info->trans_mutex); | 1228 | mutex_unlock(&root->fs_info->trans_mutex); |
1229 | 1229 | ||
1230 | root->fs_info->tree_log_batch++; | 1230 | root->fs_info->tree_log_batch++; |
1231 | filemap_fdatawait(inode->i_mapping); | 1231 | filemap_fdatawrite(inode->i_mapping); |
1232 | btrfs_wait_ordered_range(inode, 0, (u64)-1); | ||
1232 | root->fs_info->tree_log_batch++; | 1233 | root->fs_info->tree_log_batch++; |
1233 | 1234 | ||
1234 | /* | 1235 | /* |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index d3f9c2c663c4..6ac1b7f72e2a 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -2610,6 +2610,11 @@ static noinline int copy_items(struct btrfs_trans_handle *trans, | |||
2610 | u64 cs = btrfs_file_extent_offset(src, extent); | 2610 | u64 cs = btrfs_file_extent_offset(src, extent); |
2611 | u64 cl = btrfs_file_extent_num_bytes(src, | 2611 | u64 cl = btrfs_file_extent_num_bytes(src, |
2612 | extent);; | 2612 | extent);; |
2613 | if (btrfs_file_extent_compression(src, | ||
2614 | extent)) { | ||
2615 | cs = 0; | ||
2616 | cl = dl; | ||
2617 | } | ||
2613 | /* ds == 0 is a hole */ | 2618 | /* ds == 0 is a hole */ |
2614 | if (ds != 0) { | 2619 | if (ds != 0) { |
2615 | ret = btrfs_inc_extent_ref(trans, log, | 2620 | ret = btrfs_inc_extent_ref(trans, log, |