Print this page
10592 misc. metaslab and vdev related ZoL bug fixes
Portions contributed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed by: Giuseppe Di Natale <guss80@gmail.com>
Reviewed by: George Melikov <mail@gmelikov.ru>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Tony Hutter <hutter2@llnl.gov>
Reviewed by: Kody Kantor <kody.kantor@joyent.com>
Approved by: Dan McDonald <danmcd@joyent.com>
        
*** 260,270 ****
          for (uint64_t c = 0; c < rvd->vdev_children; c++) {
                  vdev_t *vd = rvd->vdev_child[c];
  
                  if (vd->vdev_checkpoint_sm != NULL) {
                          ckpoint_sm_space_sum +=
!                             -vd->vdev_checkpoint_sm->sm_alloc;
                          vs_ckpoint_space_sum +=
                              vd->vdev_stat.vs_checkpoint_space;
                          ASSERT3U(ckpoint_sm_space_sum, ==,
                              vs_ckpoint_space_sum);
                  } else {
--- 260,270 ----
          for (uint64_t c = 0; c < rvd->vdev_children; c++) {
                  vdev_t *vd = rvd->vdev_child[c];
  
                  if (vd->vdev_checkpoint_sm != NULL) {
                          ckpoint_sm_space_sum +=
!                             -space_map_allocated(vd->vdev_checkpoint_sm);
                          vs_ckpoint_space_sum +=
                              vd->vdev_stat.vs_checkpoint_space;
                          ASSERT3U(ckpoint_sm_space_sum, ==,
                              vs_ckpoint_space_sum);
                  } else {
*** 345,355 ****
                              "while incrementally destroying the checkpoint "
                              "space map of vdev %llu\n",
                              error, vd->vdev_id);
                  }
                  ASSERT0(words_after);
!                 ASSERT0(vd->vdev_checkpoint_sm->sm_alloc);
                  ASSERT0(space_map_length(vd->vdev_checkpoint_sm));
  
                  space_map_free(vd->vdev_checkpoint_sm, tx);
                  space_map_close(vd->vdev_checkpoint_sm);
                  vd->vdev_checkpoint_sm = NULL;
--- 345,355 ----
                              "while incrementally destroying the checkpoint "
                              "space map of vdev %llu\n",
                              error, vd->vdev_id);
                  }
                  ASSERT0(words_after);
!                 ASSERT0(space_map_allocated(vd->vdev_checkpoint_sm));
                  ASSERT0(space_map_length(vd->vdev_checkpoint_sm));
  
                  space_map_free(vd->vdev_checkpoint_sm, tx);
                  space_map_close(vd->vdev_checkpoint_sm);
                  vd->vdev_checkpoint_sm = NULL;