summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkris <kris@FreeBSD.org>2006-03-23 22:58:42 +0000
committerkris <kris@FreeBSD.org>2006-03-23 22:58:42 +0000
commit79229ffb86c8082c630f448fed0aa91ec9413bc0 (patch)
tree78760204b4bc938175dfa531e691a65d2ff881c5
parent9e842a6a8c0a1088abc16fdf98bd8bc6b9964067 (diff)
downloadFreeBSD-src-79229ffb86c8082c630f448fed0aa91ec9413bc0.zip
FreeBSD-src-79229ffb86c8082c630f448fed0aa91ec9413bc0.tar.gz
Fix a bug in the NFS/TCP retransmission path.
The bug was that earlier, if a request was retransmitted, we would do subsequent retransmits every 10 msecs. This can cause data corruption under moderate loads by reordering operations as seen by the client NFS attribute cache, and on the server side when the retransmission occurs after the original request has left the duplicate cache, since the operation will be committed for a second time. Further work on retransmission handling is needed (e.g. they are still being done sent too often since they are scaled by HZ, and the size of the dup cache is too small and easily overwhelmed on busy servers). Submitted by: mohans
-rw-r--r--sys/nfsclient/nfs_socket.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c
index 27f047b..a26facd 100644
--- a/sys/nfsclient/nfs_socket.c
+++ b/sys/nfsclient/nfs_socket.c
@@ -1243,6 +1243,7 @@ nfs_timer(void *arg)
*/
rep->r_flags |= R_MUSTRESEND;
wakeup_nfsreq(rep);
+ rep->r_rtt = 0;
continue;
}
if ((so = nmp->nm_so) == NULL)
OpenPOWER on IntegriCloud