aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChuck Lever <cel@netapp.com>2005-08-25 19:25:55 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-09-23 12:38:53 -0400
commit03bf4b707eee06706c9db343dd5c905b7ee47ed2 (patch)
tree54f89b578758e2bf2650b647ae1c7100c882a757 /include
parent3167e12c0c424f3c323944701615343022d86418 (diff)
[PATCH] RPC: parametrize various transport connect timeouts
Each transport implementation can now set unique bind, connect, reestablishment, and idle timeout values. These are variables, allowing the values to be modified dynamically. This permits exponential backoff of any of these values, for instance. As an example, we implement exponential backoff for the connection reestablishment timeout. Test-plan: Destructive testing (unplugging the network temporarily). Connectathon with UDP and TCP. Signed-off-by: Chuck Lever <cel@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/nfs_fs.h4
-rw-r--r--include/linux/sunrpc/xprt.h29
2 files changed, 10 insertions, 23 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 9a6047ff1b25..7bac2785c6e4 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -41,6 +41,10 @@
41#define NFS_MAX_FILE_IO_BUFFER_SIZE 32768 41#define NFS_MAX_FILE_IO_BUFFER_SIZE 32768
42#define NFS_DEF_FILE_IO_BUFFER_SIZE 4096 42#define NFS_DEF_FILE_IO_BUFFER_SIZE 4096
43 43
44/* Default timeout values */
45#define NFS_MAX_UDP_TIMEOUT (60*HZ)
46#define NFS_MAX_TCP_TIMEOUT (600*HZ)
47
44/* 48/*
45 * superblock magic number for NFS 49 * superblock magic number for NFS
46 */ 50 */
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index 9d9266cf8a36..2543adf18551 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -22,28 +22,6 @@ extern unsigned int xprt_tcp_slot_table_entries;
22#define RPC_DEF_SLOT_TABLE (16U) 22#define RPC_DEF_SLOT_TABLE (16U)
23#define RPC_MAX_SLOT_TABLE (128U) 23#define RPC_MAX_SLOT_TABLE (128U)
24 24
25/* Default timeout values */
26#define RPC_MAX_UDP_TIMEOUT (60*HZ)
27#define RPC_MAX_TCP_TIMEOUT (600*HZ)
28
29/*
30 * Wait duration for an RPC TCP connection to be established. Solaris
31 * NFS over TCP uses 60 seconds, for example, which is in line with how
32 * long a server takes to reboot.
33 */
34#define RPC_CONNECT_TIMEOUT (60*HZ)
35
36/*
37 * Delay an arbitrary number of seconds before attempting to reconnect
38 * after an error.
39 */
40#define RPC_REESTABLISH_TIMEOUT (15*HZ)
41
42/*
43 * RPC transport idle timeout.
44 */
45#define RPC_IDLE_DISCONNECT_TIMEOUT (5*60*HZ)
46
47/* 25/*
48 * RPC call and reply header size as number of 32bit words (verifier 26 * RPC call and reply header size as number of 32bit words (verifier
49 * size computed separately) 27 * size computed separately)
@@ -182,14 +160,19 @@ struct rpc_xprt {
182 /* 160 /*
183 * Connection of transports 161 * Connection of transports
184 */ 162 */
163 unsigned long connect_timeout,
164 bind_timeout,
165 reestablish_timeout;
185 struct work_struct connect_worker; 166 struct work_struct connect_worker;
186 unsigned short port; 167 unsigned short port;
168
187 /* 169 /*
188 * Disconnection of idle transports 170 * Disconnection of idle transports
189 */ 171 */
190 struct work_struct task_cleanup; 172 struct work_struct task_cleanup;
191 struct timer_list timer; 173 struct timer_list timer;
192 unsigned long last_used; 174 unsigned long last_used,
175 idle_timeout;
193 176
194 /* 177 /*
195 * Send stuff 178 * Send stuff