Skip to content

Commit

Permalink
fsnotify: remove group->mask
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
eparis committed Jul 28, 2010
1 parent 0393097 commit 43709a2
Show file tree
Hide file tree
Showing 6 changed files with 5 additions and 66 deletions.
4 changes: 0 additions & 4 deletions fs/notify/dnotify/dnotify.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -385,8 +383,6 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
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:
Expand Down
23 changes: 5 additions & 18 deletions fs/notify/fanotify/fanotify_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);

Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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;
Expand Down
16 changes: 0 additions & 16 deletions fs/notify/group.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
9 changes: 0 additions & 9 deletions fs/notify/inotify/inotify_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down
11 changes: 0 additions & 11 deletions include/linux/fsnotify_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,6 @@ struct fsnotify_group {
*/
struct list_head vfsmount_group_list;

/*
* Defines all of the event types in which this group is interested.
* This mask is a bitwise OR of the FS_* events from above. Each time
* this mask changes for a group (if it changes) the correct functions
* must be called to update the global structures which indicate global
* interest in event types.
*/
__u32 mask;

/*
* How the refcnt is used is up to each group. When the refcnt hits 0
* fsnotify will clean up all of the resources associated with this group.
Expand Down Expand Up @@ -367,8 +358,6 @@ static inline void __fsnotify_d_instantiate(struct dentry *dentry, struct inode

/* get a reference to an existing or create a new group */
extern struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops);
/* run all marks associated with this group and update group->mask */
extern void fsnotify_recalc_group_mask(struct fsnotify_group *group);
/* drop reference on a group from fsnotify_alloc_group */
extern void fsnotify_put_group(struct fsnotify_group *group);

Expand Down
8 changes: 0 additions & 8 deletions kernel/audit_watch.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,6 @@ static struct audit_parent *audit_init_parent(struct nameidata *ndp)
return ERR_PTR(ret);
}

fsnotify_recalc_group_mask(audit_watch_group);

return parent;
}

Expand Down Expand Up @@ -352,9 +350,6 @@ static void audit_remove_parent_watches(struct audit_parent *parent)
mutex_unlock(&audit_filter_mutex);

fsnotify_destroy_mark(&parent->mark);

fsnotify_recalc_group_mask(audit_watch_group);

}

/* Get path information necessary for adding watches. */
Expand Down Expand Up @@ -505,9 +500,6 @@ void audit_remove_watch_rule(struct audit_krule *krule)
audit_put_parent(parent);
}
}

fsnotify_recalc_group_mask(audit_watch_group);

}

static bool audit_watch_should_send_event(struct fsnotify_group *group, struct inode *inode,
Expand Down

0 comments on commit 43709a2

Please sign in to comment.