Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19c2a0e1 authored by Eric Paris's avatar Eric Paris
Browse files

fsnotify: rename fsnotify_groups to fsnotify_inode_groups



Simple renaming patch.  fsnotify is about to support mount point listeners
so I am renaming fsnotify_groups and fsnotify_mask to indicate these are lists
used only for groups which have watches on inodes.

Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 0d2e2a1d
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -148,10 +148,10 @@ void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, const
	/* global tests shouldn't care about events on child only the specific event */
	/* global tests shouldn't care about events on child only the specific event */
	__u32 test_mask = (mask & ~FS_EVENT_ON_CHILD);
	__u32 test_mask = (mask & ~FS_EVENT_ON_CHILD);


	if (list_empty(&fsnotify_groups))
	if (list_empty(&fsnotify_inode_groups))
		return;
		return;


	if (!(test_mask & fsnotify_mask))
	if (!(test_mask & fsnotify_inode_mask))
		return;
		return;


	if (!(test_mask & to_tell->i_fsnotify_mask))
	if (!(test_mask & to_tell->i_fsnotify_mask))
@@ -162,7 +162,7 @@ void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, const
	 * anything other than walk the list so it's crazy to pre-allocate.
	 * anything other than walk the list so it's crazy to pre-allocate.
	 */
	 */
	idx = srcu_read_lock(&fsnotify_grp_srcu);
	idx = srcu_read_lock(&fsnotify_grp_srcu);
	list_for_each_entry_rcu(group, &fsnotify_groups, group_list) {
	list_for_each_entry_rcu(group, &fsnotify_inode_groups, inode_group_list) {
		if (test_mask & group->mask) {
		if (test_mask & group->mask) {
			if (!group->ops->should_send_event(group, to_tell, mask,
			if (!group->ops->should_send_event(group, to_tell, mask,
							   data, data_is))
							   data, data_is))
+4 −4
Original line number Original line Diff line number Diff line
@@ -8,10 +8,10 @@


/* protects reads of fsnotify_groups */
/* protects reads of fsnotify_groups */
extern struct srcu_struct fsnotify_grp_srcu;
extern struct srcu_struct fsnotify_grp_srcu;
/* all groups which receive fsnotify events */
/* all groups which receive inode fsnotify events */
extern struct list_head fsnotify_groups;
extern struct list_head fsnotify_inode_groups;
/* all bitwise OR of all event types (FS_*) for all fsnotify_groups */
/* all bitwise OR of all event types (FS_*) for all fsnotify_inode_groups */
extern __u32 fsnotify_mask;
extern __u32 fsnotify_inode_mask;


/* destroy all events sitting in this groups notification queue */
/* destroy all events sitting in this groups notification queue */
extern void fsnotify_flush_notify(struct fsnotify_group *group);
extern void fsnotify_flush_notify(struct fsnotify_group *group);
+19 −11
Original line number Original line Diff line number Diff line
@@ -33,9 +33,9 @@ static DEFINE_MUTEX(fsnotify_grp_mutex);
/* protects reads while running the fsnotify_groups list */
/* protects reads while running the fsnotify_groups list */
struct srcu_struct fsnotify_grp_srcu;
struct srcu_struct fsnotify_grp_srcu;
/* all groups registered to receive filesystem notifications */
/* all groups registered to receive filesystem notifications */
LIST_HEAD(fsnotify_groups);
LIST_HEAD(fsnotify_inode_groups);
/* bitwise OR of all events (FS_*) interesting to some group on this system */
/* bitwise OR of all events (FS_*) interesting to some group on this system */
__u32 fsnotify_mask;
__u32 fsnotify_inode_mask;


/*
/*
 * When a new group registers or changes it's set of interesting events
 * When a new group registers or changes it's set of interesting events
@@ -48,10 +48,10 @@ void fsnotify_recalc_global_mask(void)
	int idx;
	int idx;


	idx = srcu_read_lock(&fsnotify_grp_srcu);
	idx = srcu_read_lock(&fsnotify_grp_srcu);
	list_for_each_entry_rcu(group, &fsnotify_groups, group_list)
	list_for_each_entry_rcu(group, &fsnotify_inode_groups, inode_group_list)
		mask |= group->mask;
		mask |= group->mask;
	srcu_read_unlock(&fsnotify_grp_srcu, idx);
	srcu_read_unlock(&fsnotify_grp_srcu, idx);
	fsnotify_mask = mask;
	fsnotify_inode_mask = mask;
}
}


/*
/*
@@ -77,6 +77,17 @@ void fsnotify_recalc_group_mask(struct fsnotify_group *group)
		fsnotify_recalc_global_mask();
		fsnotify_recalc_global_mask();
}
}


static void fsnotify_add_group(struct fsnotify_group *group)
{
	BUG_ON(!mutex_is_locked(&fsnotify_grp_mutex));

	group->on_inode_group_list = 1;
	/* being on the fsnotify_groups list holds one num_marks */
	atomic_inc(&group->num_marks);

	list_add_tail_rcu(&group->inode_group_list, &fsnotify_inode_groups);
}

/*
/*
 * Final freeing of a group
 * Final freeing of a group
 */
 */
@@ -118,9 +129,9 @@ static void __fsnotify_evict_group(struct fsnotify_group *group)
{
{
	BUG_ON(!mutex_is_locked(&fsnotify_grp_mutex));
	BUG_ON(!mutex_is_locked(&fsnotify_grp_mutex));


	if (group->on_group_list)
	if (group->on_inode_group_list)
		list_del_rcu(&group->group_list);
		list_del_rcu(&group->inode_group_list);
	group->on_group_list = 0;
	group->on_inode_group_list = 0;
}
}


/*
/*
@@ -186,10 +197,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)


	mutex_lock(&fsnotify_grp_mutex);
	mutex_lock(&fsnotify_grp_mutex);


	list_add_rcu(&group->group_list, &fsnotify_groups);
	fsnotify_add_group(group);
	group->on_group_list = 1;
	/* being on the fsnotify_groups list holds one num_marks */
	atomic_inc(&group->num_marks);


	mutex_unlock(&fsnotify_grp_mutex);
	mutex_unlock(&fsnotify_grp_mutex);


+3 −3
Original line number Original line Diff line number Diff line
@@ -95,10 +95,10 @@ struct fsnotify_ops {
struct fsnotify_group {
struct fsnotify_group {
	/*
	/*
	 * global list of all groups receiving events from fsnotify.
	 * global list of all groups receiving events from fsnotify.
	 * anchored by fsnotify_groups and protected by either fsnotify_grp_mutex
	 * anchored by fsnotify_inode_groups and protected by either fsnotify_grp_mutex
	 * or fsnotify_grp_srcu depending on write vs read.
	 * or fsnotify_grp_srcu depending on write vs read.
	 */
	 */
	struct list_head group_list;
	struct list_head inode_group_list;


	/*
	/*
	 * Defines all of the event types in which this group is interested.
	 * Defines all of the event types in which this group is interested.
@@ -136,7 +136,7 @@ struct fsnotify_group {
	struct list_head mark_entries;	/* all inode mark entries for this group */
	struct list_head mark_entries;	/* all inode mark entries for this group */


	/* prevents double list_del of group_list.  protected by global fsnotify_grp_mutex */
	/* prevents double list_del of group_list.  protected by global fsnotify_grp_mutex */
	bool on_group_list;
	bool on_inode_group_list;


	/* groups can define private fields here or use the void *private */
	/* groups can define private fields here or use the void *private */
	union {
	union {