summaryrefslogtreecommitdiffstats
path: root/fs/notify
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2010-07-28 16:18:39 +0200
committerEric Paris <eparis@redhat.com>2010-07-28 16:18:54 +0200
commit43709a288ed03aa0e2979ab63dd089b3889645c4 (patch)
tree71717ebf944c099af5ab8ea339889665d4b9ef67 /fs/notify
parentfsnotify: remove the global masks (diff)
downloadlinux-43709a288ed03aa0e2979ab63dd089b3889645c4.tar.xz
linux-43709a288ed03aa0e2979ab63dd089b3889645c4.zip
fsnotify: remove group->mask
group->mask is now useless. It was originally a shortcut for fsnotify to save on performance. These checks are now redundant, so we remove them. Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'fs/notify')
-rw-r--r--fs/notify/dnotify/dnotify.c4
-rw-r--r--fs/notify/fanotify/fanotify_user.c23
-rw-r--r--fs/notify/group.c16
-rw-r--r--fs/notify/inotify/inotify_user.c9
4 files changed, 5 insertions, 47 deletions
diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c
index c3dc15879a52..e92b2c87ae94 100644
--- a/fs/notify/dnotify/dnotify.c
+++ b/fs/notify/dnotify/dnotify.c
@@ -199,8 +199,6 @@ void dnotify_flush(struct file *filp, fl_owner_t id)
if (dn_mark->dn == NULL)
fsnotify_destroy_mark(fsn_mark);
- fsnotify_recalc_group_mask(dnotify_group);
-
mutex_unlock(&dnotify_mark_mutex);
fsnotify_put_mark(fsn_mark);
@@ -385,8 +383,6 @@ out:
if (destroy)
fsnotify_destroy_mark(fsn_mark);
- fsnotify_recalc_group_mask(dnotify_group);
-
mutex_unlock(&dnotify_mark_mutex);
fsnotify_put_mark(fsn_mark);
out_err:
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index 50cea74bf1c8..25a3b4dfcf61 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -496,8 +496,6 @@ static int fanotify_remove_vfsmount_mark(struct fsnotify_group *group,
removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags);
fsnotify_put_mark(fsn_mark);
- if (removed & group->mask)
- fsnotify_recalc_group_mask(group);
if (removed & mnt->mnt_fsnotify_mask)
fsnotify_recalc_vfsmount_mask(mnt);
@@ -518,9 +516,6 @@ static int fanotify_remove_inode_mark(struct fsnotify_group *group,
removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags);
/* matches the fsnotify_find_inode_mark() */
fsnotify_put_mark(fsn_mark);
-
- if (removed & group->mask)
- fsnotify_recalc_group_mask(group);
if (removed & inode->i_fsnotify_mask)
fsnotify_recalc_inode_mask(inode);
@@ -572,12 +567,9 @@ static int fanotify_add_vfsmount_mark(struct fsnotify_group *group,
}
added = fanotify_mark_add_to_mask(fsn_mark, mask, flags);
fsnotify_put_mark(fsn_mark);
- if (added) {
- if (added & ~group->mask)
- fsnotify_recalc_group_mask(group);
- if (added & ~mnt->mnt_fsnotify_mask)
- fsnotify_recalc_vfsmount_mask(mnt);
- }
+ if (added & ~mnt->mnt_fsnotify_mask)
+ fsnotify_recalc_vfsmount_mask(mnt);
+
return 0;
}
@@ -607,12 +599,8 @@ static int fanotify_add_inode_mark(struct fsnotify_group *group,
}
added = fanotify_mark_add_to_mask(fsn_mark, mask, flags);
fsnotify_put_mark(fsn_mark);
- if (added) {
- if (added & ~group->mask)
- fsnotify_recalc_group_mask(group);
- if (added & ~inode->i_fsnotify_mask)
- fsnotify_recalc_inode_mask(inode);
- }
+ if (added & ~inode->i_fsnotify_mask)
+ fsnotify_recalc_inode_mask(inode);
return 0;
}
@@ -734,7 +722,6 @@ SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags,
fsnotify_clear_vfsmount_marks_by_group(group);
else
fsnotify_clear_inode_marks_by_group(group);
- fsnotify_recalc_group_mask(group);
break;
default:
ret = -EINVAL;
diff --git a/fs/notify/group.c b/fs/notify/group.c
index 8da532dd6026..fc0d966b270f 100644
--- a/fs/notify/group.c
+++ b/fs/notify/group.c
@@ -35,22 +35,6 @@ LIST_HEAD(fsnotify_inode_groups);
/* all groups registered to receive mount point filesystem notifications */
LIST_HEAD(fsnotify_vfsmount_groups);
-/*
- * Update the group->mask by running all of the marks associated with this
- * group and finding the bitwise | of all of the mark->mask.
- */
-void fsnotify_recalc_group_mask(struct fsnotify_group *group)
-{
- __u32 mask = 0;
- struct fsnotify_mark *mark;
-
- spin_lock(&group->mark_lock);
- list_for_each_entry(mark, &group->marks_list, g_list)
- mask |= mark->mask;
- group->mask = mask;
- spin_unlock(&group->mark_lock);
-}
-
void fsnotify_add_vfsmount_group(struct fsnotify_group *group)
{
struct fsnotify_group *group_iter;
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index a4cd227c4c76..bf7f6d776c31 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -606,16 +606,11 @@ static int inotify_update_existing_watch(struct fsnotify_group *group,
int dropped = (old_mask & ~new_mask);
/* more bits in this fsn_mark than the inode's mask? */
int do_inode = (new_mask & ~inode->i_fsnotify_mask);
- /* more bits in this fsn_mark than the group? */
- int do_group = (new_mask & ~group->mask);
/* update the inode with this new fsn_mark */
if (dropped || do_inode)
fsnotify_recalc_inode_mask(inode);
- /* update the group mask with the new mask */
- if (dropped || do_group)
- fsnotify_recalc_group_mask(group);
}
/* return the wd */
@@ -673,10 +668,6 @@ static int inotify_new_watch(struct fsnotify_group *group,
/* return the watch descriptor for this new mark */
ret = tmp_i_mark->wd;
- /* if this mark added a new event update the group mask */
- if (mask & ~group->mask)
- fsnotify_recalc_group_mask(group);
-
out_err:
/* match the ref from fsnotify_init_mark() */
fsnotify_put_mark(&tmp_i_mark->fsn_mark);