summaryrefslogtreecommitdiff
path: root/sys/nfsclient/nfs_socket.c
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2002-01-10 02:15:35 +0000
committerIan Dowse <iedowse@FreeBSD.org>2002-01-10 02:15:35 +0000
commita7f6ff2e8c7edb02c028b866f6e092dd312210ca (patch)
tree2b3c403cf1a32190997ea7f12250026847743fa8 /sys/nfsclient/nfs_socket.c
parent1f493270a1a46b1df5350fb5526bb5b7fd5d52a3 (diff)
Notes
Diffstat (limited to 'sys/nfsclient/nfs_socket.c')
-rw-r--r--sys/nfsclient/nfs_socket.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c
index 858b14e396e2..22ca4cee4ece 100644
--- a/sys/nfsclient/nfs_socket.c
+++ b/sys/nfsclient/nfs_socket.c
@@ -1188,7 +1188,6 @@ nfs_nmcancelreqs(nmp)
splx(s);
for (i = 0; i < 30; i++) {
- tsleep(&lbolt, PSOCK, "nfscancel", 0);
s = splnet();
TAILQ_FOREACH(req, &nfs_reqq, r_chain) {
if (nmp == req->r_nmp)
@@ -1197,6 +1196,7 @@ nfs_nmcancelreqs(nmp)
splx(s);
if (req == NULL)
return (0);
+ tsleep(&lbolt, PSOCK, "nfscancel", 0);
}
return (EBUSY);
}
@@ -1229,6 +1229,9 @@ nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct proc *p)
if (rep && (rep->r_flags & R_SOFTTERM))
return (EINTR);
+ /* Terminate all requests while attempting to unmount. */
+ if (nmp->nm_mountp->mnt_kern_flag & MNTK_UNMOUNT)
+ return (EINTR);
if (!(nmp->nm_flag & NFSMNT_INT))
return (0);
if (p == NULL)