aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/data_node.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-02-16 03:55:24 -0800
committerChris Lu <chris.lu@gmail.com>2021-02-16 03:55:24 -0800
commitcb9cc295184c269da5d4e4028ca29badfa16eec7 (patch)
tree14faec5623ab318668c7df4d6a943187b002e89e /weed/topology/data_node.go
parent3fe628f04e2aa3ac550c670c27d00fcc3fc2e12b (diff)
downloadseaweedfs-cb9cc295184c269da5d4e4028ca29badfa16eec7.tar.xz
seaweedfs-cb9cc295184c269da5d4e4028ca29badfa16eec7.zip
volume.list display; fix updating maxVolumeCount for disk
Diffstat (limited to 'weed/topology/data_node.go')
-rw-r--r--weed/topology/data_node.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/weed/topology/data_node.go b/weed/topology/data_node.go
index 038d87043..ae69534da 100644
--- a/weed/topology/data_node.go
+++ b/weed/topology/data_node.go
@@ -128,6 +128,25 @@ func (dn *DataNode) DeltaUpdateVolumes(newVolumes, deletedVolumes []storage.Volu
return
}
+func (dn *DataNode) AdjustMaxVolumeCounts(maxVolumeCounts map[string]uint32) {
+ deltaDiskUsages := newDiskUsages()
+ for diskType, maxVolumeCount := range maxVolumeCounts {
+ if maxVolumeCount == 0 {
+ // the volume server may have set the max to zero
+ continue
+ }
+ dt := types.ToDiskType(diskType)
+ currentDiskUsage := dn.diskUsages.getOrCreateDisk(dt)
+ if currentDiskUsage.maxVolumeCount == int64(maxVolumeCount) {
+ continue
+ }
+ disk := dn.getOrCreateDisk(dt.String())
+ deltaDiskUsage := deltaDiskUsages.getOrCreateDisk(dt)
+ deltaDiskUsage.maxVolumeCount = int64(maxVolumeCount) - currentDiskUsage.maxVolumeCount
+ disk.UpAdjustDiskUsageDelta(deltaDiskUsages)
+ }
+}
+
func (dn *DataNode) GetVolumes() (ret []storage.VolumeInfo) {
dn.RLock()
for _, c := range dn.children {