Skip to content
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

Clean up after false race fallout #8

Closed
jacobsa opened this issue Apr 1, 2015 · 2 comments
Closed

Clean up after false race fallout #8

jacobsa opened this issue Apr 1, 2015 · 2 comments

Comments

@jacobsa
Copy link
Owner

jacobsa commented Apr 1, 2015

Because of what appears to be a kernel bug, it looks like I was totally confused about the "race" in issue #3. In particular:

  • The kernel guarantees that it will handle request serialization when the user expects it:

AFAIU, kernel fuse never sends next request before getting ACK for
previous one if user expects corresponding operations to be ordered.

  • The fact that the "no msync, munmap before close" test fails when the write sleeps in the background and the flush is allowed to proceed appears to be a bug that was fixed somewhere between 3.13 and 3.16.

To do:

  • Put some forensics in this thread about the bug, etc. Failure output and patches that can reproduce it. (Currently it can be reproduced at a191868279618d6882fe2f3281565bd956b14745, but that may be garbage collected.)
  • Relax the stern warnings in the documentation about request serialization. Both in package fuse and package fuseops. Grep "FlushFileOp", "SyncFileOp", "parallel", "serial", "msyc". Do note the kernel bug, though.
  • When updating the docs, do make sure to still pay attention to what OS X does.
  • Consider making fileSystemServer call each file system method on its own goroutine. Also consider adding a flag-controlled random sleep at the start of the goroutine, to shake out further bugs.
@jacobsa
Copy link
Owner Author

jacobsa commented Apr 1, 2015

Here is a gist containing a patch against dadff5d for reproducing, and output on two old machines (office Linux machine and GCE VM) and one new (GCE VM).

@jacobsa
Copy link
Owner Author

jacobsa commented Apr 1, 2015

Maxim Patlasov points out that the bug was fixed by torvalds/linux@fe38d7d, for 3.15.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant