File system changes notification
Most of the applications in FreeBSD currently use polling because of limitations of kevent-based file change monitoring (gamin, kde). Kevent approach has the same limitation as Linux' dnotify once had: file or directory should be opened to monitor changes, preventing file system unmounting. I propose to develop a kernel level file system changes notification mechanism for FreeBSD overcoming this limitation.
Milestones
- Very simple notification mechanism. Create user space utility for debugging printing all events. Pass all events to user space, attach to all vnodes on creation
- Create a library based on the utility. Add client sessions, distribute events to all clients. Add main operations to the library (initialization, addition notification, deletion of notification)
- Add cookies to VFS_KNOTE_LOCKED to make several notifications during move or rename part of single operation. Add path caching necessary to return previous path expected by rename and delete operations.
- Clean and test code before mid-term evaluation. Code is to be useful but with limitations.
- Filter events. Attach to vnodes client is interested in. Attach not only on vnode creation but also to already existing vnodes.
- Add access permissions checks. Add sysctl to enable access permissions check. Run benchmark to measure its overhead.
- Ensure source level compatibility with inotify. Interface is to be very similar from the beginning. Reuse tests from linux.
- Add linuxulator support. Linuxulator support is just a wrapper mapping linux' syscalls to native device ioctls.