]> git.baikalelectronics.ru Git - kernel.git/commit
fanotify: merge duplicate events on parent and child
authorAmir Goldstein <amir73il@gmail.com>
Thu, 19 Mar 2020 15:10:16 +0000 (17:10 +0200)
committerJan Kara <jack@suse.cz>
Tue, 24 Mar 2020 10:29:12 +0000 (11:29 +0100)
commit253357c4d47084b0e6ea3701e23c7823af5a0454
treebfb9aca3dc4d2d6016dcaec60f36b1b953639042
parent673753c1c94717ad0d5a3024fe9c601d1c41e465
fanotify: merge duplicate events on parent and child

With inotify, when a watch is set on a directory and on its child, an
event on the child is reported twice, once with wd of the parent watch
and once with wd of the child watch without the filename.

With fanotify, when a watch is set on a directory and on its child, an
event on the child is reported twice, but it has the exact same
information - either an open file descriptor of the child or an encoded
fid of the child.

The reason that the two identical events are not merged is because the
object id used for merging events in the queue is the child inode in one
event and parent inode in the other.

For events with path or dentry data, use the victim inode instead of the
watched inode as the object id for event merging, so that the event
reported on parent will be merged with the event reported on the child.

Link: https://lore.kernel.org/r/20200319151022.31456-9-amir73il@gmail.com
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/notify/fanotify/fanotify.c