Lines Matching refs:group
10 * The group->recnt and mark->refcnt tell how many "things" in the kernel
13 * the reference a group and a mark hold to each other.
21 * group->mark_mutex
25 * group->mark_mutex protects the marks_list anchored inside a given group and
27 * data (i.e group limits).
30 * Furthermore it protects the access to a reference of the group that the mark
45 * mark->connector set until we drop group->mark_mutex.
182 * this by holding a mark->lock or mark->group->mark_mutex for a mark on this
274 struct fsnotify_group *group = mark->group;
276 if (WARN_ON_ONCE(!group))
278 group->ops->free_mark(mark);
279 fsnotify_put_group(group);
353 * Also pin the group so it doesn't disappear under us.
363 /* mark is attached, group is still alive then */
364 atomic_inc(&mark->group->user_waits);
375 * Puts marks and wakes up group destruction if necessary.
382 struct fsnotify_group *group = mark->group;
386 * We abuse notification_waitq on group shutdown for waiting for
389 if (atomic_dec_and_test(&group->user_waits) && group->shutdown)
390 wake_up(&group->notification_waitq);
433 * Mark mark as detached, remove it from group list. Mark still stays in object
435 * removed from group list before corresponding reference to it is dropped. In
437 * group->mark_mutex if we found the mark through g_list.
439 * Must be called with group->mark_mutex held. The caller must either hold
444 fsnotify_group_assert_locked(mark->group);
473 struct fsnotify_group *group = mark->group;
486 * callback to the group function to let it know that this mark
489 if (group->ops->freeing_mark)
490 group->ops->freeing_mark(mark, group);
494 struct fsnotify_group *group)
496 fsnotify_group_lock(group);
498 fsnotify_group_unlock(group);
507 * notification group). Events shall be passed to notification groups in
513 * and vfsmount marks of each group together. Using the group address as
606 * to which group and for which inodes. These marks are ordered according to
607 * priority, highest number first, and then by the group's location in memory.
669 if ((lmark->group == mark->group) &&
671 !(mark->group->flags & FSNOTIFY_GROUP_DUPS)) {
676 cmp = fsnotify_compare_groups(lmark->group, mark->group);
700 * Attach an initialized mark to a given group and fs object.
702 * event types should be delivered to which group.
708 struct fsnotify_group *group = mark->group;
711 fsnotify_group_assert_locked(group);
715 * group->mark_mutex
722 list_add(&mark->g_list, &group->marks_list);
749 struct fsnotify_group *group = mark->group;
751 fsnotify_group_lock(group);
753 fsnotify_group_unlock(group);
759 * Given a list of marks, find the mark associated with given group. If found
763 struct fsnotify_group *group)
773 if (mark->group == group &&
785 /* Clear any marks in a group with given type mask */
786 void fsnotify_clear_marks_by_group(struct fsnotify_group *group,
795 head = &group->marks_list;
807 fsnotify_group_lock(group);
808 list_for_each_entry_safe(mark, lmark, &group->marks_list, g_list) {
812 fsnotify_group_unlock(group);
816 fsnotify_group_lock(group);
818 fsnotify_group_unlock(group);
824 fsnotify_group_unlock(group);
854 fsnotify_destroy_mark(mark, mark->group);
873 struct fsnotify_group *group)
878 fsnotify_get_group(group);
879 mark->group = group;