svn commit: r249053 - stable/9/sys/kern

Konstantin Belousov kib at FreeBSD.org
Wed Apr 3 15:34:25 UTC 2013


Author: kib
Date: Wed Apr  3 15:34:25 2013
New Revision: 249053
URL: http://svnweb.freebsd.org/changeset/base/249053

Log:
  MFC r248562:
  Move the vn_start_write() call in the dounmount() before setting the
  MNTK_UNMOUNT flag.

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

Modified: stable/9/sys/kern/vfs_mount.c
==============================================================================
--- stable/9/sys/kern/vfs_mount.c	Wed Apr  3 14:10:37 2013	(r249052)
+++ stable/9/sys/kern/vfs_mount.c	Wed Apr  3 15:34:25 2013	(r249053)
@@ -1260,12 +1260,14 @@ dounmount(mp, flags, td)
 		return (error);
 	}
 
+	vn_start_write(NULL, &mp, V_WAIT);
 	MNT_ILOCK(mp);
 	if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0 ||
 	    !TAILQ_EMPTY(&mp->mnt_uppers)) {
 		MNT_IUNLOCK(mp);
 		if (coveredvp)
 			VOP_UNLOCK(coveredvp, 0);
+		vn_finished_write(mp);
 		return (EBUSY);
 	}
 	mp->mnt_kern_flag |= MNTK_UNMOUNT | MNTK_NOINSMNTQ;
@@ -1285,7 +1287,6 @@ dounmount(mp, flags, td)
 	KASSERT(error == 0,
 	    ("%s: invalid return value for msleep in the drain path @ %s:%d",
 	    __func__, __FILE__, __LINE__));
-	vn_start_write(NULL, &mp, V_WAIT);
 
 	if (mp->mnt_flag & MNT_EXPUBLIC)
 		vfs_setpublicfs(NULL, NULL, NULL);


More information about the svn-src-all mailing list