diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2007-06-07 12:22:59 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2007-10-21 02:37:38 -0400 |
commit | 455434d450a358ac5bcf3fc58f8913d13c544622 (patch) | |
tree | 78cf10eabc7ed50a0b84da6b8c84c4313ea1f170 | |
parent | b9efe8a234ad874a049460417c54680338f96360 (diff) |
[PATCH] new helper - inotify_evict_watch()
Kicks the watch out without dropping it. Called under ->inotify_mutex
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/inotify.c | 8 | ||||
-rw-r--r-- | include/linux/inotify.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/fs/inotify.c b/fs/inotify.c index 4b2469bb6554..2c5b92152876 100644 --- a/fs/inotify.c +++ b/fs/inotify.c | |||
@@ -701,6 +701,14 @@ out: | |||
701 | return ret; | 701 | return ret; |
702 | } | 702 | } |
703 | 703 | ||
704 | void inotify_evict_watch(struct inotify_watch *watch) | ||
705 | { | ||
706 | get_inotify_watch(watch); | ||
707 | mutex_lock(&watch->ih->mutex); | ||
708 | inotify_remove_watch_locked(watch->ih, watch); | ||
709 | mutex_unlock(&watch->ih->mutex); | ||
710 | } | ||
711 | |||
704 | /** | 712 | /** |
705 | * inotify_rm_wd - remove a watch from an inotify instance | 713 | * inotify_rm_wd - remove a watch from an inotify instance |
706 | * @ih: inotify handle | 714 | * @ih: inotify handle |
diff --git a/include/linux/inotify.h b/include/linux/inotify.h index e76e2272e2ab..742b917e7d1b 100644 --- a/include/linux/inotify.h +++ b/include/linux/inotify.h | |||
@@ -121,6 +121,7 @@ extern __s32 inotify_find_update_watch(struct inotify_handle *, struct inode *, | |||
121 | extern __s32 inotify_add_watch(struct inotify_handle *, struct inotify_watch *, | 121 | extern __s32 inotify_add_watch(struct inotify_handle *, struct inotify_watch *, |
122 | struct inode *, __u32); | 122 | struct inode *, __u32); |
123 | extern __s32 inotify_clone_watch(struct inotify_watch *, struct inotify_watch *); | 123 | extern __s32 inotify_clone_watch(struct inotify_watch *, struct inotify_watch *); |
124 | extern void inotify_evict_watch(struct inotify_watch *); | ||
124 | extern int inotify_rm_watch(struct inotify_handle *, struct inotify_watch *); | 125 | extern int inotify_rm_watch(struct inotify_handle *, struct inotify_watch *); |
125 | extern int inotify_rm_wd(struct inotify_handle *, __u32); | 126 | extern int inotify_rm_wd(struct inotify_handle *, __u32); |
126 | extern void inotify_remove_watch_locked(struct inotify_handle *, | 127 | extern void inotify_remove_watch_locked(struct inotify_handle *, |