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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/spa_checkpoint.c
          +++ new/usr/src/uts/common/fs/zfs/spa_checkpoint.c
↓ open down ↓ 254 lines elided ↑ open up ↑
 255  255  {
 256  256          vdev_t *rvd = spa->spa_root_vdev;
 257  257          uint64_t ckpoint_sm_space_sum = 0;
 258  258          uint64_t vs_ckpoint_space_sum = 0;
 259  259  
 260  260          for (uint64_t c = 0; c < rvd->vdev_children; c++) {
 261  261                  vdev_t *vd = rvd->vdev_child[c];
 262  262  
 263  263                  if (vd->vdev_checkpoint_sm != NULL) {
 264  264                          ckpoint_sm_space_sum +=
 265      -                            -vd->vdev_checkpoint_sm->sm_alloc;
      265 +                            -space_map_allocated(vd->vdev_checkpoint_sm);
 266  266                          vs_ckpoint_space_sum +=
 267  267                              vd->vdev_stat.vs_checkpoint_space;
 268  268                          ASSERT3U(ckpoint_sm_space_sum, ==,
 269  269                              vs_ckpoint_space_sum);
 270  270                  } else {
 271  271                          ASSERT0(vd->vdev_stat.vs_checkpoint_space);
 272  272                  }
 273  273          }
 274  274          ASSERT3U(spa->spa_checkpoint_info.sci_dspace, ==, ckpoint_sm_space_sum);
 275  275  }
↓ open down ↓ 64 lines elided ↑ open up ↑
 340  340              words_after);
 341  341  
 342  342          if (error != EINTR) {
 343  343                  if (error != 0) {
 344  344                          zfs_panic_recover("zfs: error %d was returned "
 345  345                              "while incrementally destroying the checkpoint "
 346  346                              "space map of vdev %llu\n",
 347  347                              error, vd->vdev_id);
 348  348                  }
 349  349                  ASSERT0(words_after);
 350      -                ASSERT0(vd->vdev_checkpoint_sm->sm_alloc);
      350 +                ASSERT0(space_map_allocated(vd->vdev_checkpoint_sm));
 351  351                  ASSERT0(space_map_length(vd->vdev_checkpoint_sm));
 352  352  
 353  353                  space_map_free(vd->vdev_checkpoint_sm, tx);
 354  354                  space_map_close(vd->vdev_checkpoint_sm);
 355  355                  vd->vdev_checkpoint_sm = NULL;
 356  356  
 357  357                  VERIFY0(zap_remove(spa_meta_objset(vd->vdev_spa),
 358  358                      vd->vdev_top_zap, VDEV_TOP_ZAP_POOL_CHECKPOINT_SM, tx));
 359  359          }
 360  360  }
↓ open down ↓ 265 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX