Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 71934
b: refs/heads/master
c: b9efe8a
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed Oct 21, 2007
1 parent f9c20cc commit 641a398
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8aec08094570562bc305df33b088926d983c3540
refs/heads/master: b9efe8a234ad874a049460417c54680338f96360
35 changes: 35 additions & 0 deletions trunk/fs/inotify.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,41 @@ s32 inotify_add_watch(struct inotify_handle *ih, struct inotify_watch *watch,
}
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;
}

/**
* inotify_rm_wd - remove a watch from an inotify instance
* @ih: inotify handle
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/inotify.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ extern __s32 inotify_find_update_watch(struct inotify_handle *, struct inode *,
u32);
extern __s32 inotify_add_watch(struct inotify_handle *, struct inotify_watch *,
struct inode *, __u32);
extern __s32 inotify_clone_watch(struct inotify_watch *, struct inotify_watch *);
extern int inotify_rm_watch(struct inotify_handle *, struct inotify_watch *);
extern int inotify_rm_wd(struct inotify_handle *, __u32);
extern void inotify_remove_watch_locked(struct inotify_handle *,
Expand Down

0 comments on commit 641a398

Please sign in to comment.