syscallcompat: warn when Getdents truncates data
On CIFS mounts, unix.Getdents can return sudden ENOENT in the middle of data. This will not be reported as an error by user space tools, so return EIO instead. Also log it as a warning. https://github.com/rfjakob/gocryptfs/issues/483
This commit is contained in:
parent
b3350f0ebb
commit
15ff79bf14
@ -42,6 +42,10 @@ func getdents(fd int) ([]fuse.DirEntry, error) {
|
||||
}
|
||||
continue
|
||||
} else if err != nil {
|
||||
if smartBuf.Len() > 0 {
|
||||
tlog.Warn.Printf("warning: unix.Getdents returned errno %d in the middle of data", err.(syscall.Errno))
|
||||
return nil, syscall.EIO
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
if n == 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user