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 { | 
