diff --git a/ceph-gobench.go b/ceph-gobench.go index 19fa916..c7b07b1 100644 --- a/ceph-gobench.go +++ b/ceph-gobench.go @@ -40,7 +40,7 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf for i := 0; i < int(params.threadsCount); i++ { go BenchThread(cephconn, osddevice, (*buffs)[i*2:i*2+2], params, threadresult, objectnames[i*16:i*16+16]) } - for i := int64(0); i < params.threadsCount; i++ { + for i := uint64(0); i < params.threadsCount; i++ { for _, lat := range <-threadresult { osdlatencies = append(osdlatencies, lat) } @@ -178,7 +178,7 @@ func BenchThread(cephconn *Cephconnection, osddevice Device, buffs [][]byte, par endtime := starttime.Add(params.duration) n := 0 for { - offset := rand.Int63n(params.objectsize/params.blocksize) * params.blocksize + offset := rand.Int63n(int64(params.objectsize/params.blocksize)) * int64(params.blocksize) objname := objnames[rand.Int31n(int32(len(objnames)))] startwritetime := time.Now() if startwritetime.After(endtime) { @@ -209,7 +209,7 @@ func main() { time.Sleep(time.Millisecond * 100) var buffs [][]byte - for i := int64(0); i < 2*params.threadsCount; i++ { + for i := uint64(0); i < 2*params.threadsCount; i++ { buffs = append(buffs, make([]byte, params.blocksize)) } startbuff := make([]byte, params.blocksize) @@ -234,7 +234,7 @@ func main() { } - if params.parallel == true { //todo make flag prepare, check objects + if params.parallel == true { go func() { wg.Wait() close(results) diff --git a/flags.go b/flags.go index 2528f7f..f4cb615 100644 --- a/flags.go +++ b/flags.go @@ -44,9 +44,9 @@ func Route() Params { "Ceph pool") gnuflag.StringVar(¶ms.define, "define", "", "Define specifically osd or host. osd.X or ceph-host-X") - gnuflag.Int64Var(¶ms.threadsCount, "threads", 1, + gnuflag.Uint64Var(¶ms.threadsCount, "threads", 1, "Threads count") - gnuflag.Int64Var(¶ms.threadsCount, "t", 1, + gnuflag.Uint64Var(¶ms.threadsCount, "t", 1, "Threads count on each osd") gnuflag.BoolVar(¶ms.parallel, "parallel", false, "Do test all osd in parallel mode") @@ -58,14 +58,14 @@ func Route() Params { } } blocksize, err := bytefmt.ToBytes(params.bs) - params.blocksize = int64(blocksize) + params.blocksize = blocksize if err != nil { log.Println("Can't convert defined block size. 4K block size will be used") params.blocksize = 4096 } objsize, err := bytefmt.ToBytes(params.os) - params.objectsize = int64(objsize) + params.objectsize = objsize if err != nil { log.Println("Can't convert defined block size. 4K block size will be used") params.objectsize = 4194304 diff --git a/getosd.go b/getosd.go index 77d4d42..cd8a62b 100644 --- a/getosd.go +++ b/getosd.go @@ -114,14 +114,13 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum } } } - osdstats := map[int64]*Osd{} + osdstats := map[uint64]*Osd{} for num, stat := range osddump.Osds { osdstats[stat.Osd] = &osddump.Osds[num] } - osddevices := []Device{} + var osddevices []Device bucketitems := GetCrushHostBuckets(osdcrushdump.Buckets, rootid) - //todo check osd up and in if params.define != "" { if strings.HasPrefix(params.define, "osd.") { for _, hostbucket := range bucketitems { @@ -129,7 +128,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, device := range osdcrushdump.Devices { if device.ID == item.ID && params.define == device.Name { for _, osdmetadata := range osdsmetadata { - if osdmetadata.ID == device.ID && osdstats[device.ID].Up == 1 && osdstats[device.ID].In == 1 { + if osdmetadata.ID == device.ID && osdstats[uint64(device.ID)].Up == 1 && osdstats[uint64(device.ID)].In == 1 { device.Info = osdmetadata osddevices = append(osddevices, device) } @@ -149,7 +148,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, device := range osdcrushdump.Devices { if device.ID == item.ID { for _, osdmetadata := range osdsmetadata { - if osdmetadata.ID == device.ID && osdstats[device.ID].Up == 1 && osdstats[device.ID].In == 1 { + if osdmetadata.ID == device.ID && osdstats[uint64(device.ID)].Up == 1 && osdstats[uint64(device.ID)].In == 1 { device.Info = osdmetadata osddevices = append(osddevices, device) } @@ -170,7 +169,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum for _, device := range osdcrushdump.Devices { if device.ID == item.ID { for _, osdmetadata := range osdsmetadata { - if osdmetadata.ID == device.ID && osdstats[device.ID].Up == 1 && osdstats[device.ID].In == 1 { + if osdmetadata.ID == device.ID && osdstats[uint64(device.ID)].Up == 1 && osdstats[uint64(device.ID)].In == 1 { device.Info = osdmetadata osddevices = append(osddevices, device) } diff --git a/types.go b/types.go index 552eed4..cad48b2 100644 --- a/types.go +++ b/types.go @@ -7,8 +7,8 @@ import ( type Params struct { duration time.Duration - threadsCount int64 - blocksize, objectsize int64 + threadsCount uint64 + blocksize, objectsize uint64 parallel bool bs, os, cluster, user, keyring, config, pool, mode, define string } @@ -20,8 +20,8 @@ type Cephconnection struct { type Poolinfo struct { Pool string `json:"pool,omitempty"` - PoolId int64 `json:"pool_id,omitempty"` - Size int64 `json:"size,omitempty"` + PoolId uint64 `json:"pool_id,omitempty"` + Size uint64 `json:"size,omitempty"` } func (times *PlacementGroup) StringsToTimes() { @@ -49,7 +49,7 @@ type Bucket struct { ID int64 `json:"id"` Items []struct { ID int64 `json:"id"` - Pos int64 `json:"pos"` + Pos uint64 `json:"pos"` Weight float64 `json:"weight"` } `json:"items"` Name string `json:"name"` @@ -70,8 +70,8 @@ type OsdCrushDump struct { ChooseArgs struct{} `json:"choose_args"` Devices []Device `json:"devices"` Rules []struct { - MaxSize int64 `json:"max_size"` - MinSize int64 `json:"min_size"` + MaxSize uint64 `json:"max_size"` + MinSize uint64 `json:"min_size"` RuleID int64 `json:"rule_id"` RuleName string `json:"rule_name"` Ruleset int64 `json:"ruleset"` @@ -82,43 +82,61 @@ type OsdCrushDump struct { Op string `json:"op"` Type string `json:"type"` } `json:"steps"` - Type int64 `json:"type"` + Type uint64 `json:"type"` } `json:"rules"` Tunables struct { - AllowedBucketAlgs int64 `json:"allowed_bucket_algs"` - ChooseLocalFallbackTries int64 `json:"choose_local_fallback_tries"` - ChooseLocalTries int64 `json:"choose_local_tries"` - ChooseTotalTries int64 `json:"choose_total_tries"` - ChooseleafDescendOnce int64 `json:"chooseleaf_descend_once"` - ChooseleafStable int64 `json:"chooseleaf_stable"` - ChooseleafVaryR int64 `json:"chooseleaf_vary_r"` - HasV2Rules int64 `json:"has_v2_rules"` - HasV3Rules int64 `json:"has_v3_rules"` - HasV4Buckets int64 `json:"has_v4_buckets"` - HasV5Rules int64 `json:"has_v5_rules"` - LegacyTunables int64 `json:"legacy_tunables"` + AllowedBucketAlgs uint64 `json:"allowed_bucket_algs"` + ChooseLocalFallbackTries uint64 `json:"choose_local_fallback_tries"` + ChooseLocalTries uint64 `json:"choose_local_tries"` + ChooseTotalTries uint64 `json:"choose_total_tries"` + ChooseleafDescendOnce uint64 `json:"chooseleaf_descend_once"` + ChooseleafStable uint64 `json:"chooseleaf_stable"` + ChooseleafVaryR uint64 `json:"chooseleaf_vary_r"` + HasV2Rules uint64 `json:"has_v2_rules"` + HasV3Rules uint64 `json:"has_v3_rules"` + HasV4Buckets uint64 `json:"has_v4_buckets"` + HasV5Rules uint64 `json:"has_v5_rules"` + LegacyTunables uint64 `json:"legacy_tunables"` MinimumRequiredVersion string `json:"minimum_required_version"` - OptimalTunables int64 `json:"optimal_tunables"` + OptimalTunables uint64 `json:"optimal_tunables"` Profile string `json:"profile"` - RequireFeatureTunables int64 `json:"require_feature_tunables"` - RequireFeatureTunables2 int64 `json:"require_feature_tunables2"` - RequireFeatureTunables3 int64 `json:"require_feature_tunables3"` - RequireFeatureTunables5 int64 `json:"require_feature_tunables5"` - StrawCalcVersion int64 `json:"straw_calc_version"` + RequireFeatureTunables uint64 `json:"require_feature_tunables"` + RequireFeatureTunables2 uint64 `json:"require_feature_tunables2"` + RequireFeatureTunables3 uint64 `json:"require_feature_tunables3"` + RequireFeatureTunables5 uint64 `json:"require_feature_tunables5"` + StrawCalcVersion uint64 `json:"straw_calc_version"` } `json:"tunables"` Types []struct { Name string `json:"name"` TypeID int64 `json:"type_id"` } `json:"types"` } - +type Osd struct { + ClusterAddr string `json:"cluster_addr"` + DownAt uint64 `json:"down_at"` + HeartbeatBackAddr string `json:"heartbeat_back_addr"` + HeartbeatFrontAddr string `json:"heartbeat_front_addr"` + In uint64 `json:"in"` + LastCleanBegin uint64 `json:"last_clean_begin"` + LastCleanEnd uint64 `json:"last_clean_end"` + LostAt uint64 `json:"lost_at"` + Osd uint64 `json:"osd"` + PrimaryAffinity float64 `json:"primary_affinity"` + PublicAddr string `json:"public_addr"` + State []string `json:"state"` + Up uint64 `json:"up"` + UpFrom uint64 `json:"up_from"` + UpThru uint64 `json:"up_thru"` + UUID string `json:"uuid"` + Weight float64 `json:"weight"` +} type OsdDump struct { BackfillfullRatio float64 `json:"backfillfull_ratio"` Blacklist struct{} `json:"blacklist"` ClusterSnapshot string `json:"cluster_snapshot"` Created string `json:"created"` - CrushVersion int64 `json:"crush_version"` - Epoch int64 `json:"epoch"` + CrushVersion uint64 `json:"crush_version"` + Epoch uint64 `json:"epoch"` ErasureCodeProfiles struct { Default struct { K string `json:"k"` @@ -128,11 +146,11 @@ type OsdDump struct { } `json:"default"` } `json:"erasure_code_profiles"` Flags string `json:"flags"` - FlagsNum int64 `json:"flags_num"` + FlagsNum uint64 `json:"flags_num"` FlagsSet []string `json:"flags_set"` Fsid string `json:"fsid"` FullRatio float64 `json:"full_ratio"` - MaxOsd int64 `json:"max_osd"` + MaxOsd uint64 `json:"max_osd"` MinCompatClient string `json:"min_compat_client"` Modified string `json:"modified"` NearfullRatio float64 `json:"nearfull_ratio"` @@ -140,89 +158,71 @@ type OsdDump struct { NewRemovedSnaps []interface{} `json:"new_removed_snaps"` OsdXinfo []struct { DownStamp string `json:"down_stamp"` - Features int64 `json:"features"` - LaggyInterval int64 `json:"laggy_interval"` + Features uint64 `json:"features"` + LaggyInterval uint64 `json:"laggy_interval"` LaggyProbability float64 `json:"laggy_probability"` OldWeight float64 `json:"old_weight"` - Osd int64 `json:"osd"` + Osd uint64 `json:"osd"` } `json:"osd_xinfo"` - Osds []struct { - ClusterAddr string `json:"cluster_addr"` - DownAt int64 `json:"down_at"` - HeartbeatBackAddr string `json:"heartbeat_back_addr"` - HeartbeatFrontAddr string `json:"heartbeat_front_addr"` - In int64 `json:"in"` - LastCleanBegin int64 `json:"last_clean_begin"` - LastCleanEnd int64 `json:"last_clean_end"` - LostAt int64 `json:"lost_at"` - Osd int64 `json:"osd"` - PrimaryAffinity float64 `json:"primary_affinity"` - PublicAddr string `json:"public_addr"` - State []string `json:"state"` - Up int64 `json:"up"` - UpFrom int64 `json:"up_from"` - UpThru int64 `json:"up_thru"` - UUID string `json:"uuid"` - Weight float64 `json:"weight"` - } `json:"osds"` + Osds []Osd `json:"osds"` PgTemp []interface{} `json:"pg_temp"` PgUpmap []interface{} `json:"pg_upmap"` PgUpmapItems []interface{} `json:"pg_upmap_items"` - PoolMax int64 `json:"pool_max"` + PoolMax uint64 `json:"pool_max"` Pools []struct { ApplicationMetadata struct { Rbd struct{} `json:"rbd"` Rgw struct{} `json:"rgw"` } `json:"application_metadata"` - Auid int64 `json:"auid"` - CacheMinEvictAge int64 `json:"cache_min_evict_age"` - CacheMinFlushAge int64 `json:"cache_min_flush_age"` + Auid uint64 `json:"auid"` + CacheMinEvictAge uint64 `json:"cache_min_evict_age"` + CacheMinFlushAge uint64 `json:"cache_min_flush_age"` CacheMode string `json:"cache_mode"` - CacheTargetDirtyHighRatioMicro int64 `json:"cache_target_dirty_high_ratio_micro"` - CacheTargetDirtyRatioMicro int64 `json:"cache_target_dirty_ratio_micro"` - CacheTargetFullRatioMicro int64 `json:"cache_target_full_ratio_micro"` + CacheTargetDirtyHighRatioMicro uint64 `json:"cache_target_dirty_high_ratio_micro"` + CacheTargetDirtyRatioMicro uint64 `json:"cache_target_dirty_ratio_micro"` + CacheTargetFullRatioMicro uint64 `json:"cache_target_full_ratio_micro"` CreateTime string `json:"create_time"` CrushRule int64 `json:"crush_rule"` ErasureCodeProfile string `json:"erasure_code_profile"` - ExpectedNumObjects int64 `json:"expected_num_objects"` + ExpectedNumObjects uint64 `json:"expected_num_objects"` FastRead bool `json:"fast_read"` - Flags int64 `json:"flags"` + Flags uint64 `json:"flags"` FlagsNames string `json:"flags_names"` GradeTable []interface{} `json:"grade_table"` - HitSetCount int64 `json:"hit_set_count"` - HitSetGradeDecayRate int64 `json:"hit_set_grade_decay_rate"` + HitSetCount uint64 `json:"hit_set_count"` + HitSetGradeDecayRate uint64 `json:"hit_set_grade_decay_rate"` HitSetParams struct { Type string `json:"type"` } `json:"hit_set_params"` - HitSetPeriod int64 `json:"hit_set_period"` - HitSetSearchLastN int64 `json:"hit_set_search_last_n"` + HitSetPeriod uint64 `json:"hit_set_period"` + HitSetSearchLastN uint64 `json:"hit_set_search_last_n"` LastChange string `json:"last_change"` LastForceOpResend string `json:"last_force_op_resend"` LastForceOpResendPreluminous string `json:"last_force_op_resend_preluminous"` - MinReadRecencyForPromote int64 `json:"min_read_recency_for_promote"` - MinSize int64 `json:"min_size"` - MinWriteRecencyForPromote int64 `json:"min_write_recency_for_promote"` - ObjectHash int64 `json:"object_hash"` + MinReadRecencyForPromote uint64 `json:"min_read_recency_for_promote"` + MinSize uint64 `json:"min_size"` + MinWriteRecencyForPromote uint64 `json:"min_write_recency_for_promote"` + ObjectHash uint64 `json:"object_hash"` Options struct{} `json:"options"` - PgNum int64 `json:"pg_num"` - PgPlacementNum int64 `json:"pg_placement_num"` - Pool int64 `json:"pool"` + PgNum uint64 `json:"pg_num"` + PgPlacementNum uint64 `json:"pg_placement_num"` + Pool uint64 `json:"pool"` PoolName string `json:"pool_name"` PoolSnaps []interface{} `json:"pool_snaps"` - QuotaMaxBytes int64 `json:"quota_max_bytes"` - QuotaMaxObjects int64 `json:"quota_max_objects"` + QuotaMaxBytes uint64 `json:"quota_max_bytes"` + QuotaMaxObjects uint64 `json:"quota_max_objects"` ReadTier int64 `json:"read_tier"` RemovedSnaps string `json:"removed_snaps"` - Size int64 `json:"size"` - SnapEpoch int64 `json:"snap_epoch"` + Size uint64 `json:"size"` + SnapEpoch uint64 `json:"snap_epoch"` SnapMode string `json:"snap_mode"` - SnapSeq int64 `json:"snap_seq"` - StripeWidth int64 `json:"stripe_width"` - TargetMaxBytes int64 `json:"target_max_bytes"` - TargetMaxObjects int64 `json:"target_max_objects"` + SnapSeq uint64 `json:"snap_seq"` + StripeWidth uint64 `json:"stripe_width"` + TargetMaxBytes uint64 `json:"target_max_bytes"` + TargetMaxObjects uint64 `json:"target_max_objects"` TierOf int64 `json:"tier_of"` Tiers []interface{} `json:"tiers"` - Type int64 `json:"type"` + Type uint64 `json:"type"` UseGmtHitset bool `json:"use_gmt_hitset"` WriteTier int64 `json:"write_tier"` } `json:"pools"` @@ -233,10 +233,10 @@ type OsdDump struct { } type PlacementGroup struct { - Acting []int64 `json:"acting"` + Acting []uint64 `json:"acting"` ActingPrimary int64 `json:"acting_primary"` BlockedBy []interface{} `json:"blocked_by"` - Created int64 `json:"created"` + Created uint64 `json:"created"` DirtyStatsInvalid bool `json:"dirty_stats_invalid"` HitsetBytesStatsInvalid bool `json:"hitset_bytes_stats_invalid"` HitsetStatsInvalid bool `json:"hitset_stats_invalid"` @@ -256,7 +256,7 @@ type PlacementGroup struct { LastDeepScrubT time.Time LastDeepScrubStamp string `json:"last_deep_scrub_stamp"` LastDeepScrubStampT time.Time - LastEpochClean int64 `json:"last_epoch_clean"` + LastEpochClean uint64 `json:"last_epoch_clean"` LastFresh string `json:"last_fresh"` LastFreshT time.Time LastFullsized string `json:"last_fullsized"` @@ -271,65 +271,65 @@ type PlacementGroup struct { LastUndegradedT time.Time LastUnstale string `json:"last_unstale"` LastUnstaleT time.Time - LogSize int64 `json:"log_size"` + LogSize uint64 `json:"log_size"` LogStart string `json:"log_start"` ManifestStatsInvalid bool `json:"manifest_stats_invalid"` - MappingEpoch int64 `json:"mapping_epoch"` + MappingEpoch uint64 `json:"mapping_epoch"` OmapStatsInvalid bool `json:"omap_stats_invalid"` - OndiskLogSize int64 `json:"ondisk_log_size"` + OndiskLogSize uint64 `json:"ondisk_log_size"` OndiskLogStart string `json:"ondisk_log_start"` Parent string `json:"parent"` - ParentSplitBits int64 `json:"parent_split_bits"` + ParentSplitBits uint64 `json:"parent_split_bits"` Pgid string `json:"pgid"` PinStatsInvalid bool `json:"pin_stats_invalid"` PurgedSnaps []interface{} `json:"purged_snaps"` ReportedEpoch string `json:"reported_epoch"` ReportedSeq string `json:"reported_seq"` - SnaptrimqLen int64 `json:"snaptrimq_len"` + SnaptrimqLen uint64 `json:"snaptrimq_len"` StatSum struct { - NumBytes int64 `json:"num_bytes"` - NumBytesHitSetArchive int64 `json:"num_bytes_hit_set_archive"` - NumBytesRecovered int64 `json:"num_bytes_recovered"` - NumDeepScrubErrors int64 `json:"num_deep_scrub_errors"` - NumEvict int64 `json:"num_evict"` - NumEvictKb int64 `json:"num_evict_kb"` - NumEvictModeFull int64 `json:"num_evict_mode_full"` - NumEvictModeSome int64 `json:"num_evict_mode_some"` - NumFlush int64 `json:"num_flush"` - NumFlushKb int64 `json:"num_flush_kb"` - NumFlushModeHigh int64 `json:"num_flush_mode_high"` - NumFlushModeLow int64 `json:"num_flush_mode_low"` - NumKeysRecovered int64 `json:"num_keys_recovered"` - NumLargeOmapObjects int64 `json:"num_large_omap_objects"` - NumLegacySnapsets int64 `json:"num_legacy_snapsets"` - NumObjectClones int64 `json:"num_object_clones"` - NumObjectCopies int64 `json:"num_object_copies"` - NumObjects int64 `json:"num_objects"` - NumObjectsDegraded int64 `json:"num_objects_degraded"` - NumObjectsDirty int64 `json:"num_objects_dirty"` - NumObjectsHitSetArchive int64 `json:"num_objects_hit_set_archive"` - NumObjectsManifest int64 `json:"num_objects_manifest"` - NumObjectsMisplaced int64 `json:"num_objects_misplaced"` - NumObjectsMissing int64 `json:"num_objects_missing"` - NumObjectsMissingOnPrimary int64 `json:"num_objects_missing_on_primary"` - NumObjectsOmap int64 `json:"num_objects_omap"` - NumObjectsPinned int64 `json:"num_objects_pinned"` - NumObjectsRecovered int64 `json:"num_objects_recovered"` - NumObjectsUnfound int64 `json:"num_objects_unfound"` - NumPromote int64 `json:"num_promote"` - NumRead int64 `json:"num_read"` - NumReadKb int64 `json:"num_read_kb"` - NumScrubErrors int64 `json:"num_scrub_errors"` - NumShallowScrubErrors int64 `json:"num_shallow_scrub_errors"` - NumWhiteouts int64 `json:"num_whiteouts"` - NumWrite int64 `json:"num_write"` - NumWriteKb int64 `json:"num_write_kb"` + NumBytes uint64 `json:"num_bytes"` + NumBytesHitSetArchive uint64 `json:"num_bytes_hit_set_archive"` + NumBytesRecovered uint64 `json:"num_bytes_recovered"` + NumDeepScrubErrors uint64 `json:"num_deep_scrub_errors"` + NumEvict uint64 `json:"num_evict"` + NumEvictKb uint64 `json:"num_evict_kb"` + NumEvictModeFull uint64 `json:"num_evict_mode_full"` + NumEvictModeSome uint64 `json:"num_evict_mode_some"` + NumFlush uint64 `json:"num_flush"` + NumFlushKb uint64 `json:"num_flush_kb"` + NumFlushModeHigh uint64 `json:"num_flush_mode_high"` + NumFlushModeLow uint64 `json:"num_flush_mode_low"` + NumKeysRecovered uint64 `json:"num_keys_recovered"` + NumLargeOmapObjects uint64 `json:"num_large_omap_objects"` + NumLegacySnapsets uint64 `json:"num_legacy_snapsets"` + NumObjectClones uint64 `json:"num_object_clones"` + NumObjectCopies uint64 `json:"num_object_copies"` + NumObjects uint64 `json:"num_objects"` + NumObjectsDegraded uint64 `json:"num_objects_degraded"` + NumObjectsDirty uint64 `json:"num_objects_dirty"` + NumObjectsHitSetArchive uint64 `json:"num_objects_hit_set_archive"` + NumObjectsManifest uint64 `json:"num_objects_manifest"` + NumObjectsMisplaced uint64 `json:"num_objects_misplaced"` + NumObjectsMissing uint64 `json:"num_objects_missing"` + NumObjectsMissingOnPrimary uint64 `json:"num_objects_missing_on_primary"` + NumObjectsOmap uint64 `json:"num_objects_omap"` + NumObjectsPinned uint64 `json:"num_objects_pinned"` + NumObjectsRecovered uint64 `json:"num_objects_recovered"` + NumObjectsUnfound uint64 `json:"num_objects_unfound"` + NumPromote uint64 `json:"num_promote"` + NumRead uint64 `json:"num_read"` + NumReadKb uint64 `json:"num_read_kb"` + NumScrubErrors uint64 `json:"num_scrub_errors"` + NumShallowScrubErrors uint64 `json:"num_shallow_scrub_errors"` + NumWhiteouts uint64 `json:"num_whiteouts"` + NumWrite uint64 `json:"num_write"` + NumWriteKb uint64 `json:"num_write_kb"` } `json:"stat_sum"` - State string `json:"state"` - StatsInvalid bool `json:"stats_invalid"` - Up []int64 `json:"up"` - UpPrimary int64 `json:"up_primary"` - Version string `json:"version"` + State string `json:"state"` + StatsInvalid bool `json:"stats_invalid"` + Up []uint64 `json:"up"` + UpPrimary int64 `json:"up_primary"` + Version string `json:"version"` } type OsdMetadata struct { @@ -375,16 +375,14 @@ type OsdMetadata struct { } type OsdMap struct { - Acting []int64 `json:"acting"` - ActingPrimary int64 `json:"acting_primary"` - Epoch int64 `json:"epoch"` - Objname string `json:"objname"` - Pgid string `json:"pgid"` - Pool string `json:"pool"` - PoolID int64 `json:"pool_id"` - RawPgid string `json:"raw_pgid"` - Up []int64 `json:"up"` - UpPrimary int64 `json:"up_primary"` + Acting []uint64 `json:"acting"` + ActingPrimary uint64 `json:"acting_primary"` + Epoch uint64 `json:"epoch"` + Objname string `json:"objname"` + Pgid string `json:"pgid"` + Pool string `json:"pool"` + PoolID uint64 `json:"pool_id"` + RawPgid string `json:"raw_pgid"` + Up []uint64 `json:"up"` + UpPrimary int64 `json:"up_primary"` } - -//todo check types (int64 -> uint64)