mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
[PATCH] inotify
inotify is intended to correct the deficiencies of dnotify, particularly
its inability to scale and its terrible user interface:
* dnotify requires the opening of one fd per each directory
that you intend to watch. This quickly results in too many
open files and pins removable media, preventing unmount.
* dnotify is directory-based. You only learn about changes to
directories. Sure, a change to a file in a directory affects
the directory, but you are then forced to keep a cache of
stat structures.
* dnotify's interface to user-space is awful. Signals?
inotify provides a more usable, simple, powerful solution to file change
notification:
* inotify's interface is a system call that returns a fd, not SIGIO.
You get a single fd, which is select()-able.
* inotify has an event that says "the filesystem that the item
you were watching is on was unmounted."
* inotify can watch directories or files.
Inotify is currently used by Beagle (a desktop search infrastructure),
Gamin (a FAM replacement), and other projects.
See Documentation/filesystems/inotify.txt.
Signed-off-by: Robert Love <[email protected]>
Cc: John McCutchan <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
bd4c625c06
commit
0eeca28300
24 changed files with 1639 additions and 67 deletions
12
fs/compat.c
12
fs/compat.c
|
|
@ -37,7 +37,7 @@
|
|||
#include <linux/ctype.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/dirent.h>
|
||||
#include <linux/dnotify.h>
|
||||
#include <linux/fsnotify.h>
|
||||
#include <linux/highuid.h>
|
||||
#include <linux/sunrpc/svc.h>
|
||||
#include <linux/nfsd/nfsd.h>
|
||||
|
|
@ -1307,9 +1307,13 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
|
|||
out:
|
||||
if (iov != iovstack)
|
||||
kfree(iov);
|
||||
if ((ret + (type == READ)) > 0)
|
||||
dnotify_parent(file->f_dentry,
|
||||
(type == READ) ? DN_ACCESS : DN_MODIFY);
|
||||
if ((ret + (type == READ)) > 0) {
|
||||
struct dentry *dentry = file->f_dentry;
|
||||
if (type == READ)
|
||||
fsnotify_access(dentry);
|
||||
else
|
||||
fsnotify_modify(dentry);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue