• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/fs/notify/inotify/

Lines Matching refs:group

114 	struct fsnotify_group *group = file->private_data;
117 poll_wait(file, &group->notification_waitq, wait);
118 mutex_lock(&group->notification_mutex);
119 if (!fsnotify_notify_queue_is_empty(group))
121 mutex_unlock(&group->notification_mutex);
131 * Called with the group->notification_mutex held.
133 static struct fsnotify_event *get_one_event(struct fsnotify_group *group,
139 if (fsnotify_notify_queue_is_empty(group))
142 event = fsnotify_peek_notify_event(group);
144 pr_debug("%s: group=%p event=%p\n", __func__, group, event);
154 fsnotify_remove_notify_event(group);
165 static ssize_t copy_event_to_user(struct fsnotify_group *group,
175 pr_debug("%s: group=%p event=%p\n", __func__, group, event);
179 fsn_priv = fsnotify_remove_priv_from_event(group, event);
233 struct fsnotify_group *group;
240 group = file->private_data;
243 prepare_to_wait(&group->notification_waitq, &wait, TASK_INTERRUPTIBLE);
245 mutex_lock(&group->notification_mutex);
246 kevent = get_one_event(group, count);
247 mutex_unlock(&group->notification_mutex);
249 pr_debug("%s: group=%p kevent=%p\n", __func__, group, kevent);
255 ret = copy_event_to_user(group, kevent, buf);
277 finish_wait(&group->notification_waitq, &wait);
285 struct fsnotify_group *group = file->private_data;
287 return fasync_helper(fd, file, on, &group->inotify_data.fa) >= 0 ? 0 : -EIO;
292 struct fsnotify_group *group = file->private_data;
293 struct user_struct *user = group->inotify_data.user;
295 pr_debug("%s: group=%p\n", __func__, group);
297 fsnotify_clear_marks_by_group(group);
299 /* free this group, matching get was inotify_init->fsnotify_obtain_group */
300 fsnotify_put_group(group);
310 struct fsnotify_group *group;
317 group = file->private_data;
320 pr_debug("%s: group=%p cmd=%u\n", __func__, group, cmd);
324 mutex_lock(&group->notification_mutex);
325 list_for_each_entry(holder, &group->notification_list, event_list) {
332 mutex_unlock(&group->notification_mutex);
391 static struct inotify_inode_mark *inotify_idr_find_locked(struct fsnotify_group *group,
394 struct idr *idr = &group->inotify_data.idr;
395 spinlock_t *idr_lock = &group->inotify_data.idr_lock;
412 static struct inotify_inode_mark *inotify_idr_find(struct fsnotify_group *group,
416 spinlock_t *idr_lock = &group->inotify_data.idr_lock;
419 i_mark = inotify_idr_find_locked(group, wd);
425 static void do_inotify_remove_from_idr(struct fsnotify_group *group,
428 struct idr *idr = &group->inotify_data.idr;
429 spinlock_t *idr_lock = &group->inotify_data.idr_lock;
444 static void inotify_remove_from_idr(struct fsnotify_group *group,
447 spinlock_t *idr_lock = &group->inotify_data.idr_lock;
459 WARN_ONCE(1, "%s: i_mark=%p i_mark->wd=%d i_mark->group=%p"
461 i_mark->fsn_mark.group, i_mark->fsn_mark.i.inode);
466 found_i_mark = inotify_idr_find_locked(group, wd);
468 WARN_ONCE(1, "%s: i_mark=%p i_mark->wd=%d i_mark->group=%p"
470 i_mark->fsn_mark.group, i_mark->fsn_mark.i.inode);
480 WARN_ONCE(1, "%s: i_mark=%p i_mark->wd=%d i_mark->group=%p "
482 "found_i_mark->group=%p found_i_mark->inode=%p\n",
483 __func__, i_mark, i_mark->wd, i_mark->fsn_mark.group,
485 found_i_mark->fsn_mark.group,
496 printk(KERN_ERR "%s: i_mark=%p i_mark->wd=%d i_mark->group=%p"
498 i_mark->fsn_mark.group, i_mark->fsn_mark.i.inode);
503 do_inotify_remove_from_idr(group, i_mark);
516 struct fsnotify_group *group)
538 fsn_event_priv->group = group;
541 notify_event = fsnotify_add_notify_event(group, ignored_event, fsn_event_priv, NULL);
556 inotify_remove_from_idr(group, i_mark);
558 atomic_dec(&group->inotify_data.user->inotify_watches);
571 static int inotify_update_existing_watch(struct fsnotify_group *group,
587 fsn_mark = fsnotify_find_inode_mark(group, inode);
625 static int inotify_new_watch(struct fsnotify_group *group,
632 struct idr *idr = &group->inotify_data.idr;
633 spinlock_t *idr_lock = &group->inotify_data.idr_lock;
649 if (atomic_read(&group->inotify_data.user->inotify_watches) >= inotify_max_user_watches)
652 ret = inotify_add_to_idr(idr, idr_lock, &group->inotify_data.last_wd,
658 ret = fsnotify_add_mark(&tmp_i_mark->fsn_mark, group, inode, NULL, 0);
661 inotify_remove_from_idr(group, tmp_i_mark);
666 atomic_inc(&group->inotify_data.user->inotify_watches);
678 static int inotify_update_watch(struct fsnotify_group *group, struct inode *inode, u32 arg)
684 ret = inotify_update_existing_watch(group, inode, arg);
687 ret = inotify_new_watch(group, inode, arg);
701 struct fsnotify_group *group;
703 group = fsnotify_alloc_group(&inotify_fsnotify_ops);
704 if (IS_ERR(group))
705 return group;
707 group->max_events = max_events;
709 spin_lock_init(&group->inotify_data.idr_lock);
710 idr_init(&group->inotify_data.idr);
711 group->inotify_data.last_wd = 0;
712 group->inotify_data.user = user;
713 group->inotify_data.fa = NULL;
715 return group;
722 struct fsnotify_group *group;
740 /* fsnotify_obtain_group took a reference to group, we put this when we kill the file in the end */
741 group = inotify_new_group(user, inotify_max_queued_events);
742 if (IS_ERR(group)) {
743 ret = PTR_ERR(group);
749 ret = anon_inode_getfd("inotify", &inotify_fops, group,
754 fsnotify_put_group(group);
769 struct fsnotify_group *group;
795 /* inode held in place by reference to path; group by fget on fd */
797 group = filp->private_data;
800 ret = inotify_update_watch(group, inode, mask);
809 struct fsnotify_group *group;
823 group = filp->private_data;
826 i_mark = inotify_idr_find(group, wd);