cleanup ignored static analysis (#16767)

This commit is contained in:
ferhat elmas
2023-03-06 17:56:10 +01:00
committed by GitHub
parent 3423028713
commit 714283fae2
48 changed files with 182 additions and 261 deletions

View File

@@ -1462,25 +1462,26 @@ func (s *xlStorage) readAllData(ctx context.Context, volumeDir string, filePath
f, err = OpenFile(filePath, readMode, 0o666)
}
if err != nil {
if osIsNotExist(err) {
switch {
case osIsNotExist(err):
// Check if the object doesn't exist because its bucket
// is missing in order to return the correct error.
if err = Access(volumeDir); err != nil && osIsNotExist(err) {
return nil, dmTime, errVolumeNotFound
}
return nil, dmTime, errFileNotFound
} else if osIsPermission(err) {
case osIsPermission(err):
return nil, dmTime, errFileAccessDenied
} else if isSysErrNotDir(err) || isSysErrIsDir(err) {
case isSysErrNotDir(err) || isSysErrIsDir(err):
return nil, dmTime, errFileNotFound
} else if isSysErrHandleInvalid(err) {
case isSysErrHandleInvalid(err):
// This case is special and needs to be handled for windows.
return nil, dmTime, errFileNotFound
} else if isSysErrIO(err) {
case isSysErrIO(err):
return nil, dmTime, errFaultyDisk
} else if isSysErrTooManyFiles(err) {
case isSysErrTooManyFiles(err):
return nil, dmTime, errTooManyOpenFiles
} else if isSysErrInvalidArg(err) {
case isSysErrInvalidArg(err):
st, _ := Lstat(filePath)
if st != nil && st.IsDir() {
// Linux returns InvalidArg for directory O_DIRECT
@@ -1577,14 +1578,7 @@ func (s *xlStorage) ReadFile(ctx context.Context, volume string, path string, of
// Stat a volume entry.
if err = Access(volumeDir); err != nil {
if osIsNotExist(err) {
return 0, errVolumeNotFound
} else if isSysErrIO(err) {
return 0, errFaultyDisk
} else if osIsPermission(err) {
return 0, errFileAccessDenied
}
return 0, err
return 0, convertAccessError(err, errFileAccessDenied)
}
// Validate effective path length before reading.
@@ -1898,14 +1892,15 @@ func (s *xlStorage) writeAllDirect(ctx context.Context, filePath string, fileSiz
defer w.Close()
var bufp *[]byte
if fileSize > 0 && fileSize >= largestFileThreshold {
switch {
case fileSize > 0 && fileSize >= largestFileThreshold:
// use a larger 4MiB buffer for a really large streams.
bufp = xioutil.ODirectPoolXLarge.Get().(*[]byte)
defer xioutil.ODirectPoolXLarge.Put(bufp)
} else if fileSize <= smallFileThreshold {
case fileSize <= smallFileThreshold:
bufp = xioutil.ODirectPoolSmall.Get().(*[]byte)
defer xioutil.ODirectPoolSmall.Put(bufp)
} else {
default:
bufp = xioutil.ODirectPoolLarge.Get().(*[]byte)
defer xioutil.ODirectPoolLarge.Put(bufp)
}
@@ -1989,14 +1984,7 @@ func (s *xlStorage) AppendFile(ctx context.Context, volume string, path string,
// Stat a volume entry.
if err = Access(volumeDir); err != nil {
if osIsNotExist(err) {
return errVolumeNotFound
} else if osIsPermission(err) {
return errVolumeAccessDenied
} else if isSysErrIO(err) {
return errFaultyDisk
}
return err
return convertAccessError(err, errVolumeAccessDenied)
}
filePath := pathJoin(volumeDir, path)
@@ -2127,14 +2115,7 @@ func (s *xlStorage) Delete(ctx context.Context, volume string, path string, dele
// Stat a volume entry.
if err = Access(volumeDir); err != nil {
if osIsNotExist(err) {
return errVolumeNotFound
} else if osIsPermission(err) {
return errVolumeAccessDenied
} else if isSysErrIO(err) {
return errFaultyDisk
}
return err
return convertAccessError(err, errVolumeAccessDenied)
}
// Following code is needed so that we retain SlashSeparator suffix if any in
@@ -2586,14 +2567,7 @@ func (s *xlStorage) VerifyFile(ctx context.Context, volume, path string, fi File
// Stat a volume entry.
if err = Access(volumeDir); err != nil {
if osIsNotExist(err) {
return errVolumeNotFound
} else if isSysErrIO(err) {
return errFaultyDisk
} else if osIsPermission(err) {
return errVolumeAccessDenied
}
return err
return convertAccessError(err, errVolumeAccessDenied)
}
erasure := fi.Erasure
@@ -2691,14 +2665,7 @@ func (s *xlStorage) StatInfoFile(ctx context.Context, volume, path string, glob
// Stat a volume entry.
if err = Access(volumeDir); err != nil {
if osIsNotExist(err) {
return stat, errVolumeNotFound
} else if isSysErrIO(err) {
return stat, errFaultyDisk
} else if osIsPermission(err) {
return stat, errVolumeAccessDenied
}
return stat, err
return stat, convertAccessError(err, errVolumeAccessDenied)
}
files := []string{pathJoin(volumeDir, path)}
if glob {
@@ -2827,3 +2794,16 @@ func (s *xlStorage) CleanAbandonedData(ctx context.Context, volume string, path
}
return nil
}
func convertAccessError(err, permErr error) error {
switch {
case osIsNotExist(err):
return errVolumeNotFound
case isSysErrIO(err):
return errFaultyDisk
case osIsPermission(err):
return permErr
default:
return err
}
}