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

Any plan to support inotify? #76

Open
marxangels opened this issue Mar 31, 2019 · 1 comment
Open

Any plan to support inotify? #76

marxangels opened this issue Mar 31, 2019 · 1 comment
Labels

Comments

@marxangels
Copy link

inotify with NFS

@paulmillar
Copy link
Member

Short answer: no, because it's currently not possible and requires considerable work.

Longer answer: there are some big problems that would need to be solved.

First, inotify works in the Linux VFS layer. This means that the filesystem has no knowledge that a file or directory is being watched. If some code were to watch a directory within the mount-point then the linux kernel NFS client would be unaware of this. Fixing this is certainly possible; some ideas are already being explored for FUSE in the Fsnotify project; however, in general, this problem is a long way from being solved.

Second, (to the best of my knowledge) the NFS protocol currently does not provide support anything like the rich API of inotify. There's no concept of adding a watch or receiving inotify events. There are some useful concepts already within NFS 4 (e.g., callbacks) that I believe could be used to build an inotify-like protocol extension; however, there is currently no NFS extension that works out-of-the-box. The challenge is for that extension to provide platform agnostic notification that would work for different platforms (Linux, Windows, Mac, etc.) both as the client and as the server. Therefore, this NFS extension would very likely NOT be inotify, but hopefully something that provides broadly similar semantics.

Finally, even if the first and second problems are solved (both of which have remained unsolved for quite a while), there would need to be work done to update the Linux NFS client implementation so that it supported the NFS inotify extension, and supporting the Linux kernel's FS-level inotify.

Some other things to mention:

  1. dCache (a major project using nfs4j) does provides inotify support. This is only available via HTTP. dCache uses a (proprietary) REST API to manage the watches and Server-Sent Events (SSE) to deliver inotify events. Combined, this gives clients the equivalent functionality to inotify albeit with a somewhat non-standard transport.

  2. FAM is one cited solution to this problem. FAM provides its own network protocol, where the server (famd) accept watch requests for a client and relays the response. Apparently, the combination of famd and an NFS mount allows FAM clients to discover changes to the (remote) NFS filesystem. However, this solution is not ideal as it requires clients to link against FAM (i.e., the clients are not using inotify), and there are questions about the performance impact of FAM.

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

No branches or pull requests

3 participants