summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_socket.c
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2005-07-18 02:12:17 +0000
committerps <ps@FreeBSD.org>2005-07-18 02:12:17 +0000
commitf2e72f270bd9e9384410c8d9b4bae3adfd6d82f1 (patch)
tree0c38d0ead47cb382e756d3d256465b674f078376 /sys/nfsclient/nfs_socket.c
parent0b4e11fe1895629721e6ad3691651c21093866a4 (diff)
downloadFreeBSD-src-f2e72f270bd9e9384410c8d9b4bae3adfd6d82f1.zip
FreeBSD-src-f2e72f270bd9e9384410c8d9b4bae3adfd6d82f1.tar.gz
Fix for a NFS soft mounts bug where if the number of retries exceeds
the max rexmits, the request was not being bounced back with a ETIMEDOUT error. Reported by: Oliver Lehmann Submitted by: Mohan Srinivasan
Diffstat (limited to 'sys/nfsclient/nfs_socket.c')
-rw-r--r--sys/nfsclient/nfs_socket.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c
index 020cb55..1584bc1 100644
--- a/sys/nfsclient/nfs_socket.c
+++ b/sys/nfsclient/nfs_socket.c
@@ -580,7 +580,8 @@ tryagain:
if (rep->r_nmp->nm_flag & NFSMNT_INT)
slpflag = PCATCH;
mtx_lock(&nfs_reply_mtx);
- while ((rep->r_mrep == NULL) && (error == 0) &&
+ while ((rep->r_mrep == NULL) && (error == 0) &&
+ ((rep->r_flags & R_SOFTTERM) == 0) &&
((sotype == SOCK_DGRAM) || ((rep->r_flags & R_MUSTRESEND) == 0)))
error = msleep((caddr_t)rep, &nfs_reply_mtx,
slpflag | (PZERO - 1), "nfsreq", 0);
OpenPOWER on IntegriCloud