Re: [GIT PULL] notification tree - try 37!

From: Eric Paris
Date: Mon Aug 23 2010 - 12:46:40 EST


On Fri, 2010-08-20 at 14:38 +0200, Andreas Gruenbacher wrote:
> On Friday 20 August 2010 05:50:36 Eric Paris wrote:
> > We must be doing something different... What kernel? what kconfig?
> > What exact FS setup? What exact steps are you taking? What programs
> > are you using to test east side?
>
> I'm runnning 2.6.36-rc1, with CONFIG_FANOTIFY and
> CONFIG_FANOTIFY_ACCESS_PERMISSIONS on apparently. I am watching the same
> directory with inotify and fanotify at the same time, that is, with both an
> inotify and an fanotify listener running in two separate processes. The
> inotify listener is code I cannot send so easily, but I've shown the resulting
> strace. The fanotify listener is the one from [1].
>
> [1] http://git.kernel.org/?p=linux/kernel/git/agruen/fanotify-example.git
>
> Together with the traces I've provided this should give you way enough clues
> to be able to look up in the code why listening for fanotify events apparently
> causes a concurrent inotify listener to return an inotify event with struct
> inotify_event->mask == 0 for each fanotify perm event.

Spent a bit of the weekend trying to figure out what you were doing and
couldn't reproduce it or find it in the code because I had already fixed
it (albeit for slightly different reasons). The patch in question was:

http://marc.info/?l=linux-kernel&m=128214903125780&w=2

the vfsmount_test_mask was always initialized but since no vfsmount
marks were found it was never cleared. This left the code thinking that
the given (inode) mark was interested in the event. I think you could
reproduce it differently

inotifywait -m -e open /mnt/tmp
inotifywait -m -e close /mnt/tmp

and you would get both event types for both watches.

-Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/