dnotify
dnotify is a file system event monitor for the Linux kernel, one of the subfeatures of the fcntl call. It was introduced in the 2.4 kernel series.[1] It has been obsoleted by inotify, but will be retained for compatibility reasons.
Its function is essentially an extension to filesystems to notice changes to the filesystem, and report those changes to applications. Instead of application checking for changes to filesystem, application can register to be notified by kernel when changes to filesystem occur. Application can select directories to monitor and types of changes to be notified for.
One major use is in desktop search utilities like Beagle, where its functionality permits reindexing of changed files without scanning the filesystem for changes every few minutes, which would be very inefficient. By being told that a file has changed directly by the kernel, rather than actively looking, Beagle and such utilities can achieve change-to-reindexing times of only about a second, with very small performance hits (dnotify therefore enables the use of such programs in a sensible manner; daemons are generally not accepted by distributors if they drain system performance noticeably to provide userland functionality).
Limitations
- dnotify can only watch directories.
- dnotify requires maintaining an open file descriptor to the directory that the user wants to watch. First, the directory is open, hence disallowing the device on which it resides from being unmounted. Second, watchlist is limited by open file limit of the process.[2]
See also
- Linux kernel API
- File alteration monitor
- inotify, a dnotify replacement.
- The Documentation/filesystems/dnotify.txt file in the kernel source tree
Footnotes
- ^ Namely, in 2.4.0-test9.
- ^ "Kernel Korner - Intro to inotify". Linux Journal. Retrieved 25 April 2012.