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: Eric Paris <eparis@redhat.com>
This commit is contained in:
Родитель
0d2e2a1d00
Коммит
19c2a0e1a2
|
@ -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))
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче