]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/spa_misc.c
Fix kstat state update during pool transition
[mirror_zfs.git] / module / zfs / spa_misc.c
index e2d1ae3fcf130341082b8068e262d0a76b921353..dddbe9cfa0e4751790ce44314c9b036cecc67e7a 100644 (file)
@@ -2582,8 +2582,18 @@ spa_set_missing_tvds(spa_t *spa, uint64_t missing)
 const char *
 spa_state_to_name(spa_t *spa)
 {
-       vdev_state_t state = spa->spa_root_vdev->vdev_state;
-       vdev_aux_t aux = spa->spa_root_vdev->vdev_stat.vs_aux;
+       ASSERT3P(spa, !=, NULL);
+
+       /*
+        * it is possible for the spa to exist, without root vdev
+        * as the spa transitions during import/export
+        */
+       vdev_t *rvd = spa->spa_root_vdev;
+       if (rvd == NULL) {
+               return ("TRANSITIONING");
+       }
+       vdev_state_t state = rvd->vdev_state;
+       vdev_aux_t aux = rvd->vdev_stat.vs_aux;
 
        if (spa_suspended(spa) &&
            (spa_get_failmode(spa) != ZIO_FAILURE_MODE_CONTINUE))