fanotify: Document mount namespace events
PATCH 1/1 fanotify: Document mount namespace events
Used to subscribe for notifications for when mounts are attached/detached from a mount namespace.
---
Alejandro,
This feature was also added (by Miklos) in v6.14.
The man page patch can be merged independently of the FAN_PRE_ACCESS patch.
However, this patch depends on the FAN_FS_ERROR cleanup patch that I just posted, because of the reordering of event entries.
Thanks,
Amir.
man/man2/fanotify_init.2 | 20 ++++++++++++++++++++ man/man2/fanotify_mark.2 | 35 ++++++++++++++++++++++++++++++++++- man/man7/fanotify.7 | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 1 deletion(-)
man/man2/fanotify_init.2 +20 -0
@@ -330,6 +330,26 @@ that the directory entry is referring to. This is a synonym for .RB ( FAN_REPORT_DFID_NAME | FAN_REPORT_FID | FAN_REPORT_TARGET_FID ). .TP +.BR FAN_REPORT_MNT " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +This value allows the receipt of events which contain additional information +about the underlying mount correlated to an event. +An additional record of type +.B FAN_EVENT_INFO_TYPE_MNT +encapsulates the information about the mount and is included alongside the +generic event metadata structure. +The use of +.BR FAN_CLASS_CONTENT , +.BR FAN_CLASS_PRE_CONTENT, +or any of the +.B FAN_REPORT_DFID_NAME_TARGET +flags along with this flag is not permitted +and will result in the error +.BR EINVAL . +See +.BR fanotify (7) +for additional details. +.TP .BR FAN_REPORT_PIDFD " (since Linux 5.15 and 5.10.220)" .\" commit af579beb666aefb17e9a335c12c788c92932baf1 Events for fanotify groups initialized with this flag will contain
man/man2/fanotify_mark.2 +34 -1
@@ -67,7 +67,8 @@ contains all marks for filesystems are removed from the group. Otherwise, all marks for directories and files are removed. No flag other than, and at most one of, the flags -.B FAN_MARK_MOUNT +.BR FAN_MARK_MNTNS , +.BR FAN_MARK_MOUNT , or .B FAN_MARK_FILESYSTEM can be used in conjunction with
@@ -99,6 +100,20 @@ If the filesystem object to be marked is not a directory, the error .B ENOTDIR shall be raised. .TP +.BR FAN_MARK_MNTNS " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +Mark the mount namespace of the path specified by +.IR pathname . +If +.I pathname +is not itself a mount point, +the mount namespace of the mount containing +.I pathname +will be marked. +An fanotify group that is initialized with flag +.B FAN_REPORT_MNT +is required. +.TP .B FAN_MARK_MOUNT Mark the mount specified by .IR pathname .
@@ -395,6 +410,24 @@ Create an event when a marked file or directory itself has been moved. An fanotify group that identifies filesystem objects by file handles is required. .TP +.BR FAN_MNT_ATTACH ", " FAN_MNT_DETACH " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +Create an event when a mount was attached to or detached from a marked mount namespace. +An attempt to set this flag on an inode, mount or filesystem mark +will result in the error +.BR EINVAL . +An fanotify group that is initialized with flag +.B FAN_REPORT_MNT +and the mark flag +.B FAN_MARK_MNTNS +are required. +An additional information record of type +.B FAN_EVENT_INFO_TYPE_MNT +is returned with the event. +See +.BR fanotify (7) +for additional details. +.TP .BR FAN_FS_ERROR " (since Linux 5.16, 5.15.154, and 5.10.220)" .\" commit 9709bd548f11a092d124698118013f66e1740f9b Create an event when a filesystem error
man/man7/fanotify.7 +39 -0
@@ -228,6 +228,23 @@ struct fanotify_event_info_pidfd { .EE .in .P +In cases where an fanotify group is initialized with +.BR FAN_REPORT_MNT , +event listeners should expect to receive the below +information record object alongside the generic +.I fanotify_event_metadata +structure within the read buffer. +This structure is defined as follows: +.P +.in +4n +.EX +struct fanotify_event_info_mnt { + struct fanotify_event_info_header hdr; + __u64 mnt_id; +}; +.EE +.in +.P In case of a .B FAN_FS_ERROR event,
@@ -442,6 +459,12 @@ A file or directory that was opened read-only .RB ( O_RDONLY ) was closed. .TP +.BR FAN_MNT_ATTACH +A mount was attached to mount namespace. +.TP +.BR FAN_MNT_DETACH +A mount was detached to mount namespace. +.TP .B FAN_FS_ERROR A filesystem error was detected. .TP
@@ -540,6 +563,7 @@ The value of this field can be set to one of the following: .BR FAN_EVENT_INFO_TYPE_FID , .BR FAN_EVENT_INFO_TYPE_DFID , .BR FAN_EVENT_INFO_TYPE_DFID_NAME , +.BR FAN_EVENT_INFO_TYPE_MNT , .BR FAN_EVENT_INFO_TYPE_ERROR , .BR FAN_EVENT_INFO_TYPE_RANGE , or
@@ -727,6 +751,21 @@ in case of a terminated process, the value will be .BR \-ESRCH . .P The fields of the +.I fanotify_event_info_mnt +structure are as follows: +.TP +.I .hdr +This is a structure of type +.IR fanotify_event_info_header . +The +.I .info_type +field is set to +.BR FAN_EVENT_INFO_TYPE_MNT . +.TP +.I .mnt_id +Identifies the mount associated with the event. +.P +The fields of the .I fanotify_event_info_error structure are as follows: .TP
Signature · 1 line
2.34.1
Jan Kara
reviewerQuoted 7 lines · Amir Goldstein
Used to subscribe for notifications for when mounts are attached/detached from a mount namespace.
Cc Jan Kara <[email protected]>Cc Miklos Szeredi <[email protected]>Cc Christian Brauner <[email protected]>Signed-off-by Amir Goldstein <[email protected]>
...
man/man7/fanotify.7 A file or directory that was opened read-only · line 466
Quoted 9 lines
man/man7/fanotify.7 +5
-0@@ -442,6 +459,12 @@ A file or directory that was opened read-only .RB ( O_RDONLY ) was closed. .TP +.BR FAN_MNT_ATTACH +A mount was attached to mount namespace. +.TP +.BR FAN_MNT_DETACH +A mount was detached to mount namespace.
^^ from
Quoted 7 lines
man/man7/fanotify.7 +3
-0@@ -727,6 +751,21 @@ in case of a terminated process, the value will be .BR \-ESRCH . .P The fields of the +.I fanotify_event_info_mnt +structure are as follows: +.TP
man/man7/fanotify.7 in case of a terminated process, the value will be · line 766
Quoted 10 lines
man/man7/fanotify.7 +10
-0+.I .hdr +This is a structure of type +.IR fanotify_event_info_header . +The +.I .info_type +field is set to +.BR FAN_EVENT_INFO_TYPE_MNT . +.TP +.I .mnt_id +Identifies the mount associated with the event.
Since mnt_id is not well established, I think we should tell here a bit more about the mnt_id - that this is the ID you'll get from listmount(2) and can use it e.g. with statmount(2).
Honza
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR
Quoted 10 lines · Jan Kara
Quoted 7 lines · Amir Goldstein
Used to subscribe for notifications for when mounts are attached/detached from a mount namespace.
Cc Jan Kara <[email protected]>Cc Miklos Szeredi <[email protected]>Cc Christian Brauner <[email protected]>Signed-off-by Amir Goldstein <[email protected]>...
Quoted 11 lines
man/man7/fanotify.7 A file or directory that was opened read-only · line 466
Quoted 9 lines
man/man7/fanotify.7 +5
-0@@ -442,6 +459,12 @@ A file or directory that was opened read-only .RB ( O_RDONLY ) was closed. .TP +.BR FAN_MNT_ATTACH +A mount was attached to mount namespace. +.TP +.BR FAN_MNT_DETACH +A mount was detached to mount namespace.^^ from
thanks for spotting
Quoted 13 lines
Quoted 13 lines
man/man7/fanotify.7 +9
-0@@ -727,6 +751,21 @@ in case of a terminated process, the value will be .BR \-ESRCH . .P The fields of the +.I fanotify_event_info_mnt +structure are as follows: +.TP +.I .hdr +This is a structure of type +.IR fanotify_event_info_header . +The +.I .info_type +field is set to
Quoted 8 lines
man/man7/fanotify.7 in case of a terminated process, the value will be · line 766
Quoted 4 lines
man/man7/fanotify.7 +4
-0+.BR FAN_EVENT_INFO_TYPE_MNT . +.TP +.I .mnt_id +Identifies the mount associated with the event.Since
mnt_idis not well established, I think we should tell here a bit more about themnt_id- that this is the ID you'll get from listmount(2) and can use it e.g. with statmount(2).
You are right, but it is actually established much sooner, As I described mount_id in the recently merged man page patch name_to_handle_at.2: Document the AT_HANDLE_MNT_ID_UNIQUE flag
...is the unique mount id as the one returned by
.BR statx (2)
with the
.BR STATX_MNT_ID_UNIQUE
flag.
So I will add a reference to statx here as well.
Thanks,
Amir.
Quoted 4 lines · Amir Goldstein
man/man2/fanotify_mark.2 +0
-0@@ -99,6 +100,20 @@ If the filesystem object to be marked is not a directory, the error .B ENOTDIR shall be raised. .TP
man/man2/fanotify_mark.2 If the filesystem object to be marked is not a directory, the error · line 112
Quoted 10 lines
man/man2/fanotify_mark.2 +10
-0+.BR FAN_MARK_MNTNS " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +Mark the mount namespace of the path specified by +.IR pathname . +If +.I pathname +is not itself a mount point, +the mount namespace of the mount containing +.I pathname +will be marked.
This was the original version, but it was changed to take an nsfs path (/proc/$PID/ns/mnt) instead.
Looks good otherwise. Thanks for working on this!
Miklos
Quoted 12 lines · Miklos Szeredi
Quoted 9 lines · Amir Goldstein
man/man2/fanotify_mark.2 +5
-0@@ -99,6 +100,20 @@ If the filesystem object to be marked is not a directory, the error .B ENOTDIR shall be raised. .TP +.BR FAN_MARK_MNTNS " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +Mark the mount namespace of the path specified by +.IR pathname . +If
Quoted 8 lines
man/man2/fanotify_mark.2 If the filesystem object to be marked is not a directory, the error · line 112
Quoted 5 lines
man/man2/fanotify_mark.2 +5
-0+.I pathname +is not itself a mount point, +the mount namespace of the mount containing +.I pathname +will be marked.This was the original version, but it was changed to take an nsfs path (
/proc/$PID/ns/mnt) instead.
Oh right :)
Thanks,
Amir.
Quoted 14 lines · Amir Goldstein
Quoted 12 lines · Miklos Szeredi
Quoted 9 lines · Amir Goldstein
man/man2/fanotify_mark.2 +5
-0@@ -99,6 +100,20 @@ If the filesystem object to be marked is not a directory, the error .B ENOTDIR shall be raised. .TP +.BR FAN_MARK_MNTNS " (since Linux 6.14)" +.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 +Mark the mount namespace of the path specified by +.IR pathname . +If
Quoted 9 lines
Quoted 8 lines
man/man2/fanotify_mark.2 If the filesystem object to be marked is not a directory, the error · line 112
Quoted 5 lines
man/man2/fanotify_mark.2 +5
-0+.I pathname +is not itself a mount point, +the mount namespace of the mount containing +.I pathname +will be marked.This was the original version, but it was changed to take an nsfs path (
/proc/$PID/ns/mnt) instead.
Revised as:
.BR FAN_MARK_MNTNS " (since Linux 6.14)"
.\" commit 0f46d81f2bce970b1c562aa3c944a271bbec2729 Mark the mount namespace specified by
.IR pathname .
If the
.I pathname
is not a path that represents a mount namespace (e.g. .BR /proc/ pid /ns/mnt ),
the call fails with the error
.BR EINVAL .
An fanotify group that is initialized with flag .B FAN_REPORT_MNT
is required.
.TP
Thanks,
Amir.
Quoted 8 lines · Amir Goldstein
Used to subscribe for notifications for when mounts are attached/detached from a mount namespace.
Cc Jan Kara <[email protected]>Cc Miklos Szeredi <[email protected]>Cc Christian Brauner <[email protected]>Signed-off-by Amir Goldstein <[email protected]>---
With the changes pointed out by Miklos and Jan:
Thanks for doing this!