Deleted Added
full compact
3036c3036
< vdev_t *vd = svr->svr_vdev;
---
> vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
3052,3053c3052,3054
< * Clear everything past what has been synced,
< * because we have not allocated mappings for it yet.
---
> * Clear everything past what has been synced unless
> * it's past the spacemap, because we have not allocated
> * mappings for it yet.
3055,3058c3056,3062
< range_tree_clear(svr->svr_allocd_segs,
< vdev_indirect_mapping_max_offset(vim),
< msp->ms_sm->sm_start + msp->ms_sm->sm_size -
< vdev_indirect_mapping_max_offset(vim));
---
> uint64_t vim_max_offset =
> vdev_indirect_mapping_max_offset(vim);
> uint64_t sm_end = msp->ms_sm->sm_start +
> msp->ms_sm->sm_size;
> if (sm_end > vim_max_offset)
> range_tree_clear(svr->svr_allocd_segs,
> vim_max_offset, sm_end - vim_max_offset);