svn commit: r243485 - stable/8/sys/cddl/compat/opensolaris/kern
Andriy Gapon
avg at FreeBSD.org
Sat Nov 24 12:42:42 UTC 2012
Author: avg
Date: Sat Nov 24 12:42:42 2012
New Revision: 243485
URL: http://svnweb.freebsd.org/changeset/base/243485
Log:
MFC r242569: opensolaris_lookup: use vfs_busy in traverse before calling VFS_ROOT
Modified:
stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/cddl/ (props changed)
Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c
==============================================================================
--- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c Sat Nov 24 12:42:29 2012 (r243484)
+++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c Sat Nov 24 12:42:42 2012 (r243485)
@@ -88,6 +88,7 @@ traverse(vnode_t **cvpp, int lktype)
vfsp = vn_mountedvfs(cvp);
if (vfsp == NULL)
break;
+ error = vfs_busy(vfsp, 0);
/*
* tvp is NULL for *cvpp vnode, which we can't unlock.
*/
@@ -95,12 +96,15 @@ traverse(vnode_t **cvpp, int lktype)
vput(cvp);
else
vrele(cvp);
+ if (error)
+ return (error);
/*
* The read lock must be held across the call to VFS_ROOT() to
* prevent a concurrent unmount from destroying the vfs.
*/
error = VFS_ROOT(vfsp, lktype, &tvp);
+ vfs_unbusy(vfsp);
if (error != 0)
return (error);
cvp = tvp;
More information about the svn-src-all
mailing list