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

Function vdev_config_generate

freebsd/contrib/openzfs/module/zfs/vdev_label.c:426–708  ·  view source on GitHub ↗

* Generate the nvlist representing this vdev's config. */

Source from the content-addressed store, hash-verified

424 * Generate the nvlist representing this vdev's config.
425 */
426nvlist_t *
427vdev_config_generate(spa_t *spa, vdev_t *vd, boolean_t getstats,
428 vdev_config_flag_t flags)
429{
430 nvlist_t *nv = NULL;
431 vdev_indirect_config_t *vic = &vd->vdev_indirect_config;
432
433 nv = fnvlist_alloc();
434
435 fnvlist_add_string(nv, ZPOOL_CONFIG_TYPE, vd->vdev_ops->vdev_op_type);
436 if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE)))
437 fnvlist_add_uint64(nv, ZPOOL_CONFIG_ID, vd->vdev_id);
438 fnvlist_add_uint64(nv, ZPOOL_CONFIG_GUID, vd->vdev_guid);
439
440 if (vd->vdev_path != NULL)
441 fnvlist_add_string(nv, ZPOOL_CONFIG_PATH, vd->vdev_path);
442
443 if (vd->vdev_devid != NULL)
444 fnvlist_add_string(nv, ZPOOL_CONFIG_DEVID, vd->vdev_devid);
445
446 if (vd->vdev_physpath != NULL)
447 fnvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH,
448 vd->vdev_physpath);
449
450 if (vd->vdev_enc_sysfs_path != NULL)
451 fnvlist_add_string(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH,
452 vd->vdev_enc_sysfs_path);
453
454 if (vd->vdev_fru != NULL)
455 fnvlist_add_string(nv, ZPOOL_CONFIG_FRU, vd->vdev_fru);
456
457 if (vd->vdev_ops->vdev_op_config_generate != NULL)
458 vd->vdev_ops->vdev_op_config_generate(vd, nv);
459
460 if (vd->vdev_wholedisk != -1ULL) {
461 fnvlist_add_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK,
462 vd->vdev_wholedisk);
463 }
464
465 if (vd->vdev_not_present && !(flags & VDEV_CONFIG_MISSING))
466 fnvlist_add_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, 1);
467
468 if (vd->vdev_isspare)
469 fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_SPARE, 1);
470
471 if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE)) &&
472 vd == vd->vdev_top) {
473 fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_ARRAY,
474 vd->vdev_ms_array);
475 fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_SHIFT,
476 vd->vdev_ms_shift);
477 fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASHIFT, vd->vdev_ashift);
478 fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASIZE,
479 vd->vdev_asize);
480 fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_LOG, vd->vdev_islog);
481 if (vd->vdev_removing) {
482 fnvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVING,
483 vd->vdev_removing);

Callers 6

spa_config_generateFunction · 0.85
vdev_config_dirtyFunction · 0.85
spa_load_sparesFunction · 0.85
spa_load_l2cacheFunction · 0.85
spa_sync_aux_devFunction · 0.85

Calls 15

fnvlist_allocFunction · 0.85
fnvlist_add_stringFunction · 0.85
fnvlist_add_uint64Function · 0.85
space_map_objectFunction · 0.85
fnvlist_add_booleanFunction · 0.85
rw_enterFunction · 0.85
rw_exitFunction · 0.85
spa_remove_max_segmentFunction · 0.85

Tested by

no test coverage detected