freebsd-dev/sys/nfsclient
Rick Macklem 713f46ac47 jwd@ reported a problem via email where the old NFS client would
get a reply of EEXIST from an NFS server when a Mkdir RPC was retried,
for an NFS over UDP mount.
Upon investigation, it was found that the client was retransmitting
the Mkdir RPC request over UDP, but with a different xid. As such,
the retransmitted message would miss the Duplicate Request Cache
in the server, causing it to reply EEXIST. The kernel client side
UDP rpc code has two timers. The first one causes a retransmit using
the same xid and socket and was set to a fixed value of 3seconds.
(The default can be overridden via CLSET_RETRY_TIMEOUT.)
The second one creates a new socket and xid and should be larger
than the first. However, both NFS clients were setting the second
timer to nm_timeo ("timeout=<value>" mount argument), which defaulted to
1second, so the first timer would never time out.
This patch fixes both NFS clients so that they set the first timer
using nm_timeo and makes the second timer larger than the first one.

Reported by:	jwd
Tested by:	jwd
Reviewed by:	jhb
MFC after:	2 weeks
2011-12-21 02:45:51 +00:00
..
nfs_bio.c Rename vm_page_set_valid() to vm_page_set_valid_range(). 2011-11-30 17:39:00 +00:00
nfs_kdtrace.c Fix the module dependency in nfs_kdtrace.c for the old NFS 2011-05-06 19:55:15 +00:00
nfs_krpc.c jwd@ reported a problem via email where the old NFS client would 2011-12-21 02:45:51 +00:00
nfs_nfsiod.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_node.c Fix a LOR in the NFS client which could cause a deadlock. 2011-08-02 11:24:42 +00:00
nfs_subs.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_vfsops.c Finish making 'wcommitsize' an NFS client mount option. 2011-11-14 18:52:07 +00:00
nfs_vnops.c Merge 220876, 220877, and 221537 from the new NFS client to the old: 2011-08-09 15:29:58 +00:00
nfs.h Fix a comment that got missed by r221973 which changed 2011-05-16 13:12:09 +00:00
nfsargs.h Implemented a mount option "nocto" that disables cache coherency 2011-05-04 13:27:45 +00:00
nfsm_subs.h Remove the old kernel RPC implementation and the NFS_LEGACYRPC option. 2009-06-30 19:03:27 +00:00
nfsmount.h Fix the nlm so that it no longer depends on the regular 2011-01-03 20:37:31 +00:00
nfsnode.h Fix a LOR in the NFS client which could cause a deadlock. 2011-08-02 11:24:42 +00:00
nfsstats.h
nlminfo.h