Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
* 'for-linus' of git://git.infradead.org/users/eparis/notify: dnotify: ignore FS_EVENT_ON_CHILD inotify: fix coalesce duplicate events into a single event in special case inotify: deprecate the inotify kernel interface fsnotify: do not set group for a mark before it is on the i_list
This commit is contained in:
@@ -418,6 +418,14 @@ When: 2.6.33
|
|||||||
Why: Should be implemented in userspace, policy daemon.
|
Why: Should be implemented in userspace, policy daemon.
|
||||||
Who: Johannes Berg <johannes@sipsolutions.net>
|
Who: Johannes Berg <johannes@sipsolutions.net>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
What: CONFIG_INOTIFY
|
||||||
|
When: 2.6.33
|
||||||
|
Why: last user (audit) will be converted to the newer more generic
|
||||||
|
and more easily maintained fsnotify subsystem
|
||||||
|
Who: Eric Paris <eparis@redhat.com>
|
||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
What: lock_policy_rwsem_* and unlock_policy_rwsem_* will not be
|
What: lock_policy_rwsem_* and unlock_policy_rwsem_* will not be
|
||||||
|
@@ -91,6 +91,7 @@ static int dnotify_handle_event(struct fsnotify_group *group,
|
|||||||
struct dnotify_struct *dn;
|
struct dnotify_struct *dn;
|
||||||
struct dnotify_struct **prev;
|
struct dnotify_struct **prev;
|
||||||
struct fown_struct *fown;
|
struct fown_struct *fown;
|
||||||
|
__u32 test_mask = event->mask & ~FS_EVENT_ON_CHILD;
|
||||||
|
|
||||||
to_tell = event->to_tell;
|
to_tell = event->to_tell;
|
||||||
|
|
||||||
@@ -106,7 +107,7 @@ static int dnotify_handle_event(struct fsnotify_group *group,
|
|||||||
spin_lock(&entry->lock);
|
spin_lock(&entry->lock);
|
||||||
prev = &dnentry->dn;
|
prev = &dnentry->dn;
|
||||||
while ((dn = *prev) != NULL) {
|
while ((dn = *prev) != NULL) {
|
||||||
if ((dn->dn_mask & event->mask) == 0) {
|
if ((dn->dn_mask & test_mask) == 0) {
|
||||||
prev = &dn->dn_next;
|
prev = &dn->dn_next;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -324,11 +324,11 @@ int fsnotify_add_mark(struct fsnotify_mark_entry *entry,
|
|||||||
spin_lock(&group->mark_lock);
|
spin_lock(&group->mark_lock);
|
||||||
spin_lock(&inode->i_lock);
|
spin_lock(&inode->i_lock);
|
||||||
|
|
||||||
entry->group = group;
|
|
||||||
entry->inode = inode;
|
|
||||||
|
|
||||||
lentry = fsnotify_find_mark_entry(group, inode);
|
lentry = fsnotify_find_mark_entry(group, inode);
|
||||||
if (!lentry) {
|
if (!lentry) {
|
||||||
|
entry->group = group;
|
||||||
|
entry->inode = inode;
|
||||||
|
|
||||||
hlist_add_head(&entry->i_list, &inode->i_fsnotify_mark_entries);
|
hlist_add_head(&entry->i_list, &inode->i_fsnotify_mark_entries);
|
||||||
list_add(&entry->g_list, &group->mark_entries);
|
list_add(&entry->g_list, &group->mark_entries);
|
||||||
|
|
||||||
|
@@ -143,7 +143,7 @@ static bool event_compare(struct fsnotify_event *old, struct fsnotify_event *new
|
|||||||
/* remember, after old was put on the wait_q we aren't
|
/* remember, after old was put on the wait_q we aren't
|
||||||
* allowed to look at the inode any more, only thing
|
* allowed to look at the inode any more, only thing
|
||||||
* left to check was if the file_name is the same */
|
* left to check was if the file_name is the same */
|
||||||
if (old->name_len &&
|
if (!old->name_len ||
|
||||||
!strcmp(old->file_name, new->file_name))
|
!strcmp(old->file_name, new->file_name))
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user