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
This commit is contained in:
Kris Kennaway 2006-03-23 22:58:42 +00:00
parent 5cb7f13aee
commit 78e31796c9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=157058

View File

@ -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)