lib/fs: Pass infinite recursion error on instead of warning (#6846)

Prompted by https://forum.syncthing.net/t/infinite-filesystem-recursion-detected/15285. In my opinion the filesystem shouldn't throw warnings but pass on errors for the caller to decide what's to be happening with it. Right now in this PR an infinite recursion is a normal scan error, i.e. folder is in failed state and displays failed items, but no warning. I think that's appropriate but if deemed appropriate an additional warning can be thrown in the scanner.
This commit is contained in:
Simon Frei
2020-07-22 22:10:24 +02:00
committed by GitHub
parent d91d77a2b2
commit ebead944b5
2 changed files with 14 additions and 3 deletions
+4 -2
View File
@@ -11,9 +11,12 @@
package fs
import (
"errors"
"path/filepath"
)
var ErrInfiniteRecursion = errors.New("infinite filesystem recursion detected")
type ancestorDirList struct {
list []FileInfo
fs Filesystem
@@ -90,8 +93,7 @@ func (f *walkFilesystem) walk(path string, info FileInfo, walkFn WalkFunc, ances
ancestors.Push(info)
defer ancestors.Pop()
} else {
l.Warnf("Infinite filesystem recursion detected on path '%s', not walking further down", path)
return nil
return walkFn(path, info, ErrInfiniteRecursion)
}
names, err := f.DirNames(path)