equal
deleted
inserted
replaced
1243 if (!error && sle.sle_metadata_count <= policy.zrp_maxmeta && |
1243 if (!error && sle.sle_metadata_count <= policy.zrp_maxmeta && |
1244 sle.sle_data_count <= policy.zrp_maxdata) { |
1244 sle.sle_data_count <= policy.zrp_maxdata) { |
1245 verify_ok = B_TRUE; |
1245 verify_ok = B_TRUE; |
1246 spa->spa_load_txg = spa->spa_uberblock.ub_txg; |
1246 spa->spa_load_txg = spa->spa_uberblock.ub_txg; |
1247 spa->spa_load_txg_ts = spa->spa_uberblock.ub_timestamp; |
1247 spa->spa_load_txg_ts = spa->spa_uberblock.ub_timestamp; |
|
1248 } else { |
|
1249 spa->spa_load_max_txg = spa->spa_uberblock.ub_txg; |
1248 } |
1250 } |
1249 |
1251 |
1250 if (error) { |
1252 if (error) { |
1251 if (error != ENXIO && error != EIO) |
1253 if (error != ENXIO && error != EIO) |
1252 error = EIO; |
1254 error = EIO; |
1820 nvlist_t *config = NULL; |
1822 nvlist_t *config = NULL; |
1821 int load_error, rewind_error; |
1823 int load_error, rewind_error; |
1822 uint64_t safe_rollback_txg; |
1824 uint64_t safe_rollback_txg; |
1823 uint64_t min_txg; |
1825 uint64_t min_txg; |
1824 |
1826 |
1825 if (spa->spa_load_txg && state == SPA_LOAD_RECOVER) |
1827 if (spa->spa_load_txg && state == SPA_LOAD_RECOVER) { |
1826 spa->spa_load_max_txg = spa->spa_load_txg; |
1828 spa->spa_load_max_txg = spa->spa_load_txg; |
1827 else |
1829 spa->spa_log_state = SPA_LOG_CLEAR; |
|
1830 } else { |
1828 spa->spa_load_max_txg = max_request; |
1831 spa->spa_load_max_txg = max_request; |
|
1832 } |
1829 |
1833 |
1830 load_error = rewind_error = spa_load(spa, state, mosconfig); |
1834 load_error = rewind_error = spa_load(spa, state, mosconfig); |
1831 if (load_error == 0) |
1835 if (load_error == 0) |
1832 return (0); |
1836 return (0); |
1833 |
1837 |
1975 |
1979 |
1976 } |
1980 } |
1977 |
1981 |
1978 spa_open_ref(spa, tag); |
1982 spa_open_ref(spa, tag); |
1979 |
1983 |
1980 spa->spa_last_open_failed = 0; |
|
1981 |
1984 |
1982 if (config != NULL) |
1985 if (config != NULL) |
1983 *config = spa_config_generate(spa, NULL, -1ULL, B_TRUE); |
1986 *config = spa_config_generate(spa, NULL, -1ULL, B_TRUE); |
1984 |
1987 |
1985 spa->spa_last_ubsync_txg = 0; |
1988 if (locked) { |
1986 spa->spa_load_txg = 0; |
1989 spa->spa_last_open_failed = 0; |
1987 |
1990 spa->spa_last_ubsync_txg = 0; |
1988 if (locked) |
1991 spa->spa_load_txg = 0; |
1989 mutex_exit(&spa_namespace_lock); |
1992 mutex_exit(&spa_namespace_lock); |
|
1993 } |
1990 |
1994 |
1991 *spapp = spa; |
1995 *spapp = spa; |
1992 |
1996 |
1993 return (0); |
1997 return (0); |
1994 } |
1998 } |