summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/file.c4
-rw-r--r--fs/btrfs/inode.c7
2 files changed, 5 insertions, 6 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 77e33534c7d6..f15c13f97018 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2215,7 +2215,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
2215 goto out_only_mutex; 2215 goto out_only_mutex;
2216 } 2216 }
2217 2217
2218 lockstart = round_up(offset , BTRFS_I(inode)->root->sectorsize); 2218 lockstart = round_up(offset, BTRFS_I(inode)->root->sectorsize);
2219 lockend = round_down(offset + len, 2219 lockend = round_down(offset + len,
2220 BTRFS_I(inode)->root->sectorsize) - 1; 2220 BTRFS_I(inode)->root->sectorsize) - 1;
2221 same_page = ((offset >> PAGE_CACHE_SHIFT) == 2221 same_page = ((offset >> PAGE_CACHE_SHIFT) ==
@@ -2276,7 +2276,7 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
2276 tail_start + tail_len, 0, 1); 2276 tail_start + tail_len, 0, 1);
2277 if (ret) 2277 if (ret)
2278 goto out_only_mutex; 2278 goto out_only_mutex;
2279 } 2279 }
2280 } 2280 }
2281 } 2281 }
2282 2282
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2ac260d41ccd..ae98df67950f 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6146,14 +6146,14 @@ out_fail:
6146static int merge_extent_mapping(struct extent_map_tree *em_tree, 6146static int merge_extent_mapping(struct extent_map_tree *em_tree,
6147 struct extent_map *existing, 6147 struct extent_map *existing,
6148 struct extent_map *em, 6148 struct extent_map *em,
6149 u64 map_start, u64 map_len) 6149 u64 map_start)
6150{ 6150{
6151 u64 start_diff; 6151 u64 start_diff;
6152 6152
6153 BUG_ON(map_start < em->start || map_start >= extent_map_end(em)); 6153 BUG_ON(map_start < em->start || map_start >= extent_map_end(em));
6154 start_diff = map_start - em->start; 6154 start_diff = map_start - em->start;
6155 em->start = map_start; 6155 em->start = map_start;
6156 em->len = map_len; 6156 em->len = existing->start - em->start;
6157 if (em->block_start < EXTENT_MAP_LAST_BYTE && 6157 if (em->block_start < EXTENT_MAP_LAST_BYTE &&
6158 !test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) { 6158 !test_bit(EXTENT_FLAG_COMPRESSED, &em->flags)) {
6159 em->block_start += start_diff; 6159 em->block_start += start_diff;
@@ -6441,8 +6441,7 @@ insert:
6441 em->len); 6441 em->len);
6442 if (existing) { 6442 if (existing) {
6443 err = merge_extent_mapping(em_tree, existing, 6443 err = merge_extent_mapping(em_tree, existing,
6444 em, start, 6444 em, start);
6445 root->sectorsize);
6446 free_extent_map(existing); 6445 free_extent_map(existing);
6447 if (err) { 6446 if (err) {
6448 free_extent_map(em); 6447 free_extent_map(em);