]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/vdev_disk.c
module param callbacks check for initialized spa
[mirror_zfs.git] / module / zfs / vdev_disk.c
index f537c0d27b2b6b6ae6e9a4ae7f271d88e855eeb2..9c3a1ba802102de8c9e541ec61d5cb008880f3dc 100644 (file)
@@ -818,19 +818,21 @@ param_set_vdev_scheduler(const char *val, zfs_kernel_param_t *kp)
        if ((p = strchr(val, '\n')) != NULL)
                *p = '\0';
 
-       mutex_enter(&spa_namespace_lock);
-       while ((spa = spa_next(spa)) != NULL) {
-               if (spa_state(spa) != POOL_STATE_ACTIVE ||
-                   !spa_writeable(spa) || spa_suspended(spa))
-                       continue;
-
-               spa_open_ref(spa, FTAG);
-               mutex_exit(&spa_namespace_lock);
-               vdev_elevator_switch(spa->spa_root_vdev, (char *)val);
+       if (spa_mode_global != 0) {
                mutex_enter(&spa_namespace_lock);
-               spa_close(spa, FTAG);
+               while ((spa = spa_next(spa)) != NULL) {
+                       if (spa_state(spa) != POOL_STATE_ACTIVE ||
+                           !spa_writeable(spa) || spa_suspended(spa))
+                               continue;
+
+                       spa_open_ref(spa, FTAG);
+                       mutex_exit(&spa_namespace_lock);
+                       vdev_elevator_switch(spa->spa_root_vdev, (char *)val);
+                       mutex_enter(&spa_namespace_lock);
+                       spa_close(spa, FTAG);
+               }
+               mutex_exit(&spa_namespace_lock);
        }
-       mutex_exit(&spa_namespace_lock);
 
        return (param_set_charp(val, kp));
 }