diff options
| author | Ian Dowse <iedowse@FreeBSD.org> | 2002-01-10 02:15:35 +0000 |
|---|---|---|
| committer | Ian Dowse <iedowse@FreeBSD.org> | 2002-01-10 02:15:35 +0000 |
| commit | a7f6ff2e8c7edb02c028b866f6e092dd312210ca (patch) | |
| tree | 2b3c403cf1a32190997ea7f12250026847743fa8 /sys/nfsclient/nfs_socket.c | |
| parent | 1f493270a1a46b1df5350fb5526bb5b7fd5d52a3 (diff) | |
Notes
Diffstat (limited to 'sys/nfsclient/nfs_socket.c')
| -rw-r--r-- | sys/nfsclient/nfs_socket.c | 5 |
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) |
