usr/src/uts/common/fs/zfs/spa.c
changeset 11026 e8e10df16a8f
parent 11022 63ab26072e41
child 11041 5534d19ab5c3
equal deleted inserted replaced
11025:96e66bda9446 11026:e8e10df16a8f
  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 }