diff options
-rw-r--r-- | internal/syscallcompat/getdents_linux.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/internal/syscallcompat/getdents_linux.go b/internal/syscallcompat/getdents_linux.go index 2674cb3..6cfb033 100644 --- a/internal/syscallcompat/getdents_linux.go +++ b/internal/syscallcompat/getdents_linux.go @@ -35,7 +35,13 @@ func getdents(fd int) ([]fuse.DirEntry, error) { tmp := make([]byte, 10000) for { n, err := unix.Getdents(fd, tmp) - if err != nil { + // unix.Getdents has been observed to return EINTR on cifs mounts + if err == unix.EINTR { + if n > 0 { + smartBuf.Write(tmp[:n]) + } + continue + } else if err != nil { return nil, err } if n == 0 { |