540         load_obsolete_space_map_arg_t *losma = arg;
 541         ASSERT3S(sme->sme_type, ==, SM_ALLOC);
 542 
 543         vdev_indirect_mapping_increment_obsolete_count(losma->losma_vim,
 544             sme->sme_offset, sme->sme_run, losma->losma_counts);
 545 
 546         return (0);
 547 }
 548 
 549 /*
 550  * Modify the counts (increment them) based on the spacemap.
 551  */
 552 void
 553 vdev_indirect_mapping_load_obsolete_spacemap(vdev_indirect_mapping_t *vim,
 554     uint32_t *counts, space_map_t *obsolete_space_sm)
 555 {
 556         load_obsolete_space_map_arg_t losma;
 557         losma.losma_counts = counts;
 558         losma.losma_vim = vim;
 559         VERIFY0(space_map_iterate(obsolete_space_sm,
 560             load_obsolete_sm_callback, &losma));
 561 }
 562 
 563 /*
 564  * Read the obsolete counts from disk, returning them in an array.
 565  */
 566 uint32_t *
 567 vdev_indirect_mapping_load_obsolete_counts(vdev_indirect_mapping_t *vim)
 568 {
 569         ASSERT(vdev_indirect_mapping_verify(vim));
 570 
 571         uint64_t counts_size =
 572             vim->vim_phys->vimp_num_entries * sizeof (uint32_t);
 573         uint32_t *counts = kmem_alloc(counts_size, KM_SLEEP);
 574         if (vim->vim_havecounts) {
 575                 VERIFY0(dmu_read(vim->vim_objset,
 576                     vim->vim_phys->vimp_counts_object,
 577                     0, counts_size,
 578                     counts, DMU_READ_PREFETCH));
 579         } else {
 | 
 
 
 540         load_obsolete_space_map_arg_t *losma = arg;
 541         ASSERT3S(sme->sme_type, ==, SM_ALLOC);
 542 
 543         vdev_indirect_mapping_increment_obsolete_count(losma->losma_vim,
 544             sme->sme_offset, sme->sme_run, losma->losma_counts);
 545 
 546         return (0);
 547 }
 548 
 549 /*
 550  * Modify the counts (increment them) based on the spacemap.
 551  */
 552 void
 553 vdev_indirect_mapping_load_obsolete_spacemap(vdev_indirect_mapping_t *vim,
 554     uint32_t *counts, space_map_t *obsolete_space_sm)
 555 {
 556         load_obsolete_space_map_arg_t losma;
 557         losma.losma_counts = counts;
 558         losma.losma_vim = vim;
 559         VERIFY0(space_map_iterate(obsolete_space_sm,
 560             space_map_length(obsolete_space_sm),
 561             load_obsolete_sm_callback, &losma));
 562 }
 563 
 564 /*
 565  * Read the obsolete counts from disk, returning them in an array.
 566  */
 567 uint32_t *
 568 vdev_indirect_mapping_load_obsolete_counts(vdev_indirect_mapping_t *vim)
 569 {
 570         ASSERT(vdev_indirect_mapping_verify(vim));
 571 
 572         uint64_t counts_size =
 573             vim->vim_phys->vimp_num_entries * sizeof (uint32_t);
 574         uint32_t *counts = kmem_alloc(counts_size, KM_SLEEP);
 575         if (vim->vim_havecounts) {
 576                 VERIFY0(dmu_read(vim->vim_objset,
 577                     vim->vim_phys->vimp_counts_object,
 578                     0, counts_size,
 579                     counts, DMU_READ_PREFETCH));
 580         } else {
 |