Lines Matching refs:group

142 	struct fsnotify_group *group = file->private_data;  in inotify_poll()  local
145 poll_wait(file, &group->notification_waitq, wait); in inotify_poll()
146 spin_lock(&group->notification_lock); in inotify_poll()
147 if (!fsnotify_notify_queue_is_empty(group)) in inotify_poll()
149 spin_unlock(&group->notification_lock); in inotify_poll()
171 static struct fsnotify_event *get_one_event(struct fsnotify_group *group, in get_one_event() argument
177 event = fsnotify_peek_first_event(group); in get_one_event()
181 pr_debug("%s: group=%p event=%p\n", __func__, group, event); in get_one_event()
189 fsnotify_remove_first_event(group); in get_one_event()
200 static ssize_t copy_event_to_user(struct fsnotify_group *group, in copy_event_to_user() argument
210 pr_debug("%s: group=%p event=%p\n", __func__, group, fsn_event); in copy_event_to_user()
253 struct fsnotify_group *group; in inotify_read() local
260 group = file->private_data; in inotify_read()
262 add_wait_queue(&group->notification_waitq, &wait); in inotify_read()
264 spin_lock(&group->notification_lock); in inotify_read()
265 kevent = get_one_event(group, count); in inotify_read()
266 spin_unlock(&group->notification_lock); in inotify_read()
268 pr_debug("%s: group=%p kevent=%p\n", __func__, group, kevent); in inotify_read()
274 ret = copy_event_to_user(group, kevent, buf); in inotify_read()
275 fsnotify_destroy_event(group, kevent); in inotify_read()
295 remove_wait_queue(&group->notification_waitq, &wait); in inotify_read()
304 struct fsnotify_group *group = file->private_data; in inotify_release() local
306 pr_debug("%s: group=%p\n", __func__, group); in inotify_release()
309 fsnotify_destroy_group(group); in inotify_release()
317 struct fsnotify_group *group; in inotify_ioctl() local
323 group = file->private_data; in inotify_ioctl()
326 pr_debug("%s: group=%p cmd=%u\n", __func__, group, cmd); in inotify_ioctl()
330 spin_lock(&group->notification_lock); in inotify_ioctl()
331 list_for_each_entry(fsn_event, &group->notification_list, in inotify_ioctl()
336 spin_unlock(&group->notification_lock); in inotify_ioctl()
345 data = &group->inotify_data; in inotify_ioctl()
415 static struct inotify_inode_mark *inotify_idr_find_locked(struct fsnotify_group *group, in inotify_idr_find_locked() argument
418 struct idr *idr = &group->inotify_data.idr; in inotify_idr_find_locked()
419 spinlock_t *idr_lock = &group->inotify_data.idr_lock; in inotify_idr_find_locked()
436 static struct inotify_inode_mark *inotify_idr_find(struct fsnotify_group *group, in inotify_idr_find() argument
440 spinlock_t *idr_lock = &group->inotify_data.idr_lock; in inotify_idr_find()
443 i_mark = inotify_idr_find_locked(group, wd); in inotify_idr_find()
453 static void inotify_remove_from_idr(struct fsnotify_group *group, in inotify_remove_from_idr() argument
456 struct idr *idr = &group->inotify_data.idr; in inotify_remove_from_idr()
457 spinlock_t *idr_lock = &group->inotify_data.idr_lock; in inotify_remove_from_idr()
470 __func__, i_mark, i_mark->wd, i_mark->fsn_mark.group); in inotify_remove_from_idr()
475 found_i_mark = inotify_idr_find_locked(group, wd); in inotify_remove_from_idr()
478 __func__, i_mark, i_mark->wd, i_mark->fsn_mark.group); in inotify_remove_from_idr()
491 i_mark->wd, i_mark->fsn_mark.group, found_i_mark, in inotify_remove_from_idr()
492 found_i_mark->wd, found_i_mark->fsn_mark.group); in inotify_remove_from_idr()
502 __func__, i_mark, i_mark->wd, i_mark->fsn_mark.group); in inotify_remove_from_idr()
522 struct fsnotify_group *group) in inotify_ignored_and_remove_idr() argument
532 inotify_remove_from_idr(group, i_mark); in inotify_ignored_and_remove_idr()
534 dec_inotify_watches(group->inotify_data.ucounts); in inotify_ignored_and_remove_idr()
537 static int inotify_update_existing_watch(struct fsnotify_group *group, in inotify_update_existing_watch() argument
548 fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, group); in inotify_update_existing_watch()
591 static int inotify_new_watch(struct fsnotify_group *group, in inotify_new_watch() argument
597 struct idr *idr = &group->inotify_data.idr; in inotify_new_watch()
598 spinlock_t *idr_lock = &group->inotify_data.idr_lock; in inotify_new_watch()
604 fsnotify_init_mark(&tmp_i_mark->fsn_mark, group); in inotify_new_watch()
614 if (!inc_inotify_watches(group->inotify_data.ucounts)) { in inotify_new_watch()
615 inotify_remove_from_idr(group, tmp_i_mark); in inotify_new_watch()
624 inotify_remove_from_idr(group, tmp_i_mark); in inotify_new_watch()
639 static int inotify_update_watch(struct fsnotify_group *group, struct inode *inode, u32 arg) in inotify_update_watch() argument
643 fsnotify_group_lock(group); in inotify_update_watch()
645 ret = inotify_update_existing_watch(group, inode, arg); in inotify_update_watch()
648 ret = inotify_new_watch(group, inode, arg); in inotify_update_watch()
649 fsnotify_group_unlock(group); in inotify_update_watch()
656 struct fsnotify_group *group; in inotify_new_group() local
659 group = fsnotify_alloc_group(&inotify_fsnotify_ops, in inotify_new_group()
661 if (IS_ERR(group)) in inotify_new_group()
662 return group; in inotify_new_group()
666 fsnotify_destroy_group(group); in inotify_new_group()
669 group->overflow_event = &oevent->fse; in inotify_new_group()
670 fsnotify_init_event(group->overflow_event); in inotify_new_group()
676 group->max_events = max_events; in inotify_new_group()
677 group->memcg = get_mem_cgroup_from_mm(current->mm); in inotify_new_group()
679 spin_lock_init(&group->inotify_data.idr_lock); in inotify_new_group()
680 idr_init(&group->inotify_data.idr); in inotify_new_group()
681 group->inotify_data.ucounts = inc_ucount(current_user_ns(), in inotify_new_group()
685 if (!group->inotify_data.ucounts) { in inotify_new_group()
686 fsnotify_destroy_group(group); in inotify_new_group()
690 return group; in inotify_new_group()
697 struct fsnotify_group *group; in do_inotify_init() local
708 group = inotify_new_group(inotify_max_queued_events); in do_inotify_init()
709 if (IS_ERR(group)) in do_inotify_init()
710 return PTR_ERR(group); in do_inotify_init()
712 ret = anon_inode_getfd("inotify", &inotify_fops, group, in do_inotify_init()
715 fsnotify_destroy_group(group); in do_inotify_init()
733 struct fsnotify_group *group; in SYSCALL_DEFINE3() local
784 group = f.file->private_data; in SYSCALL_DEFINE3()
787 ret = inotify_update_watch(group, inode, mask); in SYSCALL_DEFINE3()
796 struct fsnotify_group *group; in SYSCALL_DEFINE2() local
809 group = f.file->private_data; in SYSCALL_DEFINE2()
811 i_mark = inotify_idr_find(group, wd); in SYSCALL_DEFINE2()
817 fsnotify_destroy_mark(&i_mark->fsn_mark, group); in SYSCALL_DEFINE2()