Issue NOTE_EXTEND when a directory entry is added to or removed from

the monitored directory as the result of rename(2) operation.  The
renames staying in the directory are not reported.

Submitted by:	Vladimir Kondratyev <wulf@cicgroup.ru>
MFC after:	2 weeks
This commit is contained in:
Konstantin Belousov 2016-05-02 13:18:17 +00:00
parent bd2ead6b2e
commit f7b71c8a5b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=298922
2 changed files with 9 additions and 2 deletions

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd May 1, 2016
.Dd May 2, 2016
.Dt KQUEUE 2
.Os
.Sh NAME
@ -376,7 +376,13 @@ was called on the file referenced by the descriptor.
.It Dv NOTE_WRITE
A write occurred on the file referenced by the descriptor.
.It Dv NOTE_EXTEND
The file referenced by the descriptor was extended.
For regular file, the file referenced by the descriptor was extended.
.Pp
For directory, reports that a directory entry was added or removed,
as the result of rename operation.
The
.Dv NOTE_EXTEND
event is not reported when a name is changed inside the directory.
.It Dv NOTE_ATTRIB
The file referenced by the descriptor had its attributes changed.
.It Dv NOTE_LINK

View File

@ -4660,6 +4660,7 @@ vop_rename_post(void *ap, int rc)
VFS_KNOTE_UNLOCKED(a->a_fdvp, hint);
VFS_KNOTE_UNLOCKED(a->a_tdvp, hint);
} else {
hint |= NOTE_EXTEND;
if (a->a_fvp->v_type == VDIR)
hint |= NOTE_LINK;
VFS_KNOTE_UNLOCKED(a->a_fdvp, hint);