syscallcompat: getdents: retry on EINTR
Fixes: https://github.com/rfjakob/gocryptfs/issues/483 Related: https://github.com/golang/go/issues/38836
This commit is contained in:
parent
f8ad2ac3e2
commit
25f1727de9
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user