@@ -189,46 +189,44 @@ static int send_to_group(struct inode *to_tell,
189
189
const unsigned char * file_name ,
190
190
struct fsnotify_iter_info * iter_info )
191
191
{
192
- struct fsnotify_mark * inode_mark = fsnotify_iter_inode_mark (iter_info );
193
- struct fsnotify_mark * vfsmount_mark = fsnotify_iter_vfsmount_mark (iter_info );
194
192
struct fsnotify_group * group = NULL ;
195
193
__u32 test_mask = (mask & ~FS_EVENT_ON_CHILD );
196
194
__u32 marks_mask = 0 ;
197
195
__u32 marks_ignored_mask = 0 ;
196
+ struct fsnotify_mark * mark ;
197
+ int type ;
198
198
199
199
if (WARN_ON (!iter_info -> report_mask ))
200
200
return 0 ;
201
201
202
202
/* clear ignored on inode modification */
203
203
if (mask & FS_MODIFY ) {
204
- if (inode_mark &&
205
- !(inode_mark -> flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY ))
206
- inode_mark -> ignored_mask = 0 ;
207
- if (vfsmount_mark &&
208
- !(vfsmount_mark -> flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY ))
209
- vfsmount_mark -> ignored_mask = 0 ;
210
- }
211
-
212
- /* does the inode mark tell us to do something? */
213
- if (inode_mark ) {
214
- group = inode_mark -> group ;
215
- marks_mask |= inode_mark -> mask ;
216
- marks_ignored_mask |= inode_mark -> ignored_mask ;
204
+ fsnotify_foreach_obj_type (type ) {
205
+ if (!fsnotify_iter_should_report_type (iter_info , type ))
206
+ continue ;
207
+ mark = iter_info -> marks [type ];
208
+ if (mark &&
209
+ !(mark -> flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY ))
210
+ mark -> ignored_mask = 0 ;
211
+ }
217
212
}
218
213
219
- /* does the vfsmount_mark tell us to do something? */
220
- if (vfsmount_mark ) {
221
- group = vfsmount_mark -> group ;
222
- marks_mask |= vfsmount_mark -> mask ;
223
- marks_ignored_mask |= vfsmount_mark -> ignored_mask ;
214
+ fsnotify_foreach_obj_type (type ) {
215
+ if (!fsnotify_iter_should_report_type (iter_info , type ))
216
+ continue ;
217
+ mark = iter_info -> marks [type ];
218
+ /* does the object mark tell us to do something? */
219
+ if (mark ) {
220
+ group = mark -> group ;
221
+ marks_mask |= mark -> mask ;
222
+ marks_ignored_mask |= mark -> ignored_mask ;
223
+ }
224
224
}
225
225
226
- pr_debug ("%s: group=%p to_tell=%p mask=%x inode_mark=%p"
227
- " vfsmount_mark=%p marks_mask=%x marks_ignored_mask=%x"
226
+ pr_debug ("%s: group=%p to_tell=%p mask=%x marks_mask=%x marks_ignored_mask=%x"
228
227
" data=%p data_is=%d cookie=%d\n" ,
229
- __func__ , group , to_tell , mask , inode_mark , vfsmount_mark ,
230
- marks_mask , marks_ignored_mask , data ,
231
- data_is , cookie );
228
+ __func__ , group , to_tell , mask , marks_mask , marks_ignored_mask ,
229
+ data , data_is , cookie );
232
230
233
231
if (!(test_mask & marks_mask & ~marks_ignored_mask ))
234
232
return 0 ;
0 commit comments