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

fuse: invalidate kernel page cache when files not changed via fuse #95

Open
sahib opened this issue Feb 11, 2021 · 0 comments
Open

fuse: invalidate kernel page cache when files not changed via fuse #95

sahib opened this issue Feb 11, 2021 · 0 comments
Labels
enhancement Not a bug, it's a new feature or improvement

Comments

@sahib
Copy link
Owner

sahib commented Feb 11, 2021

In the fuse mount we might run in the following situation:

  • User creates file over brig stage /file
  • User reads file over fuse. This will make the kernel cache (parts of) it.
  • User modifies the file over brig stage /file with new data.
  • User reads file over fuse again. This will return the old data coming from the page cache.
  • User waits some time.
  • User reads file over fuse again. This will return the new data.

Similar scenarios can be thought of regarding syncing and using the fuse file system. From my POV this is not critical since the situation resolves itself after a short time. There might be quite a bit of confusion though and also scripting is annoying due to that property.

Whenever a file is staged over catfs (and it's not coming from the fuse layer) then we gonna need to call fuse.InvalidateNodeData() on that particular file to make the kernel forget the cached pages and ask our filesystem for the new content. The implementation should be made in a generic way, to not couple fuse and catfs.


(The issue was originally discovered here: #93)

@sahib sahib added the enhancement Not a bug, it's a new feature or improvement label Feb 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Not a bug, it's a new feature or improvement
Projects
None yet
Development

No branches or pull requests

1 participant