diff options
author | jeff <jeff@FreeBSD.org> | 2002-09-25 02:38:43 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-09-25 02:38:43 +0000 |
commit | 5c7f8a426d77fd9157454ef8c03ad4298759b909 (patch) | |
tree | 92aceb1e68b4986cdcf026c3e92a8d9144c2ce36 /sys/nfsclient/nfs_subs.c | |
parent | 906daccf7224474d155117b8c9b209624ea6ec01 (diff) | |
download | FreeBSD-src-5c7f8a426d77fd9157454ef8c03ad4298759b909.zip FreeBSD-src-5c7f8a426d77fd9157454ef8c03ad4298759b909.tar.gz |
- Lock access to the buf lists.
- Use vrefcnt() where appropriate.
- Add some locking asserts.
Diffstat (limited to 'sys/nfsclient/nfs_subs.c')
-rw-r--r-- | sys/nfsclient/nfs_subs.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/nfsclient/nfs_subs.c b/sys/nfsclient/nfs_subs.c index 1305122..c88f51e 100644 --- a/sys/nfsclient/nfs_subs.c +++ b/sys/nfsclient/nfs_subs.c @@ -793,6 +793,8 @@ loop: if (vp->v_mount != mp) /* Paranoia */ goto loop; nvp = TAILQ_NEXT(vp, v_nmntvnodes); + VI_LOCK(vp); + mtx_unlock(&mntvnode_mtx); for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { nbp = TAILQ_NEXT(bp, b_vnbufs); if (BUF_REFCNT(bp) == 0 && @@ -800,6 +802,8 @@ loop: == (B_DELWRI | B_NEEDCOMMIT)) bp->b_flags &= ~(B_NEEDCOMMIT | B_CLUSTEROK); } + VI_UNLOCK(vp); + mtx_lock(&mntvnode_mtx); } mtx_unlock(&mntvnode_mtx); splx(s); |