MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vdev_load

Function vdev_load

freebsd/contrib/openzfs/module/zfs/vdev.c:3259–3407  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3257}
3258
3259int
3260vdev_load(vdev_t *vd)
3261{
3262 int error = 0;
3263
3264 /*
3265 * Recursively load all children.
3266 */
3267 for (int c = 0; c < vd->vdev_children; c++) {
3268 error = vdev_load(vd->vdev_child[c]);
3269 if (error != 0) {
3270 return (error);
3271 }
3272 }
3273
3274 vdev_set_deflate_ratio(vd);
3275
3276 /*
3277 * On spa_load path, grab the allocation bias from our zap
3278 */
3279 if (vd == vd->vdev_top && vd->vdev_top_zap != 0) {
3280 spa_t *spa = vd->vdev_spa;
3281 char bias_str[64];
3282
3283 error = zap_lookup(spa->spa_meta_objset, vd->vdev_top_zap,
3284 VDEV_TOP_ZAP_ALLOCATION_BIAS, 1, sizeof (bias_str),
3285 bias_str);
3286 if (error == 0) {
3287 ASSERT(vd->vdev_alloc_bias == VDEV_BIAS_NONE);
3288 vd->vdev_alloc_bias = vdev_derive_alloc_bias(bias_str);
3289 } else if (error != ENOENT) {
3290 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN,
3291 VDEV_AUX_CORRUPT_DATA);
3292 vdev_dbgmsg(vd, "vdev_load: zap_lookup(top_zap=%llu) "
3293 "failed [error=%d]", vd->vdev_top_zap, error);
3294 return (error);
3295 }
3296 }
3297
3298 /*
3299 * Load any rebuild state from the top-level vdev zap.
3300 */
3301 if (vd == vd->vdev_top && vd->vdev_top_zap != 0) {
3302 error = vdev_rebuild_load(vd);
3303 if (error && error != ENOTSUP) {
3304 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN,
3305 VDEV_AUX_CORRUPT_DATA);
3306 vdev_dbgmsg(vd, "vdev_load: vdev_rebuild_load "
3307 "failed [error=%d]", error);
3308 return (error);
3309 }
3310 }
3311
3312 /*
3313 * If this is a top-level vdev, initialize its metaslabs.
3314 */
3315 if (vd == vd->vdev_top && vdev_is_concrete(vd)) {
3316 vdev_metaslab_group_create(vd);

Callers 1

Calls 15

vdev_set_deflate_ratioFunction · 0.85
zap_lookupFunction · 0.85
vdev_derive_alloc_biasFunction · 0.85
vdev_set_stateFunction · 0.85
vdev_dbgmsgFunction · 0.85
vdev_rebuild_loadFunction · 0.85
vdev_is_concreteFunction · 0.85
vdev_metaslab_initFunction · 0.85
spa_meta_objsetFunction · 0.85
space_map_openFunction · 0.85

Tested by

no test coverage detected