Re: [PATCH] fanotify: Document FAN_PRE_ACCESS event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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?


Cheers,
Alex

> +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
> 

-- 
<https://www.alejandro-colomar.es/>
<https://www.alejandro-colomar.es:8443/>
<http://www.alejandro-colomar.es:8080/>

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux