diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 5b842276573e..bee8852e8155 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -2155,12 +2155,13 @@ next_slot: /* * If the found extent starts after requested offset, then - * adjust extent_end to be right before this extent begins + * adjust cur_offset to be right before this extent begins. */ if (found_key.offset > cur_offset) { - extent_end = found_key.offset; - extent_type = 0; - goto must_cow; + if (cow_start == (u64)-1) + cow_start = cur_offset; + cur_offset = found_key.offset; + goto next_slot; } /*