diff options
author | Don Brady <don.brady@intel.com> | 2017-01-13 21:50:22 +0000 |
---|---|---|
committer | Brian Behlendorf <behlendorf1@llnl.gov> | 2017-01-13 21:50:22 +0000 |
commit | 38640550f28c5acd94621f3452fab428df469bdb (patch) | |
tree | e0baedb3e1caa828f829fa80e2a2638aa2e5815b /module/zfs/spa.c | |
parent | fdbaf44ffbff109613fee5a04f190df5a34fdfcc (diff) | |
download | src-38640550f28c5acd94621f3452fab428df469bdb.tar.gz src-38640550f28c5acd94621f3452fab428df469bdb.zip |
Diffstat (limited to 'module/zfs/spa.c')
-rw-r--r-- | module/zfs/spa.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c index b4ca3c4d3e42..73512ddb2880 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -2766,10 +2766,14 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config, error = spa_dir_prop(spa, DMU_POOL_VDEV_ZAP_MAP, &spa->spa_all_vdev_zaps); - if (error != ENOENT && error != 0) { + if (error == ENOENT) { + VERIFY(!nvlist_exists(mos_config, + ZPOOL_CONFIG_HAS_PER_VDEV_ZAPS)); + spa->spa_avz_action = AVZ_ACTION_INITIALIZE; + ASSERT0(vdev_count_verify_zaps(spa->spa_root_vdev)); + } else if (error != 0) { return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); - } else if (error == 0 && !nvlist_exists(mos_config, - ZPOOL_CONFIG_HAS_PER_VDEV_ZAPS)) { + } else if (!nvlist_exists(mos_config, ZPOOL_CONFIG_HAS_PER_VDEV_ZAPS)) { /* * An older version of ZFS overwrote the sentinel value, so * we have orphaned per-vdev ZAPs in the MOS. Defer their @@ -6135,6 +6139,7 @@ spa_sync_config_object(spa_t *spa, dmu_tx_t *tx) spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); ASSERT(spa->spa_avz_action == AVZ_ACTION_NONE || + spa->spa_avz_action == AVZ_ACTION_INITIALIZE || spa->spa_all_vdev_zaps != 0); if (spa->spa_avz_action == AVZ_ACTION_REBUILD) { |