summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_vfsops.c
diff options
context:
space:
mode:
authorcel <cel@FreeBSD.org>2006-05-23 18:48:07 +0000
committercel <cel@FreeBSD.org>2006-05-23 18:48:07 +0000
commit8b94e52728439f07b7a9ffe214dd9da993e94b20 (patch)
tree68e06f45da996223cc7b1442448c81d3941b537b /sys/nfsclient/nfs_vfsops.c
parentec80996e6b2ebfba48c19d243ad3fd4f810cd75c (diff)
downloadFreeBSD-src-8b94e52728439f07b7a9ffe214dd9da993e94b20.zip
FreeBSD-src-8b94e52728439f07b7a9ffe214dd9da993e94b20.tar.gz
NFS over TCP retransmit behavior should default to a 60 second time out,
mimicing the NFS reference implementation. NFS over TCP does not need fast retransmit timeouts, since network loss and congestion are managed by the transport (TCP), unlike with NFS over UDP. A long timeout prevents the unnecessary retransmission of non- idempotent NFS requests. Reviewed by: mohans, silby, rees? Sponsored by: Network Appliance, Incorporated
Diffstat (limited to 'sys/nfsclient/nfs_vfsops.c')
-rw-r--r--sys/nfsclient/nfs_vfsops.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c
index 17a009c..858f405 100644
--- a/sys/nfsclient/nfs_vfsops.c
+++ b/sys/nfsclient/nfs_vfsops.c
@@ -545,10 +545,15 @@ nfs_decode_args(struct mount *mp, struct nfsmount *nmp, struct nfs_args *argp)
/*
* Silently clear NFSMNT_NOCONN if it's a TCP mount, it makes
- * no sense in that context.
+ * no sense in that context. Also, set up appropriate retransmit
+ * and soft timeout behavior.
*/
- if (argp->sotype == SOCK_STREAM)
+ if (argp->sotype == SOCK_STREAM) {
nmp->nm_flag &= ~NFSMNT_NOCONN;
+ nmp->nm_flag |= NFSMNT_DUMBTIMR;
+ nmp->nm_timeo = NFS_MAXTIMEO;
+ nmp->nm_retry = NFS_RETRANS_TCP;
+ }
/* Also clear RDIRPLUS if not NFSv3, it crashes some servers */
if ((argp->flags & NFSMNT_NFSV3) == 0)
OpenPOWER on IntegriCloud