diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 85841c53880571fec4852364725e91b5a6eaef07..4119f9a953204bff0f68d206ccc70f2fc8d3d7cc 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -244,16 +244,17 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
 
 			split->start = start + len;
 			split->len = em->start + em->len - (start + len);
-			split->orig_start = em->orig_start;
 			split->bdev = em->bdev;
 			split->flags = flags;
 
 			if (compressed) {
 				split->block_len = em->block_len;
 				split->block_start = em->block_start;
+				split->orig_start = em->orig_start;
 			} else {
 				split->block_len = split->len;
 				split->block_start = em->block_start + diff;
+				split->orig_start = split->start;
 			}
 
 			ret = add_extent_mapping(em_tree, split);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 59660293d29174a749fe162c2fd5703aae7d4e66..5ca9c0672374a5e6fd6b95fa7ce6a6c8cec42530 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -610,6 +610,7 @@ static noinline int submit_compressed_extents(struct inode *inode,
 		em = alloc_extent_map(GFP_NOFS);
 		em->start = async_extent->start;
 		em->len = async_extent->ram_size;
+		em->orig_start = em->start;
 
 		em->block_start = ins.objectid;
 		em->block_len = ins.offset;
@@ -743,6 +744,7 @@ static noinline int cow_file_range(struct inode *inode,
 		}
 		em = alloc_extent_map(GFP_NOFS);
 		em->start = start;
+		em->orig_start = em->start;
 
 		ram_size = ins.offset;
 		em->len = ins.offset;
@@ -1057,6 +1059,7 @@ static int run_delalloc_nocow(struct inode *inode, struct page *locked_page,
 			em_tree = &BTRFS_I(inode)->extent_tree;
 			em = alloc_extent_map(GFP_NOFS);
 			em->start = cur_offset;
+			em->orig_start = em->start;
 			em->len = num_bytes;
 			em->block_len = num_bytes;
 			em->block_start = disk_bytenr;
@@ -3876,6 +3879,7 @@ struct extent_map *btrfs_get_extent(struct inode *inode, struct page *page,
 	}
 	em->bdev = root->fs_info->fs_devices->latest_bdev;
 	em->start = EXTENT_MAP_HOLE;
+	em->orig_start = EXTENT_MAP_HOLE;
 	em->len = (u64)-1;
 	em->block_len = (u64)-1;