summaryrefslogtreecommitdiffstats
path: root/fs/notify/fsnotify.c
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2010-07-28 10:18:38 -0400
committerEric Paris <eparis@redhat.com>2010-07-28 10:18:52 -0400
commit3a9b16b407f10b2a771bcae13fb5791e527d6bcf (patch)
tree0d88cac61bd6d3f5028eb0c9a45e7af9fbd24311 /fs/notify/fsnotify.c
parent8778abb9a88fc4a74d8776ffaadf7214cf33c61e (diff)
downloadlinux-stable-3a9b16b407f10b2a771bcae13fb5791e527d6bcf.tar.gz
linux-stable-3a9b16b407f10b2a771bcae13fb5791e527d6bcf.tar.bz2
linux-stable-3a9b16b407f10b2a771bcae13fb5791e527d6bcf.zip
fsnotify: send fsnotify_mark to groups in event handling functions
With the change of fsnotify to use srcu walking the marks list instead of walking the global groups list we now know the mark in question. The code can send the mark to the group's handling functions and the groups won't have to find those marks themselves. Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'fs/notify/fsnotify.c')
-rw-r--r--fs/notify/fsnotify.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c
index 4678b416241e..59d639996cad 100644
--- a/fs/notify/fsnotify.c
+++ b/fs/notify/fsnotify.c
@@ -171,15 +171,16 @@ void __fsnotify_flush_ignored_mask(struct inode *inode, void *data, int data_is)
}
static int send_to_group(struct fsnotify_group *group, struct inode *to_tell,
- struct vfsmount *mnt, __u32 mask, void *data,
- int data_is, u32 cookie, const unsigned char *file_name,
+ struct vfsmount *mnt, struct fsnotify_mark *mark,
+ __u32 mask, void *data, int data_is, u32 cookie,
+ const unsigned char *file_name,
struct fsnotify_event **event)
{
- pr_debug("%s: group=%p to_tell=%p mnt=%p mask=%x data=%p data_is=%d"
- " cookie=%d event=%p\n", __func__, group, to_tell, mnt,
- mask, data, data_is, cookie, *event);
+ pr_debug("%s: group=%p to_tell=%p mnt=%p mark=%p mask=%x data=%p"
+ " data_is=%d cookie=%d event=%p\n", __func__, group, to_tell,
+ mnt, mark, mask, data, data_is, cookie, *event);
- if (!group->ops->should_send_event(group, to_tell, mnt, mask,
+ if (!group->ops->should_send_event(group, to_tell, mnt, mark, mask,
data, data_is))
return 0;
if (!*event) {
@@ -189,7 +190,7 @@ static int send_to_group(struct fsnotify_group *group, struct inode *to_tell,
if (!*event)
return -ENOMEM;
}
- return group->ops->handle_event(group, *event);
+ return group->ops->handle_event(group, mark, *event);
}
static bool needed_by_vfsmount(__u32 test_mask, struct vfsmount *mnt)
@@ -252,7 +253,7 @@ int fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
group = mark->group;
if (!group)
continue;
- ret = send_to_group(group, to_tell, NULL, mask,
+ ret = send_to_group(group, to_tell, NULL, mark, mask,
data, data_is, cookie, file_name,
&event);
if (ret)
@@ -271,7 +272,7 @@ int fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
group = mark->group;
if (!group)
continue;
- ret = send_to_group(group, to_tell, mnt, mask,
+ ret = send_to_group(group, to_tell, mnt, mark, mask,
data, data_is, cookie, file_name,
&event);
if (ret)