Rebase master to b121
[zfs.git] / module / zfs / spa_config.c
index 7103e17..b2063bb 100644 (file)
@@ -209,7 +209,7 @@ spa_config_sync(spa_t *target, boolean_t removing, boolean_t postsysevent)
 
        ASSERT(MUTEX_HELD(&spa_namespace_lock));
 
-       if (rootdir == NULL)
+       if (rootdir == NULL || !(spa_mode_global & FWRITE))
                return;
 
        /*
@@ -394,23 +394,12 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, int getstats)
 }
 
 /*
- * For a pool that's not currently a booting rootpool, update all disk labels,
- * generate a fresh config based on the current in-core state, and sync the
- * global config cache.
- */
-void
-spa_config_update(spa_t *spa, int what)
-{
-       spa_config_update_common(spa, what, FALSE);
-}
-
-/*
  * Update all disk labels, generate a fresh config based on the current
  * in-core state, and sync the global config cache (do not sync the config
  * cache if this is a booting rootpool).
  */
 void
-spa_config_update_common(spa_t *spa, int what, boolean_t isroot)
+spa_config_update(spa_t *spa, int what)
 {
        vdev_t *rvd = spa->spa_root_vdev;
        uint64_t txg;
@@ -447,9 +436,9 @@ spa_config_update_common(spa_t *spa, int what, boolean_t isroot)
        /*
         * Update the global config cache to reflect the new mosconfig.
         */
-       if (!isroot)
+       if (!spa->spa_is_root)
                spa_config_sync(spa, B_FALSE, what != SPA_CONFIG_UPDATE_POOL);
 
        if (what == SPA_CONFIG_UPDATE_POOL)
-               spa_config_update_common(spa, SPA_CONFIG_UPDATE_VDEVS, isroot);
+               spa_config_update(spa, SPA_CONFIG_UPDATE_VDEVS);
 }