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);
 
                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;
                }
                em = alloc_extent_map(GFP_NOFS);
                em->start = start;
+               em->orig_start = em->start;
 
                ram_size = ins.offset;
                em->len = ins.offset;
                        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;
        }
        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;