diff options
author | Andreas Gruenbacher <agruen@suse.de> | 2009-12-17 21:24:27 -0500 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2010-07-28 09:58:57 -0400 |
commit | ca9c726eea013394d1e846331b117effb21ead83 (patch) | |
tree | de2319fb43b4fa16d07ecbcd75022cdaf9a757e1 /fs | |
parent | 0d48b7f01f442bc88a69aa98f3b6b015f2817608 (diff) |
fsnotify: Infrastructure for per-mount watches
Per-mount watches allow groups to listen to fsnotify events on an entire
mount. This patch simply adds and initializes the fields needed in the
vfsmount struct to make this happen.
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/namespace.c | 1 | ||||
-rw-r--r-- | fs/notify/fsnotify.c | 5 | ||||
-rw-r--r-- | fs/notify/fsnotify.h | 2 |
3 files changed, 8 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index a2d681a6b5e9..1969d6b2571e 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -614,6 +614,7 @@ static inline void __mntput(struct vfsmount *mnt) | |||
614 | * provides barriers, so count_mnt_writers() below is safe. AV | 614 | * provides barriers, so count_mnt_writers() below is safe. AV |
615 | */ | 615 | */ |
616 | WARN_ON(count_mnt_writers(mnt)); | 616 | WARN_ON(count_mnt_writers(mnt)); |
617 | fsnotify_vfsmount_delete(mnt); | ||
617 | dput(mnt->mnt_root); | 618 | dput(mnt->mnt_root); |
618 | free_vfsmnt(mnt); | 619 | free_vfsmnt(mnt); |
619 | deactivate_super(sb); | 620 | deactivate_super(sb); |
diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index e0bf86953e1b..7f14ddc3efc2 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c | |||
@@ -36,6 +36,11 @@ void __fsnotify_inode_delete(struct inode *inode) | |||
36 | } | 36 | } |
37 | EXPORT_SYMBOL_GPL(__fsnotify_inode_delete); | 37 | EXPORT_SYMBOL_GPL(__fsnotify_inode_delete); |
38 | 38 | ||
39 | void __fsnotify_vfsmount_delete(struct vfsmount *mnt) | ||
40 | { | ||
41 | fsnotify_clear_marks_by_mount(mnt); | ||
42 | } | ||
43 | |||
39 | /* | 44 | /* |
40 | * Given an inode, first check if we care what happens to our children. Inotify | 45 | * Given an inode, first check if we care what happens to our children. Inotify |
41 | * and dnotify both tell their parents about events. If we care about any event | 46 | * and dnotify both tell their parents about events. If we care about any event |
diff --git a/fs/notify/fsnotify.h b/fs/notify/fsnotify.h index 38f3fb5cef28..204353c0f663 100644 --- a/fs/notify/fsnotify.h +++ b/fs/notify/fsnotify.h | |||
@@ -42,6 +42,8 @@ extern void fsnotify_destroy_vfsmount_mark(struct fsnotify_mark *mark); | |||
42 | extern void fsnotify_destroy_inode_mark(struct fsnotify_mark *mark); | 42 | extern void fsnotify_destroy_inode_mark(struct fsnotify_mark *mark); |
43 | /* run the list of all marks associated with inode and flag them to be freed */ | 43 | /* run the list of all marks associated with inode and flag them to be freed */ |
44 | extern void fsnotify_clear_marks_by_inode(struct inode *inode); | 44 | extern void fsnotify_clear_marks_by_inode(struct inode *inode); |
45 | /* run the list of all marks associated with vfsmount and flag them to be freed */ | ||
46 | extern void fsnotify_clear_marks_by_mount(struct vfsmount *mnt); | ||
45 | /* | 47 | /* |
46 | * update the dentry->d_flags of all of inode's children to indicate if inode cares | 48 | * update the dentry->d_flags of all of inode's children to indicate if inode cares |
47 | * about events that happen to its children. | 49 | * about events that happen to its children. |