diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index c6fc283164b87de58766029b402d5e98214a1bab..4a0da2d7758b96bf9c0027d2281b9ef35eb1c119 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6858,10 +6858,13 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, goto not_found; if (start > found_key.offset) goto next; + + /* New extent overlaps with existing one */ em->start = start; em->orig_start = start; em->len = found_key.offset - start; - goto not_found_em; + em->block_start = EXTENT_MAP_HOLE; + goto insert; } btrfs_extent_item_to_extent_map(inode, path, item, @@ -6921,7 +6924,6 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, em->start = start; em->orig_start = start; em->len = len; -not_found_em: em->block_start = EXTENT_MAP_HOLE; insert: btrfs_release_path(path);