mirror of
https://github.com/minio/minio.git
synced 2025-04-08 21:55:44 -04:00
fix: a crash when disk is nil, safe access on erasureDisks (#11089)
fixes #11088
This commit is contained in:
parent
9adc33efbb
commit
db7890660e
@ -99,12 +99,18 @@ func (z *erasureServerPools) GetDisksID(ids ...string) []StorageAPI {
|
|||||||
idMap[id] = struct{}{}
|
idMap[id] = struct{}{}
|
||||||
}
|
}
|
||||||
res := make([]StorageAPI, 0, len(idMap))
|
res := make([]StorageAPI, 0, len(idMap))
|
||||||
for _, ss := range z.serverPools {
|
for _, s := range z.serverPools {
|
||||||
for _, disks := range ss.erasureDisks {
|
s.erasureDisksMu.RLock()
|
||||||
|
defer s.erasureDisksMu.RUnlock()
|
||||||
|
for _, disks := range s.erasureDisks {
|
||||||
for _, disk := range disks {
|
for _, disk := range disks {
|
||||||
id, _ := disk.GetDiskID()
|
if disk == OfflineDisk {
|
||||||
if _, ok := idMap[id]; ok {
|
continue
|
||||||
res = append(res, disk)
|
}
|
||||||
|
if id, _ := disk.GetDiskID(); id != "" {
|
||||||
|
if _, ok := idMap[id]; ok {
|
||||||
|
res = append(res, disk)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,10 +251,14 @@ func (er erasureObjects) crawlAndGetDataUsage(ctx context.Context, buckets []Buc
|
|||||||
|
|
||||||
// Collect disks for healing.
|
// Collect disks for healing.
|
||||||
allDisks := er.getDisks()
|
allDisks := er.getDisks()
|
||||||
allDiskIDs := make([]string, len(allDisks))
|
allDiskIDs := make([]string, 0, len(allDisks))
|
||||||
for i, disk := range allDisks {
|
for _, disk := range allDisks {
|
||||||
|
if disk == OfflineDisk {
|
||||||
|
// its possible that disk is OfflineDisk
|
||||||
|
continue
|
||||||
|
}
|
||||||
id, _ := disk.GetDiskID()
|
id, _ := disk.GetDiskID()
|
||||||
allDiskIDs[i] = id
|
allDiskIDs = append(allDiskIDs, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load bucket totals
|
// Load bucket totals
|
||||||
|
Loading…
x
Reference in New Issue
Block a user