Add fetching of GUID in VDevTree

This commit is contained in:
Faruk Kasumovic 2020-08-31 10:56:49 +02:00
parent ee9aac43ac
commit 768fbf7f22
3 changed files with 10 additions and 0 deletions

View File

@ -378,6 +378,12 @@ const char *get_vdev_type(nvlist_ptr nv) {
return value; return value;
} }
uint64_t get_vdev_guid(nvlist_ptr nv) {
uint64_t value = 0;
nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &value);
return value;
}
const vdev_stat_ptr get_vdev_stats(nvlist_ptr nv) { const vdev_stat_ptr get_vdev_stats(nvlist_ptr nv) {
vdev_stat_ptr vs = NULL; vdev_stat_ptr vs = NULL;
uint_t count; uint_t count;

View File

@ -115,6 +115,7 @@ type VDevTree struct {
Spares []VDevTree Spares []VDevTree
L2Cache []VDevTree L2Cache []VDevTree
Logs *VDevTree Logs *VDevTree
GUID uint64
Parity uint Parity uint
Path string Path string
Name string Name string
@ -178,6 +179,8 @@ func poolGetConfig(name string, nv C.nvlist_ptr) (vdevs VDevTree, err error) {
return return
} }
vdevs.GUID = uint64(C.get_vdev_guid(nv))
// Fetch vdev state // Fetch vdev state
if vs = C.get_vdev_stats(nv); vs == nil { if vs = C.get_vdev_stats(nv); vs == nil {
err = fmt.Errorf("Failed to fetch %s", C.ZPOOL_CONFIG_VDEV_STATS) err = fmt.Errorf("Failed to fetch %s", C.ZPOOL_CONFIG_VDEV_STATS)

View File

@ -62,6 +62,7 @@ nvlist_t *nvlist_array_at(nvlist_t **a, uint_t i);
int refresh_stats(zpool_list_t *pool); int refresh_stats(zpool_list_t *pool);
const char *get_vdev_type(nvlist_ptr nv); const char *get_vdev_type(nvlist_ptr nv);
uint64_t get_vdev_guid(nvlist_ptr nv);
const vdev_stat_ptr get_vdev_stats(nvlist_ptr nv); const vdev_stat_ptr get_vdev_stats(nvlist_ptr nv);
pool_scan_stat_ptr get_vdev_scan_stats(nvlist_t *nv); pool_scan_stat_ptr get_vdev_scan_stats(nvlist_t *nv);
vdev_children_ptr get_vdev_children(nvlist_t *nv); vdev_children_ptr get_vdev_children(nvlist_t *nv);