fix: throw appropriate errors when all disks fail (#13820)

when all disks fail with same error, fail server
startup anyways - we cannot proceed.

fixes #13818
This commit is contained in:
Harshavardhana
2021-12-03 09:25:17 -08:00
committed by GitHub
parent 1df1517449
commit a7c430355a
3 changed files with 48 additions and 6 deletions

View File

@@ -271,10 +271,23 @@ func newXLStorage(ep Endpoint) (*xlStorage, error) {
filePath := pathJoin(p.diskPath, minioMetaTmpBucket, tmpFile)
w, err := OpenFileDirectIO(filePath, os.O_CREATE|os.O_WRONLY|os.O_EXCL, 0666)
if err != nil {
switch {
case isSysErrInvalidArg(err):
return p, errUnsupportedDisk
case osIsPermission(err):
return p, errDiskAccessDenied
case isSysErrIO(err):
return p, errFaultyDisk
case isSysErrNotDir(err):
return p, errDiskNotDir
}
return p, err
}
if _, err = w.Write(alignedBuf); err != nil {
w.Close()
if isSysErrInvalidArg(err) {
return p, errUnsupportedDisk
}
return p, err
}
w.Close()