]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
man/man?/fanotify*: Document FAN_PRE_ACCESS event
authorAmir Goldstein <amir73il@gmail.com>
Sun, 30 Mar 2025 12:55:36 +0000 (14:55 +0200)
committerAlejandro Colomar <alx@kernel.org>
Wed, 2 Apr 2025 21:04:25 +0000 (23:04 +0200)
The new FAN_PRE_ACCESS events are created before access to a file range,
to provides an opportunity for the event listener to modify the content
of the object before the user can accesss it.

Those events are available for group in class FAN_CLASS_PRE_CONTENT
They are reported with FAN_EVENT_INFO_TYPE_RANGE info record.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Message-ID: <20250330125536.1408939-1-amir73il@gmail.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
man/man2/fanotify_init.2
man/man2/fanotify_mark.2
man/man7/fanotify.7

index bf573c6fa1ea3f42083eb309c99a8f3005ef786c..b90e91707b20605cff2c7c63c0d537bd71dc7ac8 100644 (file)
@@ -57,8 +57,9 @@ Only one of the following notification classes may be specified in
 .B FAN_CLASS_PRE_CONTENT
 This value allows the receipt of events notifying that a file has been
 accessed and events for permission decisions if a file may be accessed.
-It is intended for event listeners that need to access files before they
-contain their final data.
+It is intended for event listeners
+that may need to write data to files
+before their final data can be accessed.
 This notification class might be used by hierarchical storage managers,
 for example.
 Use of this flag requires the
index 15e748b63ba3583fb5d16494ce42a50dc74f2eb2..f02a182daaa1c005b6b0321de543e31d1749ab61 100644 (file)
@@ -445,6 +445,20 @@ or
 .B FAN_CLASS_CONTENT
 is required.
 .TP
+.BR FAN_PRE_ACCESS " (since Linux 6.14)"
+.\" commit 4f8afa33817a6420398d1c177c6e220a05081f51
+Create an event before read or write access to a file range,
+that provides an opportunity for the event listener
+to modify the content of the file
+before access to the content
+in the specified range.
+An additional information record of type
+.B FAN_EVENT_INFO_TYPE_RANGE
+is returned for each event in the read buffer.
+An fanotify file descriptor created with
+.B FAN_CLASS_PRE_CONTENT
+is required.
+.TP
 .B FAN_ONDIR
 Create events for directories\[em]for example, when
 .BR opendir (3),
index 712d5dfff4bd8b6bd6aaf4003200de73d3823dca..0e754c699dbbe52527c1a4edfd47eb7581ff6ddc 100644 (file)
@@ -247,6 +247,26 @@ struct fanotify_event_info_error {
 .EE
 .in
 .P
+In case of
+.B FAN_PRE_ACCESS
+events,
+an additional information record describing the access range
+is returned 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_range {
+    struct fanotify_event_info_header hdr;
+    __u32 pad;
+    __u64 offset;
+    __u64 count;
+};
+.EE
+.in
+.P
 All information records contain a nested structure of type
 .IR fanotify_event_info_header .
 This structure holds meta-information about the information record
@@ -510,8 +530,9 @@ 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 ,
-or
-.BR FAN_EVENT_INFO_TYPE_PIDFD .
+.BR FAN_EVENT_INFO_TYPE_PIDFD ,
+.BR FAN_EVENT_INFO_TYPE_ERROR ,
+.BR FAN_EVENT_INFO_TYPE_RANGE .
 The value set for this field
 is dependent on the flags that have been supplied to
 .BR fanotify_init (2).
@@ -713,6 +734,24 @@ Identifies the type of error that occurred.
 This is a counter of the number of errors suppressed
 since the last error was read.
 .P
+The fields of the
+.I fanotify_event_info_range
+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_RANGE .
+.TP
+.I count
+The number of bytes being read or written to the file.
+.TP
+.I offset
+The offset from which bytes are read or written to the file.
+.P
 The following macros are provided to iterate over a buffer containing
 fanotify event metadata returned by a
 .BR read (2)