diff options
author | ps <ps@FreeBSD.org> | 2005-07-18 02:12:17 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-07-18 02:12:17 +0000 |
commit | f2e72f270bd9e9384410c8d9b4bae3adfd6d82f1 (patch) | |
tree | 0c38d0ead47cb382e756d3d256465b674f078376 /sys/nfsclient | |
parent | 0b4e11fe1895629721e6ad3691651c21093866a4 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/nfsclient/nfs_socket.c | 3 |
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); |