From beed73e03e04777441f29bcee505fb2baab24e7a Mon Sep 17 00:00:00 2001 From: Alexey Kostin Date: Fri, 22 Feb 2019 11:34:55 +0300 Subject: [PATCH] Revert "Struct pointers" This reverts commit b81a43bf --- getosd.go | 50 +++++++++++++++++++++++++++++++++----------------- types.go | 6 +++--- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/getosd.go b/getosd.go index 5e97d1a..6d6734c 100644 --- a/getosd.go +++ b/getosd.go @@ -2,7 +2,6 @@ package main import ( "encoding/json" - "fmt" "log" "strings" ) @@ -93,7 +92,7 @@ func GetCrushHostBuckets(buckets []Bucket, itemid int64) []Bucket { return rootbuckets } -func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDump, poolinfo Poolinfo) map[string]*BenchOsd { +func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDump, poolinfo Poolinfo, osdsmetadata []OsdMetadata) map[string]BenchOsd { var crushrule int64 var crushrulename string for _, pool := range osddump.Pools { @@ -113,8 +112,8 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum } } - osdhosts := make(map[string]*BenchOsd) - var devices []*Device + osdhosts := make(map[string]BenchOsd) + var devices []Device bucketitems := GetCrushHostBuckets(osdcrushdump.Buckets, rootid) if params.define != "" { if strings.HasPrefix(params.define, "osd.") { @@ -122,13 +121,19 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, item := range hostbucket.Items { for _, device := range osdcrushdump.Devices { if device.ID == item.ID && params.define == device.Name { - devices = append(devices, &device) + for _, osdmetadata := range osdsmetadata { + if osdmetadata.ID == device.ID { + device.Info = osdmetadata + } + + } + devices = append(devices, device) } } } if len(devices) != 0 { - osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices} - devices = []*Device{} + osdhosts[hostbucket.Name] = BenchOsd{Osds: devices} + devices = []Device{} } } if len(osdhosts) == 0 { @@ -141,14 +146,20 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, item := range hostbucket.Items { for _, device := range osdcrushdump.Devices { if device.ID == item.ID { - devices = append(devices, &device) + for _, osdmetadata := range osdsmetadata { + if osdmetadata.ID == device.ID { + device.Info = osdmetadata + } + + } + devices = append(devices, device) } } } } if len(devices) != 0 { - osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices} - devices = []*Device{} + osdhosts[hostbucket.Name] = BenchOsd{Osds: devices} + devices = []Device{} } } if len(osdhosts) == 0 { @@ -160,13 +171,19 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, item := range hostbucket.Items { for _, device := range osdcrushdump.Devices { if device.ID == item.ID { - devices = append(devices, &device) + for _, osdmetadata := range osdsmetadata { + if osdmetadata.ID == device.ID { + device.Info = osdmetadata + } + + } + devices = append(devices, device) } } } if len(devices) != 0 { - osdhosts[hostbucket.Name] = &BenchOsd{Osds: devices} - devices = []*Device{} + osdhosts[hostbucket.Name] = BenchOsd{Osds: devices} + devices = []Device{} } } if len(osdhosts) == 0 { @@ -185,7 +202,7 @@ func ContainsPg(pgs []PlacementGroup, i int64) bool { return false } -func GetOsds(cephconn *Cephconnection, params Params) map[string]*BenchOsd { +func GetOsds(cephconn *Cephconnection, params Params) map[string]BenchOsd { poolinfo := GetPoolSize(cephconn, params) if poolinfo.Size != 1 { log.Fatalf("Pool size must be 1. Current size for pool %v is %v. Don't forget that it must be useless pool (not production). Do:\n # ceph osd pool set %v min_size 1\n # ceph osd pool set %v size 1", @@ -194,8 +211,8 @@ func GetOsds(cephconn *Cephconnection, params Params) map[string]*BenchOsd { placementGroups := GetPgByPool(cephconn, params) crushosddump := GetOsdCrushDump(cephconn) osddump := GetOsdDump(cephconn) - //osdsmetadata := GetOsdMetadata(cephconn) - osddevices := GetOsdForLocations(params, crushosddump, osddump, poolinfo) + osdsmetadata := GetOsdMetadata(cephconn) + osddevices := GetOsdForLocations(params, crushosddump, osddump, poolinfo, osdsmetadata) for _, values := range osddevices { for _, item := range values.Osds { if exist := ContainsPg(placementGroups, item.ID); exist == false { @@ -203,6 +220,5 @@ func GetOsds(cephconn *Cephconnection, params Params) map[string]*BenchOsd { } } } - fmt.Printf("%+v", osddevices) return osddevices } diff --git a/types.go b/types.go index bc12311..7182df5 100644 --- a/types.go +++ b/types.go @@ -62,7 +62,7 @@ type Device struct { Class string `json:"class"` ID int64 `json:"id"` Name string `json:"name"` - Info *OsdMetadata + Info OsdMetadata } type OsdCrushDump struct { @@ -375,7 +375,7 @@ type OsdMetadata struct { } type BenchOsd struct { - Osds []*Device + Osds []Device Buffs *[][]byte - Offsets *[]int64 + Offsets []int64 }