aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/storage/disk_location_ec.go8
-rw-r--r--weed/storage/store.go2
2 files changed, 7 insertions, 3 deletions
diff --git a/weed/storage/disk_location_ec.go b/weed/storage/disk_location_ec.go
index 6d681d2c2..4050a7930 100644
--- a/weed/storage/disk_location_ec.go
+++ b/weed/storage/disk_location_ec.go
@@ -218,9 +218,13 @@ func (l *DiskLocation) unmountEcVolumeByCollection(collectionName string) map[ne
return deltaVols
}
-func (l *DiskLocation) EcVolumesLen() int {
+func (l *DiskLocation) EcShardCount() int {
l.ecVolumesLock.RLock()
defer l.ecVolumesLock.RUnlock()
- return len(l.ecVolumes)
+ shardCount := 0
+ for _, ecVolume := range l.ecVolumes {
+ shardCount += len(ecVolume.Shards)
+ }
+ return shardCount
}
diff --git a/weed/storage/store.go b/weed/storage/store.go
index 6b4467abc..d290909f1 100644
--- a/weed/storage/store.go
+++ b/weed/storage/store.go
@@ -149,7 +149,7 @@ func (s *Store) FindFreeLocation(diskType DiskType) (ret *DiskLocation) {
}
currentFreeCount := location.MaxVolumeCount - int32(location.VolumesLen())
currentFreeCount *= erasure_coding.DataShardsCount
- currentFreeCount -= int32(location.EcVolumesLen())
+ currentFreeCount -= int32(location.EcShardCount())
currentFreeCount /= erasure_coding.DataShardsCount
if currentFreeCount > max {
max = currentFreeCount