freebsd-nq/sys/fs/nfs
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_commonacl.c Add DEXITCODE plumbing to NFS. 2011-07-16 08:51:09 +00:00
nfs_commonkrpc.c jwd@ reported a problem via email where the old NFS client would 2011-12-21 02:45:51 +00:00
nfs_commonport.c Revert revision 224079 as Rick pointed out that I would be calling VOP_PATHCONF 2011-07-17 03:44:05 +00:00
nfs_commonsubs.c Revert revision 224079 as Rick pointed out that I would be calling VOP_PATHCONF 2011-07-17 03:44:05 +00:00
nfs_var.h Add two arguments to the nfsrpc_rellockown() function in the NFSv4 2011-11-20 16:46:50 +00:00
nfs.h Increase NFS_TICKINTVL value from 10 to 500. Now that callout does useful 2011-05-06 13:11:50 +00:00
nfscl.h
nfsclstate.h Post r223774, the NFSv4 client no longer has multiple instances 2011-12-03 02:27:26 +00:00
nfsdport.h Add DEXITCODE plumbing to NFS. 2011-07-16 08:51:09 +00:00
nfskpiport.h Fix typos in macros. 2010-05-08 14:50:12 +00:00
nfsm_subs.h
nfsport.h Remove unnecessary thread pointer from VOPLOCK macros and current users. 2011-07-16 08:05:26 +00:00
nfsproto.h Fix the new NFSv4 client so that it doesn't fill the cached 2011-06-28 22:52:38 +00:00
nfsrvcache.h
nfsrvstate.h This patch should fix handling of byte range locks locally 2010-03-30 23:11:50 +00:00
nfsv4_errstr.h
rpcv2.h
xdr_subs.h