Commit 5ba08e2e authored by Eric Paris's avatar Eric Paris

fsnotify: add pr_debug throughout

It can be hard to debug fsnotify since there are so few printks.  Use
pr_debug to allow for dynamic debugging.
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 80af2588
...@@ -174,6 +174,10 @@ static int send_to_group(struct fsnotify_group *group, struct inode *to_tell, ...@@ -174,6 +174,10 @@ static int send_to_group(struct fsnotify_group *group, struct inode *to_tell,
int data_is, u32 cookie, const unsigned char *file_name, int data_is, u32 cookie, const unsigned char *file_name,
struct fsnotify_event **event) 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, if (!group->ops->should_send_event(group, to_tell, mnt, mask,
data, data_is)) data, data_is))
return 0; return 0;
......
...@@ -98,6 +98,9 @@ static int inotify_handle_event(struct fsnotify_group *group, struct fsnotify_ev ...@@ -98,6 +98,9 @@ static int inotify_handle_event(struct fsnotify_group *group, struct fsnotify_ev
struct fsnotify_event_private_data *fsn_event_priv; struct fsnotify_event_private_data *fsn_event_priv;
int wd, ret; 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; to_tell = event->to_tell;
fsn_mark = fsnotify_find_inode_mark(group, to_tell); fsn_mark = fsnotify_find_inode_mark(group, to_tell);
...@@ -151,6 +154,9 @@ static bool inotify_should_send_event(struct fsnotify_group *group, struct inode ...@@ -151,6 +154,9 @@ static bool inotify_should_send_event(struct fsnotify_group *group, struct inode
struct fsnotify_mark *fsn_mark; struct fsnotify_mark *fsn_mark;
bool send; 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); fsn_mark = fsnotify_find_inode_mark(group, inode);
if (!fsn_mark) if (!fsn_mark)
return false; return false;
......
...@@ -141,6 +141,8 @@ static struct fsnotify_event *get_one_event(struct fsnotify_group *group, ...@@ -141,6 +141,8 @@ static struct fsnotify_event *get_one_event(struct fsnotify_group *group,
event = fsnotify_peek_notify_event(group); event = fsnotify_peek_notify_event(group);
pr_debug("%s: group=%p event=%p\n", __func__, group, event);
if (event->name_len) if (event->name_len)
event_size += roundup(event->name_len + 1, event_size); event_size += roundup(event->name_len + 1, event_size);
...@@ -170,6 +172,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, ...@@ -170,6 +172,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
size_t event_size = sizeof(struct inotify_event); size_t event_size = sizeof(struct inotify_event);
size_t name_len = 0; 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 */ /* we get the inotify watch descriptor from the event private data */
spin_lock(&event->lock); spin_lock(&event->lock);
fsn_priv = fsnotify_remove_priv_from_event(group, event); fsn_priv = fsnotify_remove_priv_from_event(group, event);
...@@ -242,6 +246,8 @@ static ssize_t inotify_read(struct file *file, char __user *buf, ...@@ -242,6 +246,8 @@ static ssize_t inotify_read(struct file *file, char __user *buf,
kevent = get_one_event(group, count); kevent = get_one_event(group, count);
mutex_unlock(&group->notification_mutex); mutex_unlock(&group->notification_mutex);
pr_debug("%s: group=%p kevent=%p\n", __func__, group, kevent);
if (kevent) { if (kevent) {
ret = PTR_ERR(kevent); ret = PTR_ERR(kevent);
if (IS_ERR(kevent)) if (IS_ERR(kevent))
...@@ -286,6 +292,8 @@ static int inotify_release(struct inode *ignored, struct file *file) ...@@ -286,6 +292,8 @@ static int inotify_release(struct inode *ignored, struct file *file)
struct fsnotify_group *group = file->private_data; struct fsnotify_group *group = file->private_data;
struct user_struct *user = group->inotify_data.user; struct user_struct *user = group->inotify_data.user;
pr_debug("%s: group=%p\n", __func__, group);
fsnotify_clear_marks_by_group(group); fsnotify_clear_marks_by_group(group);
/* free this group, matching get was inotify_init->fsnotify_obtain_group */ /* free this group, matching get was inotify_init->fsnotify_obtain_group */
...@@ -309,6 +317,8 @@ static long inotify_ioctl(struct file *file, unsigned int cmd, ...@@ -309,6 +317,8 @@ static long inotify_ioctl(struct file *file, unsigned int cmd,
group = file->private_data; group = file->private_data;
p = (void __user *) arg; p = (void __user *) arg;
pr_debug("%s: group=%p cmd=%u\n", __func__, group, cmd);
switch (cmd) { switch (cmd) {
case FIONREAD: case FIONREAD:
mutex_lock(&group->notification_mutex); mutex_lock(&group->notification_mutex);
......
...@@ -87,6 +87,8 @@ void fsnotify_put_event(struct fsnotify_event *event) ...@@ -87,6 +87,8 @@ void fsnotify_put_event(struct fsnotify_event *event)
return; return;
if (atomic_dec_and_test(&event->refcnt)) { if (atomic_dec_and_test(&event->refcnt)) {
pr_debug("%s: event=%p\n", __func__, event);
if (event->data_type == FSNOTIFY_EVENT_PATH) if (event->data_type == FSNOTIFY_EVENT_PATH)
path_put(&event->path); path_put(&event->path);
...@@ -146,6 +148,8 @@ int fsnotify_add_notify_event(struct fsnotify_group *group, struct fsnotify_even ...@@ -146,6 +148,8 @@ int fsnotify_add_notify_event(struct fsnotify_group *group, struct fsnotify_even
struct list_head *list = &group->notification_list; struct list_head *list = &group->notification_list;
int rc = 0; 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. * 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 * Check if we expect to be able to use that holder. If not alloc a new
...@@ -222,6 +226,8 @@ struct fsnotify_event *fsnotify_remove_notify_event(struct fsnotify_group *group ...@@ -222,6 +226,8 @@ struct fsnotify_event *fsnotify_remove_notify_event(struct fsnotify_group *group
BUG_ON(!mutex_is_locked(&group->notification_mutex)); 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); holder = list_first_entry(&group->notification_list, struct fsnotify_event_holder, event_list);
event = holder->event; event = holder->event;
...@@ -307,6 +313,8 @@ int fsnotify_replace_event(struct fsnotify_event_holder *old_holder, ...@@ -307,6 +313,8 @@ int fsnotify_replace_event(struct fsnotify_event_holder *old_holder,
SPINLOCK_NEW, 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 * if the new_event's embedded holder is in use someone
* screwed up and didn't give us a clean new event. * screwed up and didn't give us a clean new event.
...@@ -340,6 +348,8 @@ struct fsnotify_event *fsnotify_clone_event(struct fsnotify_event *old_event) ...@@ -340,6 +348,8 @@ struct fsnotify_event *fsnotify_clone_event(struct fsnotify_event *old_event)
if (!event) if (!event)
return NULL; return NULL;
pr_debug("%s: old_event=%p new_event=%p\n", __func__, old_event, event);
memcpy(event, old_event, sizeof(*event)); memcpy(event, old_event, sizeof(*event));
initialize_event(event); initialize_event(event);
...@@ -379,6 +389,9 @@ struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, ...@@ -379,6 +389,9 @@ struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask,
if (!event) if (!event)
return NULL; 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); initialize_event(event);
if (name) { if (name) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment