svn commit: r309307 - head/sys/kern

Mateusz Guzik mjg at FreeBSD.org
Wed Nov 30 02:14:55 UTC 2016


Author: mjg
Date: Wed Nov 30 02:14:53 2016
New Revision: 309307
URL: https://svnweb.freebsd.org/changeset/base/309307

Log:
  vfs: avoid VOP_ISLOCKED in the common case in lookup

Modified:
  head/sys/kern/vfs_lookup.c

Modified: head/sys/kern/vfs_lookup.c
==============================================================================
--- head/sys/kern/vfs_lookup.c	Wed Nov 30 02:00:30 2016	(r309306)
+++ head/sys/kern/vfs_lookup.c	Wed Nov 30 02:14:53 2016	(r309307)
@@ -807,10 +807,9 @@ unionlookup:
 	 * If we have a shared lock we may need to upgrade the lock for the
 	 * last operation.
 	 */
-	if (dp != vp_crossmp &&
-	    VOP_ISLOCKED(dp) == LK_SHARED &&
-	    (cnp->cn_flags & ISLASTCN) && (cnp->cn_flags & LOCKPARENT))
-		vn_lock(dp, LK_UPGRADE|LK_RETRY);
+	if ((cnp->cn_flags & LOCKPARENT) && (cnp->cn_flags & ISLASTCN) &&
+	    dp != vp_crossmp && VOP_ISLOCKED(dp) == LK_SHARED)
+			vn_lock(dp, LK_UPGRADE|LK_RETRY);
 	if ((dp->v_iflag & VI_DOOMED) != 0) {
 		error = ENOENT;
 		goto bad;


More information about the svn-src-all mailing list