diff options
author | jeff <jeff@FreeBSD.org> | 2002-09-25 02:44:55 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-09-25 02:44:55 +0000 |
commit | 263f8202f6610e839d8fc82b483baf7b85d8de91 (patch) | |
tree | 4cb9020128f6fe9cd236171314aecd3eb3b6be90 | |
parent | 76a1e2b647d38f81dd8f1568601975eb9dc6808b (diff) | |
download | FreeBSD-src-263f8202f6610e839d8fc82b483baf7b85d8de91.zip FreeBSD-src-263f8202f6610e839d8fc82b483baf7b85d8de91.tar.gz |
- Don't use the interlock to protect v_writecount.
-rw-r--r-- | sys/ufs/ufs/ufs_quota.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/ufs/ufs/ufs_quota.c b/sys/ufs/ufs/ufs_quota.c index 57319f0..6831690 100644 --- a/sys/ufs/ufs/ufs_quota.c +++ b/sys/ufs/ufs/ufs_quota.c @@ -447,15 +447,14 @@ again: nextvp = TAILQ_NEXT(vp, v_nmntvnodes); mtx_unlock(&mntvnode_mtx); - mtx_lock(&vp->v_interlock); - if (vp->v_type == VNON || vp->v_writecount == 0) { - mtx_unlock(&vp->v_interlock); + if (vget(vp, LK_EXCLUSIVE, td)) { mtx_lock(&mntvnode_mtx); - continue; + goto again; } - if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td)) { + if (vp->v_type == VNON || vp->v_writecount == 0) { + vput(vp); mtx_lock(&mntvnode_mtx); - goto again; + continue; } error = getinoquota(VTOI(vp)); vput(vp); |