Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Mar 2012 13:56:18 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r233608 - head/sys/ufs/ufs
Message-ID:  <201203281356.q2SDuIxH039025@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Wed Mar 28 13:56:18 2012
New Revision: 233608
URL: http://svn.freebsd.org/changeset/base/233608

Log:
  Microoptimize: in qsync loop over mount vnodes, only unlock mount
  interlock after we committed to try to vget() the vnode.
  
  Submitted by:	bde
  Reviewed by:	mckusick
  Tested by:	pho
  MFC after:	1 week

Modified:
  head/sys/ufs/ufs/ufs_quota.c

Modified: head/sys/ufs/ufs/ufs_quota.c
==============================================================================
--- head/sys/ufs/ufs/ufs_quota.c	Wed Mar 28 13:47:07 2012	(r233607)
+++ head/sys/ufs/ufs/ufs_quota.c	Wed Mar 28 13:56:18 2012	(r233608)
@@ -1061,12 +1061,11 @@ qsync(struct mount *mp)
 again:
 	MNT_VNODE_FOREACH(vp, mp, mvp) {
 		VI_LOCK(vp);
-		MNT_IUNLOCK(mp);
 		if (vp->v_type == VNON) {
 			VI_UNLOCK(vp);
-			MNT_ILOCK(mp);
 			continue;
 		}
+		MNT_IUNLOCK(mp);
 		error = vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td);
 		if (error) {
 			MNT_ILOCK(mp);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203281356.q2SDuIxH039025>