diff --git a/cmd/admin-handlers.go b/cmd/admin-handlers.go index b56b2bd93..91bc31b84 100644 --- a/cmd/admin-handlers.go +++ b/cmd/admin-handlers.go @@ -1699,6 +1699,7 @@ func getServerInfo(ctx context.Context, r *http.Request) madmin.InfoMessage { buckets := madmin.Buckets{} objects := madmin.Objects{} + versions := madmin.Versions{} usage := madmin.Usage{} objectAPI := newObjectLayerFn() @@ -1710,6 +1711,7 @@ func getServerInfo(ctx context.Context, r *http.Request) madmin.InfoMessage { if err == nil { buckets = madmin.Buckets{Count: dataUsageInfo.BucketsCount} objects = madmin.Objects{Count: dataUsageInfo.ObjectsTotalCount} + versions = madmin.Versions{Count: dataUsageInfo.VersionsTotalCount} usage = madmin.Usage{Size: dataUsageInfo.ObjectsTotalSize} } else { buckets = madmin.Buckets{Error: err.Error()} @@ -1758,6 +1760,7 @@ func getServerInfo(ctx context.Context, r *http.Request) madmin.InfoMessage { DeploymentID: globalDeploymentID, Buckets: buckets, Objects: objects, + Versions: versions, Usage: usage, Services: services, Backend: backend, diff --git a/cmd/data-usage-cache.go b/cmd/data-usage-cache.go index 4e0df290e..644c57b0f 100644 --- a/cmd/data-usage-cache.go +++ b/cmd/data-usage-cache.go @@ -535,12 +535,13 @@ func (d *dataUsageCache) dui(path string, buckets []BucketInfo) DataUsageInfo { } flat := d.flatten(*e) dui := DataUsageInfo{ - LastUpdate: d.Info.LastUpdate, - ObjectsTotalCount: flat.Objects, - ObjectsTotalSize: uint64(flat.Size), - BucketsCount: uint64(len(e.Children)), - BucketsUsage: d.bucketsUsageInfo(buckets), - TierStats: d.tiersUsageInfo(buckets), + LastUpdate: d.Info.LastUpdate, + ObjectsTotalCount: flat.Objects, + VersionsTotalCount: flat.Versions, + ObjectsTotalSize: uint64(flat.Size), + BucketsCount: uint64(len(e.Children)), + BucketsUsage: d.bucketsUsageInfo(buckets), + TierStats: d.tiersUsageInfo(buckets), } return dui } @@ -788,6 +789,7 @@ func (d *dataUsageCache) bucketsUsageInfo(buckets []BucketInfo) map[string]Bucke flat := d.flatten(*e) bui := BucketUsageInfo{ Size: uint64(flat.Size), + VersionsCount: flat.Versions, ObjectsCount: flat.Objects, ObjectSizesHistogram: flat.ObjSizes.toMap(), } diff --git a/cmd/data-usage-utils.go b/cmd/data-usage-utils.go index 5865a0154..e377b7e16 100644 --- a/cmd/data-usage-utils.go +++ b/cmd/data-usage-utils.go @@ -60,6 +60,7 @@ type BucketUsageInfo struct { ObjectsCount uint64 `json:"objectsCount"` ObjectSizesHistogram map[string]uint64 `json:"objectsSizesHistogram"` + VersionsCount uint64 `json:"versionsCount"` ReplicaSize uint64 `json:"objectReplicaTotalSize"` ReplicationInfo map[string]BucketTargetUsageInfo `json:"objectsReplicationInfo"` } @@ -73,6 +74,9 @@ type DataUsageInfo struct { // Objects total count across all buckets ObjectsTotalCount uint64 `json:"objectsCount"` + // Objects total count across all buckets + VersionsTotalCount uint64 `json:"versionsCount"` + // Objects total size across all buckets ObjectsTotalSize uint64 `json:"objectsTotalSize"` ReplicationInfo map[string]BucketTargetUsageInfo `json:"objectsReplicationInfo"` diff --git a/cmd/xl-storage.go b/cmd/xl-storage.go index 4118ceab9..9fb4d2509 100644 --- a/cmd/xl-storage.go +++ b/cmd/xl-storage.go @@ -498,7 +498,7 @@ func (s *xlStorage) NSScanner(ctx context.Context, cache dataUsageCache, updates atomic.AddUint64(&globalScannerStats.accTotalVersions, 1) oi := version.ToObjectInfo(item.bucket, item.objectPath()) sz := item.applyActions(ctx, objAPI, oi, &sizeS) - if !oi.DeleteMarker && sz == oi.Size { + if oi.VersionID != "" && sz == oi.Size { sizeS.versions++ } sizeS.totalSize += sz