Re: [RFC][PATCH] fanotify: allow setting FAN_CREATE in mount mark mask
From: Amir Goldstein <amir73il@gmail.com>
Date: 2021-03-30 12:21:54
Also in:
linux-fsdevel
On Sun, Mar 28, 2021 at 6:56 PM Amir Goldstein [off-list ref] wrote:
Add a high level hook fsnotify_path_create() which is called from syscall context where mount context is available, so that FAN_CREATE event can be added to a mount mark mask. This high level hook is called in addition to fsnotify_create(), fsnotify_mkdir() and fsnotify_link() hooks in vfs helpers where the mount context is not available. In the context where fsnotify_path_create() will be called, a dentry flag flag is set on the new dentry the suppress the FS_CREATE event in the vfs level hooks. This functionality was requested by Christian Brauner to replace recursive inotify watches for detecting when some path was created under an idmapped mount without having to monitor FAN_CREATE events in the entire filesystem. In combination with more changes to allow unprivileged fanotify listener to watch an idmapped mount, this functionality would be usable also by nested container managers. Link: https://lore.kernel.org/linux-fsdevel/20210318143140.jxycfn3fpqntq34z@wittgenstein/ (local) Cc: Christian Brauner <redacted> Signed-off-by: Amir Goldstein <amir73il@gmail.com> --- Jan, After trying several different approaches, I finally realized that making FAN_CREATE available for mount marks is not that hard and it could be very useful IMO. Adding support for other "inode events" with mount mark, such as FAN_ATTRIB, FAN_DELETE, FAN_MOVE may also be possible, but adding support for FAN_CREATE was really easy due to the fact that all call sites are already surrounded by filename_creat()/done_path_create() calls.
FWIW, adding support for FAN_DELETE and FAN_MOVE_SELF was not so hard. The move event at least will also be needed for the use case where watching when a negative path is instantiated. https://github.com/amir73il/linux/commits/fsnotify_path_hooks Thanks, Amir.