-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
os: Readdirnames throws errors on CIFS #39237
Comments
This seems like the same issue as #38836. Is it possible for you to check whether the problem is fixed on master? Thanks. |
Yes can do. Looks the same on master:
|
I posted a summary of the issue to linux-cifs and linux-kernel a few day ago: No reply yet, but I'm pretty sure now that this is a kernel bug. Does it make sense to keep this ticket open for tracking the issue? |
@gopherbot remove WaitingForInfo |
Change https://golang.org/cl/236997 mentions this issue: |
I'm going to add a check for |
Nice, that should fix the
|
For #11180 For #20400 For #39237 Change-Id: I8de97517c8f92c08f0c8a51f651a17e31617979b Reviewed-on: https://go-review.googlesource.com/c/go/+/236997 Reviewed-by: Bryan C. Mills <[email protected]>
Quite right, sorry, it will only fix the problem with |
For golang#11180 For golang#20400 For golang#39237 Change-Id: I8de97517c8f92c08f0c8a51f651a17e31617979b Reviewed-on: https://go-review.googlesource.com/c/go/+/236997 Reviewed-by: Bryan C. Mills <[email protected]> (cherry picked from commit e64675a)
Rclone users have been having the same problem (see forum) Using go1.15rc1 appears to fix the EINTR errors but does not fix the ENOENT errors. Using So I guess CIFS is incorrectly returning ENOENT instead of EINTR on receipt of a signal? @rfjakob did you get anywhere with trying to report this to the CIFS developers or upstream? I don't see any replies to your message. |
Hi, no, I did not get any response to my posting, unfortunately. I don't really know what going on inside CIFS, but from the debug log I got out of the kernel, this line looks like something goes wrong internally:
I don't understand why this does not happen with a C program. I can hammer getdents.c with SIGWINCH signals as much as I want, but I don't get ENOENT errors.
|
The Go runtime uses SIGURG (I believe), so perhaps that's what's tripping CIFS? |
Note that an |
We are often seeing this happening in our system when closing an open File located in mounted Azure File Share(which I believe is CISF system). Our go version is 1.15.x which according this kubernetes/kubernetes#92521 would have the fixed for it. Now, I confuse whether to use export |
@meetme2meat, can you create a new issue describing your problem, with directions to reproduce it and the error results that you're seeing? |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
Run readdirnames.go against a cifs mount:
Mount info:
Linux kernel:
What did you expect to see?
No errors, consistent results, like from the C program getdents.c
What did you see instead?
readdirnames.go :
The problem is easier to trigger when the terminal window is continously resized (this triggers SIGWINCH signals).
This is problably the same underlying issue as in #24015 , and I agree that it looks like a kernel bug.
However, the C program seems to handle this fine, even with window resizing stress. So if glibc has workarounds for this, maybe Go should have them as well.
Downstream issue: rfjakob/gocryptfs#483
The text was updated successfully, but these errors were encountered: