Skip to content

Commit

Permalink
fsnotify: provide the data type to should_send_event
Browse files Browse the repository at this point in the history
fanotify is only interested in event types which contain enough information
to open the original file in the context of the fanotify listener.  Since
fanotify may not want to send events if that data isn't present we pass
the data type to the should_send_event function call so fanotify can express
its lack of interest.

Signed-off-by: Eric Paris <eparis@redhat.com>
  • Loading branch information
Eric Paris committed Jul 28, 2010
1 parent d7f0ce4 commit 7b0a04f
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 6 deletions.
3 changes: 2 additions & 1 deletion fs/notify/dnotify/dnotify.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ static int dnotify_handle_event(struct fsnotify_group *group,
* userspace notification for that pair.
*/
static bool dnotify_should_send_event(struct fsnotify_group *group,
struct inode *inode, __u32 mask)
struct inode *inode, __u32 mask,
int data_type)
{
struct fsnotify_mark_entry *entry;
bool send;
Expand Down
2 changes: 1 addition & 1 deletion fs/notify/fsnotify.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, const
idx = srcu_read_lock(&fsnotify_grp_srcu);
list_for_each_entry_rcu(group, &fsnotify_groups, group_list) {
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_is))
continue;
if (!event) {
event = fsnotify_create_event(to_tell, mask, data,
Expand Down
3 changes: 2 additions & 1 deletion fs/notify/inotify/inotify_fsnotify.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ static void inotify_freeing_mark(struct fsnotify_mark_entry *entry, struct fsnot
inotify_ignored_and_remove_idr(entry, group);
}

static bool inotify_should_send_event(struct fsnotify_group *group, struct inode *inode, __u32 mask)
static bool inotify_should_send_event(struct fsnotify_group *group, struct inode *inode,
__u32 mask, int data_type)
{
struct fsnotify_mark_entry *entry;
bool send;
Expand Down
3 changes: 2 additions & 1 deletion include/linux/fsnotify_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ struct fsnotify_event_private_data;
* valid group and inode to use to clean up.
*/
struct fsnotify_ops {
bool (*should_send_event)(struct fsnotify_group *group, struct inode *inode, __u32 mask);
bool (*should_send_event)(struct fsnotify_group *group, struct inode *inode,
__u32 mask, int data_type);
int (*handle_event)(struct fsnotify_group *group, struct fsnotify_event *event);
void (*free_group_priv)(struct fsnotify_group *group);
void (*freeing_mark)(struct fsnotify_mark_entry *entry, struct fsnotify_group *group);
Expand Down
3 changes: 2 additions & 1 deletion kernel/audit_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -919,7 +919,8 @@ static void audit_tree_freeing_mark(struct fsnotify_mark_entry *entry, struct fs
fsnotify_put_mark(entry);
}

static bool audit_tree_send_event(struct fsnotify_group *group, struct inode *inode, __u32 mask)
static bool audit_tree_send_event(struct fsnotify_group *group, struct inode *inode,
__u32 mask, int data_type)
{
return 0;
}
Expand Down
3 changes: 2 additions & 1 deletion kernel/audit_watch.c
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,8 @@ void audit_remove_watch_rule(struct audit_krule *krule)
}
}

static bool audit_watch_should_send_event(struct fsnotify_group *group, struct inode *inode, __u32 mask)
static bool audit_watch_should_send_event(struct fsnotify_group *group, struct inode *inode,
__u32 mask, int data_type)
{
struct fsnotify_mark_entry *entry;
bool send;
Expand Down

0 comments on commit 7b0a04f

Please sign in to comment.