int data_is, u32 cookie, const unsigned char *file_name,
struct fsnotify_event **event)
{
+ pr_debug("%s: group=%p to_tell=%p mnt=%p mask=%x data=%p data_is=%d"
+ " cookie=%d event=%p\n", __func__, group, to_tell, mnt,
+ mask, data, data_is, cookie, *event);
+
if (!group->ops->should_send_event(group, to_tell, mnt, mask,
data, data_is))
return 0;
struct fsnotify_event_private_data *fsn_event_priv;
int wd, ret;
+ pr_debug("%s: group=%p event=%p to_tell=%p mask=%x\n", __func__, group,
+ event, event->to_tell, event->mask);
+
to_tell = event->to_tell;
fsn_mark = fsnotify_find_inode_mark(group, to_tell);
struct fsnotify_mark *fsn_mark;
bool send;
+ pr_debug("%s: group=%p inode=%p mask=%x data=%p data_type=%d\n",
+ __func__, group, inode, mask, data, data_type);
+
fsn_mark = fsnotify_find_inode_mark(group, inode);
if (!fsn_mark)
return false;
event = fsnotify_peek_notify_event(group);
+ pr_debug("%s: group=%p event=%p\n", __func__, group, event);
+
if (event->name_len)
event_size += roundup(event->name_len + 1, event_size);
size_t event_size = sizeof(struct inotify_event);
size_t name_len = 0;
+ pr_debug("%s: group=%p event=%p\n", __func__, group, event);
+
/* we get the inotify watch descriptor from the event private data */
spin_lock(&event->lock);
fsn_priv = fsnotify_remove_priv_from_event(group, event);
kevent = get_one_event(group, count);
mutex_unlock(&group->notification_mutex);
+ pr_debug("%s: group=%p kevent=%p\n", __func__, group, kevent);
+
if (kevent) {
ret = PTR_ERR(kevent);
if (IS_ERR(kevent))
struct fsnotify_group *group = file->private_data;
struct user_struct *user = group->inotify_data.user;
+ pr_debug("%s: group=%p\n", __func__, group);
+
fsnotify_clear_marks_by_group(group);
/* free this group, matching get was inotify_init->fsnotify_obtain_group */
group = file->private_data;
p = (void __user *) arg;
+ pr_debug("%s: group=%p cmd=%u\n", __func__, group, cmd);
+
switch (cmd) {
case FIONREAD:
mutex_lock(&group->notification_mutex);
return;
if (atomic_dec_and_test(&event->refcnt)) {
+ pr_debug("%s: event=%p\n", __func__, event);
+
if (event->data_type == FSNOTIFY_EVENT_PATH)
path_put(&event->path);
struct list_head *list = &group->notification_list;
int rc = 0;
+ pr_debug("%s: group=%p event=%p priv=%p\n", __func__, group, event, priv);
+
/*
* There is one fsnotify_event_holder embedded inside each fsnotify_event.
* Check if we expect to be able to use that holder. If not alloc a new
BUG_ON(!mutex_is_locked(&group->notification_mutex));
+ pr_debug("%s: group=%p\n", __func__, group);
+
holder = list_first_entry(&group->notification_list, struct fsnotify_event_holder, event_list);
event = holder->event;
SPINLOCK_NEW,
};
+ pr_debug("%s: old_event=%p new_event=%p\n", __func__, old_event, new_event);
+
/*
* if the new_event's embedded holder is in use someone
* screwed up and didn't give us a clean new event.
if (!event)
return NULL;
+ pr_debug("%s: old_event=%p new_event=%p\n", __func__, old_event, event);
+
memcpy(event, old_event, sizeof(*event));
initialize_event(event);
if (!event)
return NULL;
+ pr_debug("%s: event=%p to_tell=%p mask=%x data=%p data_type=%d\n",
+ __func__, event, to_tell, mask, data, data_type);
+
initialize_event(event);
if (name) {