summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/syscallcompat/getdents_linux.go8
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 {