diff options
author | kib <kib@FreeBSD.org> | 2012-03-28 13:56:18 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-03-28 13:56:18 +0000 |
commit | 378ad5717c3a6c4531201f616eeef17392266625 (patch) | |
tree | 18441faa363716c25da6c7788aa54b1405965c09 /sys/ufs | |
parent | 1f7d5397de5890501ed13209f7191a4a2e13b946 (diff) | |
download | FreeBSD-src-378ad5717c3a6c4531201f616eeef17392266625.zip FreeBSD-src-378ad5717c3a6c4531201f616eeef17392266625.tar.gz |
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
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_quota.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/ufs/ufs/ufs_quota.c b/sys/ufs/ufs/ufs_quota.c index b652bec..c98662a 100644 --- a/sys/ufs/ufs/ufs_quota.c +++ b/sys/ufs/ufs/ufs_quota.c @@ -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); |