Lines Matching refs:fsn_mark

1051 static __u32 fanotify_mark_remove_from_mask(struct fsnotify_mark *fsn_mark,
1059 spin_lock(&fsn_mark->lock);
1060 oldmask = fsnotify_calc_mask(fsn_mark);
1062 fsn_mark->mask &= ~mask;
1064 fsn_mark->ignore_mask &= ~mask;
1066 newmask = fsnotify_calc_mask(fsn_mark);
1073 *destroy = !((fsn_mark->mask | fsn_mark->ignore_mask) & ~umask);
1074 spin_unlock(&fsn_mark->lock);
1083 struct fsnotify_mark *fsn_mark = NULL;
1088 fsn_mark = fsnotify_find_mark(connp, group);
1089 if (!fsn_mark) {
1094 removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags,
1096 if (removed & fsnotify_conn_mask(fsn_mark->connector))
1097 fsnotify_recalc_mask(fsn_mark->connector);
1099 fsnotify_detach_mark(fsn_mark);
1102 fsnotify_free_mark(fsn_mark);
1105 fsnotify_put_mark(fsn_mark);
1133 static bool fanotify_mark_update_flags(struct fsnotify_mark *fsn_mark,
1147 fsn_mark->flags |= FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS;
1155 !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)) {
1156 fsn_mark->flags |= FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY;
1157 if (!(fsn_mark->mask & FS_MODIFY))
1161 if (fsn_mark->connector->type != FSNOTIFY_OBJ_TYPE_INODE ||
1162 want_iref == !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF))
1170 fsn_mark->flags &= ~FSNOTIFY_MARK_FLAG_NO_IREF;
1175 static bool fanotify_mark_add_to_mask(struct fsnotify_mark *fsn_mark,
1180 spin_lock(&fsn_mark->lock);
1182 fsn_mark->mask |= mask;
1184 fsn_mark->ignore_mask |= mask;
1186 recalc = fsnotify_calc_mask(fsn_mark) &
1187 ~fsnotify_conn_mask(fsn_mark->connector);
1189 recalc |= fanotify_mark_update_flags(fsn_mark, fan_flags);
1190 spin_unlock(&fsn_mark->lock);
1248 static int fanotify_may_update_existing_mark(struct fsnotify_mark *fsn_mark,
1255 !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF))
1262 fsn_mark->flags & FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS)
1273 fsn_mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)
1284 struct fsnotify_mark *fsn_mark;
1289 fsn_mark = fsnotify_find_mark(connp, group);
1290 if (!fsn_mark) {
1291 fsn_mark = fanotify_add_new_mark(group, connp, obj_type,
1293 if (IS_ERR(fsn_mark)) {
1295 return PTR_ERR(fsn_mark);
1302 ret = fanotify_may_update_existing_mark(fsn_mark, fan_flags);
1317 recalc = fanotify_mark_add_to_mask(fsn_mark, mask, fan_flags);
1319 fsnotify_recalc_mask(fsn_mark->connector);
1324 fsnotify_put_mark(fsn_mark);