summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfsclient/nfs_vnops.c')
-rw-r--r--sys/nfsclient/nfs_vnops.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c
index a2aa645..37b9264 100644
--- a/sys/nfsclient/nfs_vnops.c
+++ b/sys/nfsclient/nfs_vnops.c
@@ -2807,9 +2807,10 @@ loop:
goto again;
}
if (waitfor == MNT_WAIT) {
+ VI_LOCK(vp);
while (vp->v_numoutput) {
- vp->v_flag |= VBWAIT;
- error = tsleep((caddr_t)&vp->v_numoutput,
+ vp->v_iflag |= VI_BWAIT;
+ error = msleep((caddr_t)&vp->v_numoutput, VI_MTX(vp),
slpflag | (PRIBIO + 1), "nfsfsync", slptimeo);
if (error) {
if (nfs_sigintr(nmp, NULL, td)) {
@@ -2822,6 +2823,7 @@ loop:
}
}
}
+ VI_UNLOCK(vp);
if (!TAILQ_EMPTY(&vp->v_dirtyblkhd) && commit) {
goto loop;
}
OpenPOWER on IntegriCloud