Check pool-index for invalid setups (#16501)

This commit is contained in:
Klaus Post
2023-01-30 14:03:07 +01:00
committed by GitHub
parent 67fce4a5b3
commit b923a62425
3 changed files with 20 additions and 0 deletions

View File

@@ -32,6 +32,11 @@ func GetTotalCapacity(diskInfo []madmin.Disk) (capacity uint64) {
// GetTotalUsableCapacity gets the total usable capacity in the cluster.
func GetTotalUsableCapacity(diskInfo []madmin.Disk, s StorageInfo) (capacity uint64) {
for _, disk := range diskInfo {
// Ignore invalid.
if disk.PoolIndex < 0 || len(s.Backend.StandardSCData) <= disk.PoolIndex {
// https://github.com/minio/minio/issues/16500
continue
}
// Ignore parity disks
if disk.DiskIndex < s.Backend.StandardSCData[disk.PoolIndex] {
capacity += disk.TotalSpace
@@ -51,6 +56,11 @@ func GetTotalCapacityFree(diskInfo []madmin.Disk) (capacity uint64) {
// GetTotalUsableCapacityFree gets the total usable capacity free in the cluster.
func GetTotalUsableCapacityFree(diskInfo []madmin.Disk, s StorageInfo) (capacity uint64) {
for _, disk := range diskInfo {
// Ignore invalid.
if disk.PoolIndex < 0 || len(s.Backend.StandardSCData) <= disk.PoolIndex {
// https://github.com/minio/minio/issues/16500
continue
}
// Ignore parity disks
if disk.DiskIndex < s.Backend.StandardSCData[disk.PoolIndex] {
capacity += disk.AvailableSpace