Author: trasz
Date: Thu Nov  3 14:36:57 2016
New Revision: 308252
URL: https://svnweb.freebsd.org/changeset/base/308252

Log:
  MFC r306071:
  
  Fix bug introduced with r302388, which could cause processes accessing
  automounted shares to hang with "vfs_busy" wchan.
  
  (As a workaround one can run 'automount -u' from cron.)

Modified:
  stable/11/sys/kern/vfs_mount.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/vfs_mount.c
==============================================================================
--- stable/11/sys/kern/vfs_mount.c      Thu Nov  3 13:06:17 2016        
(r308251)
+++ stable/11/sys/kern/vfs_mount.c      Thu Nov  3 14:36:57 2016        
(r308252)
@@ -1207,6 +1207,9 @@ sys_unmount(struct thread *td, struct un
 /*
  * Return error if any of the vnodes, ignoring the root vnode
  * and the syncer vnode, have non-zero usecount.
+ *
+ * This function is purely advisory - it can return false positives
+ * and negatives.
  */
 static int
 vfs_check_usecounts(struct mount *mp)
@@ -1288,6 +1291,10 @@ dounmount(struct mount *mp, int flags, s
                MNT_ILOCK(mp);
                if (error != 0) {
                        mp->mnt_kern_flag &= ~(MNTK_UNMOUNT | MNTK_NOINSMNTQ);
+                       if (mp->mnt_kern_flag & MNTK_MWAIT) {
+                               mp->mnt_kern_flag &= ~MNTK_MWAIT;
+                               wakeup(mp);
+                       }
                        MNT_IUNLOCK(mp);
                        if (coveredvp != NULL) {
                                VOP_UNLOCK(coveredvp, 0);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to