Re: [PATCH] fanotify.7, fanotify_mark.2: Document FAN_FS_ERROR
From: Matthew Bobrowski <repnop@google.com>
Date: 2021-07-21 07:01:52
Also in:
linux-man
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 [off-list ref] wrote:quoted
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@gmail.com> Cc: Jan Kara <jack@suse.cz> Signed-off-by: Gabriel Krisman Bertazi <redacted>Looks good as a first draft. Thanks, Amir.quoted
--- To: Michael Kerrisk <redacted> Cc: linux-man@vger.kernel.org --- 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.
quoted
+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 markeddiff --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 ...
quoted
+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?
quoted
+A single FAN_FS_ERROR event is stored by the kernel at once. +Extra error messages are suppressed and accounted
^ for?
quoted
+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?
quoted
+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, ...?
quoted
+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 .
quoted
+For these errors, +.I file_handle
For such errors, the .I file_handle will have the field...
quoted
+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