FAN_RENAME is a new event type that includes information about both old and new directory entries. It is a successor of the two separate FAN_MOVED_TO/FROM events, but those event types are still supported. Reviewed-by: Matthew Bobrowski <repnop@xxxxxxxxxx> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> --- man2/fanotify_init.2 | 25 +++++++++++++++++++------ man2/fanotify_mark.2 | 16 ++++++++++++++++ man7/fanotify.7 | 6 +++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/man2/fanotify_init.2 b/man2/fanotify_init.2 index ac4d3a305..810f3fc73 100644 --- a/man2/fanotify_init.2 +++ b/man2/fanotify_init.2 @@ -173,8 +173,9 @@ Additionally, it may be used for applications monitoring a directory or a filesystem that are interested in the directory entry modification events .BR FAN_CREATE , .BR FAN_DELETE , -and .BR FAN_MOVE , +and +.BR FAN_RENAME , or in events such as .BR FAN_ATTRIB , .BR FAN_DELETE_SELF , @@ -257,6 +258,15 @@ For the directory entry modification events and .BR FAN_MOVE , the reported name is that of the created/deleted/moved directory entry. +The event +.B FAN_RENAME +may contain two information records. +One of type +.B FAN_EVENT_INFO_TYPE_OLD_DFID_NAME +identifying the old directory entry, +and another of type +.B FAN_EVENT_INFO_TYPE_NEW_DFID_NAME +identifying the new directory entry. For other events that occur on a directory object, the reported file handle is that of the directory object itself and the reported name is '.'. For other events that occur on a non-directory object, the reported file handle @@ -301,14 +311,17 @@ will be returned. For the directory entry modification events .BR FAN_CREATE , .BR FAN_DELETE , -and .BR FAN_MOVE , +and +.BR FAN_RENAME , an additional record of type .BR FAN_EVENT_INFO_TYPE_FID , -is reported in addition to the information record of type -.B FAN_EVENT_INFO_TYPE_DFID -or -.BR FAN_EVENT_INFO_TYPE_DFID_NAME . +is reported in addition to the information records of type +.BR FAN_EVENT_INFO_TYPE_DFID , +.BR FAN_EVENT_INFO_TYPE_DFID_NAME , +.BR FAN_EVENT_INFO_TYPE_OLD_DFID_NAME , +and +.BR FAN_EVENT_INFO_TYPE_NEW_DFID_NAME . The additional record includes a file handle that identifies the filesystem child object that the directory entry is referring to. diff --git a/man2/fanotify_mark.2 b/man2/fanotify_mark.2 index eeaddd173..66c704c19 100644 --- a/man2/fanotify_mark.2 +++ b/man2/fanotify_mark.2 @@ -240,6 +240,19 @@ directory. An fanotify group that identifies filesystem objects by file handles is required. .TP +.BR FAN_RENAME " (since Linux 5.17)" +.\" commit 8cc3b1ccd930fe6971e1527f0c4f1bdc8cb56026 +This event contains the same information provided by events +.B FAN_MOVED_FROM +and +.BR FAN_MOVED_TO , +however is represented by a single event with up to two information records. +An fanotify group that identifies filesystem objects by file handles +is required. +If the filesystem object to be marked is not a directory, the error +.B ENOTDIR +shall be raised. +.TP .BR FAN_MOVE_SELF " (since Linux 5.1)" .\" commit 235328d1fa4251c6dcb32351219bb553a58838d2 Create an event when a marked file or directory itself has been moved. @@ -472,6 +485,9 @@ and and .I pathname do not specify a directory. +This error will also be returned when trying to set the event +.B FAN_RENAME +in the mask of a non directory inode mark. For an fanotify group that was initialized with flag .BR FAN_REPORT_TARGET_FID , this error will also be returned diff --git a/man7/fanotify.7 b/man7/fanotify.7 index 5f2c01408..47e104b1b 100644 --- a/man7/fanotify.7 +++ b/man7/fanotify.7 @@ -391,6 +391,9 @@ A watched file or directory was deleted. .B FAN_FS_ERROR A filesystem error was detected. .TP +.B FAN_RENAME +A file or directory has been moved to or from a watched parent directory. +.TP .B FAN_MOVED_FROM A file or directory has been moved from a watched parent directory. .TP @@ -556,8 +559,9 @@ identifying a child object. Note that for the directory entry modification events .BR FAN_CREATE , .BR FAN_DELETE , -and .BR FAN_MOVE , +and +.BR FAN_RENAME , an information record identifying the created/deleted/moved child object is reported only if an fanotify group was initialized with the flag .BR FAN_REPORT_TARGET_FID. -- 2.25.1