On Wed, Apr 2, 2025 at 10:58 PM Alejandro Colomar <alx@xxxxxxxxxx> wrote: > > Hi Amir, > > On Sun, Mar 30, 2025 at 02:55:36PM +0200, 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> > > --- > > 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 > > We should use .hdr here too (and in the fields below, '.' too), right? > Sure that was your idea. I am fine with it. I guess it could be changed later with other instances, Thanks, Amir.