* Generate the nvlist representing this vdev's config. */
| 424 | * Generate the nvlist representing this vdev's config. |
| 425 | */ |
| 426 | nvlist_t * |
| 427 | vdev_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); |
no test coverage detected