svn commit: r233608 - head/sys/ufs/ufs

Konstantin Belousov kib at FreeBSD.org
Wed Mar 28 13:56:19 UTC 2012


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);


More information about the svn-src-all mailing list