diff --git a/cmd/errors.go b/cmd/errors.go index 9e5275b3b..b61685af8 100644 --- a/cmd/errors.go +++ b/cmd/errors.go @@ -121,12 +121,15 @@ func errorsCause(errs []error) []error { return cerrs } -var baseIgnoredErrs = []error{ +// Collection of basic errors. +var baseErrs = []error{ errDiskNotFound, errFaultyDisk, errFaultyRemoteDisk, } +var baseIgnoredErrs = baseErrs + // isErrIgnored returns whether given error is ignored or not. func isErrIgnored(err error, ignoredErrs ...error) bool { err = errorCause(err) @@ -137,3 +140,14 @@ func isErrIgnored(err error, ignoredErrs ...error) bool { } return false } + +// isErr returns whether given error is exact error. +func isErr(err error, errs ...error) bool { + err = errorCause(err) + for _, exactErr := range errs { + if err == exactErr { + return true + } + } + return false +} diff --git a/cmd/xl-v1.go b/cmd/xl-v1.go index e6affaa23..b3abfb615 100644 --- a/cmd/xl-v1.go +++ b/cmd/xl-v1.go @@ -169,10 +169,10 @@ func getDisksInfo(disks []StorageAPI) (disksInfo []disk.Info, onlineDisks int, o info, err := storageDisk.DiskInfo() if err != nil { errorIf(err, "Unable to fetch disk info for %#v", storageDisk) - if err == errDiskNotFound { + if isErr(err, baseErrs...) { offlineDisks++ + continue } - continue } onlineDisks++ disksInfo[i] = info