World Library  
Flag as Inappropriate
Email this Article

Inotify

Article Id: WHEBN0002594628
Reproduction Date:

Title: Inotify  
Author: World Heritage Encyclopedia
Language: English
Subject: Dnotify, FSEvents, File Alteration Monitor, CRIU, Linux kernel
Collection: Linux Kernel Features
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Inotify

Inotify (inode notify) is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes to applications. It replaces an earlier facility, dnotify, which had similar goals.

Inotify was created by John McCutchan,[1] and it was merged into the Linux kernel mainline in kernel version 2.6.13, released on August 29, 2005;[2] later kernel versions included further improvements. The required library interfaces were added into the GNU C Library (glibc) in its version 2.4, released in March 2006, while the support for inotify was completed in glibc version 2.5, released in September 2006.[3]

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 directly by the kernel that a file has changed, indexing utilities can achieve change-to-reindexing times of only about a second.

Inotify can also be used to automatically update directory views, reload configuration files, log changes, backup, synchronize, and upload.

Contents

  • Limitations 1
  • History 2
  • Advantages over dnotify 3
  • See also 4
  • References 5
  • External links 6

Limitations

Limitations imposed by inotify include the following:

  • Inotify does not support recursively watching directories, meaning that a separate inotify watch must be created for every subdirectory.[4]
  • Inotify does report some but not all events in sysfs and procfs.
  • Notification via inotify requires the kernel to be aware of all relevant filesystem events, which is not always possible for networked filesystems such as NFS where changes made by one client are not immediately broadcast to other clients.
  • Rename events are not handled directly; i.e., inotify issues two separate events that must be examined and matched in a context of potential race conditions.

History

  • July 2004: the first release announcement[1]
  • August 29, 2005: Linux kernel version 2.6.13 released, containing merged inotify code[2]
  • March 2006: GNU C Library (glibc) version 2.4 released, bringing initial inotify support[3]
  • September 2006: Glibc version 2.5 released, bringing complete inotify support[3]

Advantages over dnotify

There are a number of advantages when using inotify when compared to the older dnotify API that it replaced.[5][6][7] With dnotify, a program had to use one file descriptor for each directory that it was monitoring. This can become a bottleneck since the limit of file descriptors per process could be reached. Later, fanotify was created to overcome this issue. The use of file descriptors along with dnotify also proved to be a problem when using removable media. Devices could not be unmounted since file descriptors kept the resource busy.

Another drawback of dnotify is the level of granularity, since programmers can only monitor changes at the directory level. To access detailed information about the environmental changes that occur when a notification message is sent, a stat structure must be used; this is considered a necessary evil in that a cache of stat structures has to be maintained, for every new stat structure generated a comparison is run against the cached one.

The inotify API uses fewer file descriptors, allowing programmers to use the established select and poll interface, rather than the signal notification system used by dnotify. This also makes integration with existing select- or poll-based libraries (like GLib) easier.

See also

References

  1. ^ a b "fa.linux.kernal post [RFC][PATCH] inotify 0.8". 2004-07-29. Retrieved 2013-08-19. 
  2. ^ a b Linux 2.6.13, kernelnewbies.org
  3. ^ a b c inotify man page
  4. ^ Robert Love, Linux system programming. O'Reilly, p. 236
  5. ^  
  6. ^ Why inotify?
  7. ^ inotify README file

External links

  • Kernel Korner - Intro to inotify by Robert Love (2005)
  • LWN Article on Inotify Watching filesystem events with inotify (partly out of date)
  • IBM Article Monitor Linux file system events with inotify.
  • Filesystem notification, part 1: An overview of dnotify and inotify. LWN.net 2014.
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.