On Sun 30-03-25 14:55:36, Amir Goldstein wrote: > 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@xxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > man/man2/fanotify_init.2 | 4 ++-- > man/man2/fanotify_mark.2 | 14 +++++++++++++ > man/man7/fanotify.7 | 43 ++++++++++++++++++++++++++++++++++++++-- > 3 files changed, 57 insertions(+), 4 deletions(-) > > diff --git a/man/man2/fanotify_init.2 b/man/man2/fanotify_init.2 > index 23fbe126f..b1ef8018c 100644 > --- a/man/man2/fanotify_init.2 > +++ b/man/man2/fanotify_init.2 > @@ -57,8 +57,8 @@ 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 > diff --git a/man/man2/fanotify_mark.2 b/man/man2/fanotify_mark.2 > index 47cafb21c..edbcdc592 100644 > --- a/man/man2/fanotify_mark.2 > +++ b/man/man2/fanotify_mark.2 > @@ -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), > diff --git a/man/man7/fanotify.7 b/man/man7/fanotify.7 > index 7844f52f6..6f3a9496e 100644 > --- a/man/man7/fanotify.7 > +++ b/man/man7/fanotify.7 > @@ -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 > @@ -509,8 +529,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). > @@ -711,6 +732,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) > -- > 2.34.1 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR