diff options
author | Robert Love <rml@novell.com> | 2005-07-12 17:06:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-12 23:38:38 -0400 |
commit | 0eeca28300df110bd6ed54b31193c83b87921443 (patch) | |
tree | 7db42d8a18d80eca538f5b7d25e0532b8fa38b85 /fs/nfsd | |
parent | bd4c625c061c2a38568d0add3478f59172455159 (diff) |
[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 <rml@novell.com>
Cc: John McCutchan <ttb@tentacle.dhs.org>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/vfs.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 5e0bf3917607..4f2cd3d27566 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #endif /* CONFIG_NFSD_V3 */ | 45 | #endif /* CONFIG_NFSD_V3 */ |
46 | #include <linux/nfsd/nfsfh.h> | 46 | #include <linux/nfsd/nfsfh.h> |
47 | #include <linux/quotaops.h> | 47 | #include <linux/quotaops.h> |
48 | #include <linux/dnotify.h> | 48 | #include <linux/fsnotify.h> |
49 | #include <linux/posix_acl.h> | 49 | #include <linux/posix_acl.h> |
50 | #include <linux/posix_acl_xattr.h> | 50 | #include <linux/posix_acl_xattr.h> |
51 | #ifdef CONFIG_NFSD_V4 | 51 | #ifdef CONFIG_NFSD_V4 |
@@ -860,7 +860,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, | |||
860 | nfsdstats.io_read += err; | 860 | nfsdstats.io_read += err; |
861 | *count = err; | 861 | *count = err; |
862 | err = 0; | 862 | err = 0; |
863 | dnotify_parent(file->f_dentry, DN_ACCESS); | 863 | fsnotify_access(file->f_dentry); |
864 | } else | 864 | } else |
865 | err = nfserrno(err); | 865 | err = nfserrno(err); |
866 | out: | 866 | out: |
@@ -916,7 +916,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, | |||
916 | set_fs(oldfs); | 916 | set_fs(oldfs); |
917 | if (err >= 0) { | 917 | if (err >= 0) { |
918 | nfsdstats.io_write += cnt; | 918 | nfsdstats.io_write += cnt; |
919 | dnotify_parent(file->f_dentry, DN_MODIFY); | 919 | fsnotify_modify(file->f_dentry); |
920 | } | 920 | } |
921 | 921 | ||
922 | /* clear setuid/setgid flag after write */ | 922 | /* clear setuid/setgid flag after write */ |