formatsToDrivesInfo should return drives with correct order (#8157)

This is a defensive change to avoid any future issues,
from this part of the code. New change also ensures
to populate UUID if present for the right disk.
This commit is contained in:
Harshavardhana 2019-08-30 14:11:18 -07:00 committed by GitHub
parent 6b2ed0fc47
commit 42e716a094
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1251,35 +1251,29 @@ fi
*/ */
func formatsToDrivesInfo(endpoints EndpointList, formats []*formatXLV3, sErrs []error) (beforeDrives []madmin.DriveInfo) { func formatsToDrivesInfo(endpoints EndpointList, formats []*formatXLV3, sErrs []error) (beforeDrives []madmin.DriveInfo) {
beforeDrives = make([]madmin.DriveInfo, len(endpoints))
// Existing formats are available (i.e. ok), so save it in // Existing formats are available (i.e. ok), so save it in
// result, also populate disks to be healed. // result, also populate disks to be healed.
for i, format := range formats { for i, format := range formats {
drive := endpoints.GetString(i) drive := endpoints.GetString(i)
var state = madmin.DriveStateCorrupt
switch { switch {
case format != nil: case format != nil:
beforeDrives = append(beforeDrives, madmin.DriveInfo{ state = madmin.DriveStateOk
UUID: format.XL.This,
Endpoint: drive,
State: madmin.DriveStateOk,
})
case sErrs[i] == errUnformattedDisk: case sErrs[i] == errUnformattedDisk:
beforeDrives = append(beforeDrives, madmin.DriveInfo{ state = madmin.DriveStateMissing
UUID: "",
Endpoint: drive,
State: madmin.DriveStateMissing,
})
case sErrs[i] == errDiskNotFound: case sErrs[i] == errDiskNotFound:
beforeDrives = append(beforeDrives, madmin.DriveInfo{ state = madmin.DriveStateOffline
UUID: "", }
Endpoint: drive, beforeDrives[i] = madmin.DriveInfo{
State: madmin.DriveStateOffline, UUID: func() string {
}) if format != nil {
default: return format.XL.This
beforeDrives = append(beforeDrives, madmin.DriveInfo{ }
UUID: "", return ""
Endpoint: drive, }(),
State: madmin.DriveStateCorrupt, Endpoint: drive,
}) State: state,
} }
} }