Author: kib
Date: Mon May 16 02:21:54 2016
New Revision: 299881
URL: https://svnweb.freebsd.org/changeset/base/299881

Log:
  MFC r298921:
  Fix reporting of NOTE_LINK when directory link count changes due to
  rename removing or adding subdirectory entry.

Modified:
  stable/10/sys/kern/vfs_subr.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/kern/vfs_subr.c
==============================================================================
--- stable/10/sys/kern/vfs_subr.c       Mon May 16 01:38:24 2016        
(r299880)
+++ stable/10/sys/kern/vfs_subr.c       Mon May 16 02:21:54 2016        
(r299881)
@@ -4365,10 +4365,26 @@ void
 vop_rename_post(void *ap, int rc)
 {
        struct vop_rename_args *a = ap;
+       long hint;
 
        if (!rc) {
-               VFS_KNOTE_UNLOCKED(a->a_fdvp, NOTE_WRITE);
-               VFS_KNOTE_UNLOCKED(a->a_tdvp, NOTE_WRITE);
+               hint = NOTE_WRITE;
+               if (a->a_fdvp == a->a_tdvp) {
+                       if (a->a_tvp != NULL && a->a_tvp->v_type == VDIR)
+                               hint |= NOTE_LINK;
+                       VFS_KNOTE_UNLOCKED(a->a_fdvp, hint);
+                       VFS_KNOTE_UNLOCKED(a->a_tdvp, hint);
+               } else {
+                       if (a->a_fvp->v_type == VDIR)
+                               hint |= NOTE_LINK;
+                       VFS_KNOTE_UNLOCKED(a->a_fdvp, hint);
+
+                       if (a->a_fvp->v_type == VDIR && a->a_tvp != NULL &&
+                           a->a_tvp->v_type == VDIR)
+                               hint &= ~NOTE_LINK;
+                       VFS_KNOTE_UNLOCKED(a->a_tdvp, hint);
+               }
+
                VFS_KNOTE_UNLOCKED(a->a_fvp, NOTE_RENAME);
                if (a->a_tvp)
                        VFS_KNOTE_UNLOCKED(a->a_tvp, NOTE_DELETE);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "[email protected]"

Reply via email to