summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_subs.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-06-28 04:10:07 +0000
committerjhb <jhb@FreeBSD.org>2001-06-28 04:10:07 +0000
commitab91beada7d88e4a56b4217fee5826cb97b5cef7 (patch)
tree3520caa3d566aad1d0e33edb86f240a96f040425 /sys/nfsclient/nfs_subs.c
parentf7198d2b3a1299ad745cab94d5192d42710bb046 (diff)
downloadFreeBSD-src-ab91beada7d88e4a56b4217fee5826cb97b5cef7.zip
FreeBSD-src-ab91beada7d88e4a56b4217fee5826cb97b5cef7.tar.gz
- Protect the mnt_vnode list with the mntvnode lock.
- Use queue(9) macros.
Diffstat (limited to 'sys/nfsclient/nfs_subs.c')
-rw-r--r--sys/nfsclient/nfs_subs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_subs.c b/sys/nfsclient/nfs_subs.c
index 18cb8a9..b9c4197 100644
--- a/sys/nfsclient/nfs_subs.c
+++ b/sys/nfsclient/nfs_subs.c
@@ -2141,11 +2141,12 @@ nfs_clearcommit(mp)
s = splbio();
mtx_assert(&Giant, MA_OWNED);
mtx_assert(&vm_mtx, MA_NOTOWNED);
+ mtx_lock(&mntvnode_mtx);
loop:
- for (vp = mp->mnt_vnodelist.lh_first; vp; vp = nvp) {
+ for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp; vp = nvp) {
if (vp->v_mount != mp) /* Paranoia */
goto loop;
- nvp = vp->v_mntvnodes.le_next;
+ nvp = LIST_NEXT(vp, v_mntvnodes);
for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
nbp = TAILQ_NEXT(bp, b_vnbufs);
if (BUF_REFCNT(bp) == 0 &&
@@ -2154,6 +2155,7 @@ loop:
bp->b_flags &= ~(B_NEEDCOMMIT | B_CLUSTEROK);
}
}
+ mtx_unlock(&mntvnode_mtx);
splx(s);
}
OpenPOWER on IntegriCloud