Linux 3.9 compat: Undefine GCC_VERSION
[zfs.git] / module / zfs / spa.c
index 0a785f7..0babf47 100644 (file)
@@ -5742,6 +5742,14 @@ spa_sync_config_object(spa_t *spa, dmu_tx_t *tx)
        config = spa_config_generate(spa, spa->spa_root_vdev,
            dmu_tx_get_txg(tx), B_FALSE);
 
+       /*
+        * If we're upgrading the spa version then make sure that
+        * the config object gets updated with the correct version.
+        */
+       if (spa->spa_ubsync.ub_version < spa->spa_uberblock.ub_version)
+               fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION,
+                   spa->spa_uberblock.ub_version);
+
        spa_config_exit(spa, SCL_STATE, FTAG);
 
        if (spa->spa_config_syncing)
@@ -5762,7 +5770,7 @@ spa_sync_version(void *arg1, void *arg2, dmu_tx_t *tx)
         */
        ASSERT(tx->tx_txg != TXG_INITIAL);
 
-       ASSERT(version <= SPA_VERSION);
+       ASSERT(SPA_VERSION_IS_SUPPORTED(version));
        ASSERT(version >= spa_version(spa));
 
        spa->spa_uberblock.ub_version = version;
@@ -6286,7 +6294,7 @@ spa_upgrade(spa_t *spa, uint64_t version)
         * future version would result in an unopenable pool, this shouldn't be
         * possible.
         */
-       ASSERT(spa->spa_uberblock.ub_version <= SPA_VERSION);
+       ASSERT(SPA_VERSION_IS_SUPPORTED(spa->spa_uberblock.ub_version));
        ASSERT(version >= spa->spa_uberblock.ub_version);
 
        spa->spa_uberblock.ub_version = version;