Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24 /fs/inotify.c

Filename:/fs/inotify.c
Lines Added:43
Lines Deleted:0
Also changed in: (Previous) 2.6.24-rc8  2.6.24-rc7  2.6.24-rc6  2.6.24-rc5  2.6.24-rc4  2.6.24-rc3 
(Following) 2.6.24-git16  2.6.24-git17  2.6.24-git18  2.6.24-git19  2.6.24-git20  2.6.24-git21 

Location
[  2.6.24
  [  fs
     o  inotify.c

Patch

diff --git a/fs/inotify.c b/fs/inotify.c
index 7457501..2c5b921 100644
--- a/fs/inotify.c
+++ b/fs/inotify.c
@@ -667,6 +667,49 @@ out:
 EXPORT_SYMBOL_GPL(inotify_add_watch);
 
 /**
+ * inotify_clone_watch - put the watch next to existing one
+ * @old: already installed watch
+ * @new: new watch
+ *
+ * Caller must hold the inotify_mutex of inode we are dealing with;
+ * it is expected to remove the old watch before unlocking the inode.
+ */
+s32 inotify_clone_watch(struct inotify_watch *old, struct inotify_watch *new)
+{
+   struct inotify_handle *ih = old->ih;
+   int ret = 0;
+
+   new->mask = old->mask;
+   new->ih = ih;
+
+   mutex_lock(&ih->mutex);
+
+   /* Initialize a new watch */
+   ret = inotify_handle_get_wd(ih, new);
+   if (unlikely(ret))
+      goto out;
+   ret = new->wd;
+
+   get_inotify_handle(ih);
+
+   new->inode = igrab(old->inode);
+
+   list_add(&new->h_list, &ih->watches);
+   list_add(&new->i_list, &old->inode->inotify_watches);
+out:
+   mutex_unlock(&ih->mutex);
+   return ret;
+}
+
+void inotify_evict_watch(struct inotify_watch *watch)
+{
+   get_inotify_watch(watch);
+   mutex_lock(&watch->ih->mutex);
+   inotify_remove_watch_locked(watch->ih, watch);
+   mutex_unlock(&watch->ih->mutex);
+}
+
+/**
  * inotify_rm_wd - remove a watch from an inotify instance
  * @ih: inotify handle
  * @wd: watch descriptor to remove


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.