Hey Gabriel, Sorry, I haven't really been following this series. However, I've just read through this man-pages patch from the perspective of an API consumer and sprayed a couple suggestions. For the next iteration, do you mind CC'ing me? On Tue, Jul 20, 2021 at 08:47:31PM +0300, Amir Goldstein wrote: > +linux-api > > On Tue, Jul 20, 2021 at 7:02 PM Gabriel Krisman Bertazi > <krisman@xxxxxxxxxxxxx> wrote: > > > > The kernel patches are not merged upstream, so please refrain from merging > > it at the moment. This submission attempts to preview the interface > > and gather some interface review. > > > > Cc: Amir Goldstein <amir73il@xxxxxxxxx> > > Cc: Jan Kara <jack@xxxxxxx> > > Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx> > > > > Looks good as a first draft. > > Thanks, > Amir. > > > --- > > To: Michael Kerrisk <mtk.manpages@xxxxxxxxx> > > Cc: linux-man@xxxxxxxxxxxxxxx > > --- > > man2/fanotify_mark.2 | 14 +++++++++ > > man7/fanotify.7 | 72 ++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 86 insertions(+) > > > > diff --git a/man2/fanotify_mark.2 b/man2/fanotify_mark.2 > > index be3f72e040c0..500e41faa4f0 100644 > > --- a/man2/fanotify_mark.2 > > +++ b/man2/fanotify_mark.2 > > @@ -214,6 +214,20 @@ Create an event when a marked file or directory itself is deleted. > > An fanotify group that identifies filesystem objects by file handles > > is required. > > .TP > > +.BR FAN_FS_ERROR "(since Linux 5.15)" > > +.\" commit WIP > > +Create an event when a file system error is detected. > > +A fanotify group that identifies filesystem objects by file handles > > +is required. > > +Support for this type of notification is done per-file system, > > +but not every filesystem supports it. > > +Additional information is submitted in the form of a > > +.BR FAN_EVENT_INFO_TYPE_ERROR > > +record. The term "submitted" sounds confusing in this context, does it not? I think we traditionally mention that an event listener can expect to receive an additional information object of type X alongside the generic metadata event. > > +See > > +.BR fanotify (7) > > +for additional details. > > +.TP > > .BR FAN_MOVED_FROM " (since Linux 5.1)" > > .\" commit 235328d1fa4251c6dcb32351219bb553a58838d2 > > Create an event when a file or directory has been moved from a marked > > diff --git a/man7/fanotify.7 b/man7/fanotify.7 > > index 6a7e70d75845..155ba8273463 100644 > > --- a/man7/fanotify.7 > > +++ b/man7/fanotify.7 > > @@ -188,6 +188,24 @@ struct fanotify_event_info_fid { > > .EE > > .in > > .PP > > +In case of a FAN_FS_ERROR event, > > +besides the file handle record, > > +an additional record describing the error that occurred > > +is included in the read buffer. > > +The structure described below, will follow the generic > > +.I fanotify_event_metadata > > +structure within the read buffer: > > +.PP > > +.in +4n > > +.EX > > +struct fanotify_event_info_error { > > + struct fanotify_event_info_header hdr; > > + __s32 error; > > + __u32 error_count; > > +}; > > +.EE > > +.in > > +.PP > > For performance reasons, it is recommended to use a large > > buffer size (for example, 4096 bytes), > > so that multiple events can be retrieved by a single > > @@ -311,6 +329,9 @@ A child file or directory was deleted in a watched parent. > > .B FAN_DELETE_SELF > > A watched file or directory was deleted. > > .TP > > +.B FAN_FS_ERROR > > +A file-system error was detected. > > +.TP > > .B FAN_MOVED_FROM > > A file or directory has been moved from a watched parent directory. > > .TP > > @@ -510,6 +531,32 @@ and the file handle is followed by a null terminated string that identifies the > > name of a directory entry in that directory, or '.' to identify the directory > > object itself. > > .PP > > +The fields of the > > +.I fanotify_event_info_error > > +structure are as follows: > > +.TP > > +.I hdr > > +This is a structure of type > > +.IR fanotify_event_info_header . > > +is a generic header that contains information used to ... and is a generic ... > > +describe an additional information record attached to the event. > > +For > > +.IR fanotify_event_info_error , > > +.I info_type > > +will have the value > > +.BR FAN_EVENT_INFO_TYPE_ERROR . > > +.I len > > +has the size of the additional information record including the > > +.IR fanotify_event_info_header > > +itself. > > +.TP > > +.I error > > +Identifies the file system specific error that occured > > +.TP > > +.I error_count > > +This counts the number of errors suppressed > > +since the last error was read. > > +.PP > > The following macros are provided to iterate over a buffer containing > > fanotify event metadata returned by a > > .BR read (2) > > @@ -599,6 +646,31 @@ field. > > In that case, the audit subsystem will log information about the access > > decision to the audit logs. > > .\" > > +.SS Monitoring file systems for error ^ s? > > +A single FAN_FS_ERROR event is stored by the kernel at once. > > +Extra error messages are suppressed and accounted ^ for? > > +inside the current FAN_FS_ERROR event record, > > +but details about the errors are lost. > > +.PP > > +Error types reported by FAN_FS_ERROR are file system specific > > +and not all kinds of error are reported by all file system. ^ s? ^ s? Here, my understanding is that the filesystem errors are distinct across each of the different filesystems that are capable of generating FAN_FS_ERROR errors i.e. ext4; therefore filesystem specific documentation should be consulted in order to get more meta-information about the actual underlying filesystem error that occurred on the watched object. Is that correct? > > +Refer to the file system documentation > > +for the information of which errors are reported, ... for additional/more information on the type of errors that are supported/reported, ...? > > +and the meaning of those errors. > > +.PP > > +Errors not directly related to a file (i.e. super block corruption) > > +are reported with an invalid file handler. ^ .I file_handle . > > +For these errors, > > +.I file_handle For such errors, the .I file_handle will have the field... > > +will have the field > > +.I handle_type > > +set to > > +.BR FILEID_INVALID , > > +and the > > +.I f_handle > > +buffer set to > > +.BR 0 . > > +.\" > > .SS Closing the fanotify file descriptor > > When all file descriptors referring to the fanotify notification group are > > closed, the fanotify group is released and its resources > > -- > > 2.32.0 > > /M