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

mount: Fix input/output errors for canceled syscalls #3875

Merged
merged 2 commits into from Sep 10, 2022

Conversation

MichaelEischer
Copy link
Member

What does this PR change? What problem does it solve?

Accessing restic's fuse mount could result in "input / output" errors for programs in which syscall can be interrupted. This is for example the case for go programs.

bazil/fuse expects us to return context.Canceled to signal that a syscall was successfully interrupted. Returning a wrapped version of that error however causes the fuse library to signal an EIO (input/output error). Thus unwrap context.Canceled errors before returning them.

Was the change previously discussed in an issue or on the forum?

Fixes #3694

Checklist

  • I have read the contribution guidelines.
  • I have enabled maintainer edits.
  • I have added tests for all code changes.
  • [ ] I have added documentation for relevant changes (in the manual).
  • There's a new file in changelog/unreleased/ that describes the changes for our users (see template).
  • I have run gofmt on the code in all commits.
  • All commit messages are formatted in the same style as the other commits in the repo.
  • I'm done! This pull request is ready for review.

bazil/fuse expects us to return context.Canceled to signal that a
syscall was successfully interrupted. Returning a wrapped version of
that error however causes the fuse library to signal an EIO (input/output
error). Thus unwrap context.Canceled errors before returning them.
@MichaelEischer
Copy link
Member Author

Let's merge this. There's only little potential for regressions as the code paths aren't used too often and the basic approach was already tested in #3694.

@MichaelEischer MichaelEischer merged commit be9ccc1 into restic:master Sep 10, 2022
@MichaelEischer MichaelEischer deleted the fix-fuse-context-cancel branch September 10, 2022 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant