]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
fanotify: allow "weak" fsid when watching a single filesystem
authorAmir Goldstein <amir73il@gmail.com>
Thu, 30 Nov 2023 16:56:19 +0000 (18:56 +0200)
committerJan Kara <jack@suse.cz>
Fri, 1 Dec 2023 09:55:21 +0000 (10:55 +0100)
commit30ad1938326bf9303ca38090339d948975a626f5
tree984c77da4696ad4e46cbae8ff859223e5fb6fc37
parent7232522e6cafdf466ed7649c14546fd07ccc1978
fanotify: allow "weak" fsid when watching a single filesystem

So far, fanotify returns -ENODEV or -EXDEV when trying to set a mark
on a filesystem with a "weak" fsid, namely, zero fsid (e.g. fuse), or
non-uniform fsid (e.g. btrfs non-root subvol).

When group is watching inodes all from the same filesystem (or subvol),
allow adding inode marks with "weak" fsid, because there is no ambiguity
regarding which filesystem reports the event.

The first mark added to a group determines if this group is single or
multi filesystem, depending on the fsid at the path of the added mark.

If the first mark added has a "strong" fsid, marks with "weak" fsid
cannot be added and vice versa.

If the first mark added has a "weak" fsid, following marks must have
the same "weak" fsid and the same sb as the first mark.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20231130165619.3386452-3-amir73il@gmail.com>
fs/notify/fanotify/fanotify.c
fs/notify/fanotify/fanotify.h
fs/notify/fanotify/fanotify_user.c
include/linux/fsnotify_backend.h