SUNRPC: Fail over more quickly on connect errors
We should not allow soft tasks to wait for longer than the major timeout period when waiting for a reconnect to occur. Remove the field xprt->connect_timeout since it has been obsoleted by xprt->reestablish_timeout. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
		
					parent
					
						
							
								0b9e794313
							
						
					
				
			
			
				commit
				
					
						a8ce4a8f37
					
				
			
		
					 4 changed files with 2 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -174,8 +174,7 @@ struct rpc_xprt {
 | 
			
		|||
	/*
 | 
			
		||||
	 * Connection of transports
 | 
			
		||||
	 */
 | 
			
		||||
	unsigned long		connect_timeout,
 | 
			
		||||
				bind_timeout,
 | 
			
		||||
	unsigned long		bind_timeout,
 | 
			
		||||
				reestablish_timeout;
 | 
			
		||||
	unsigned int		connect_cookie;	/* A cookie that gets bumped
 | 
			
		||||
						   every time the transport
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -710,7 +710,7 @@ void xprt_connect(struct rpc_task *task)
 | 
			
		|||
		if (task->tk_rqstp)
 | 
			
		||||
			task->tk_rqstp->rq_bytes_sent = 0;
 | 
			
		||||
 | 
			
		||||
		task->tk_timeout = xprt->connect_timeout;
 | 
			
		||||
		task->tk_timeout = task->tk_rqstp->rq_timeout;
 | 
			
		||||
		rpc_sleep_on(&xprt->pending, task, xprt_connect_status);
 | 
			
		||||
 | 
			
		||||
		if (test_bit(XPRT_CLOSING, &xprt->state))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -305,7 +305,6 @@ xprt_setup_rdma(struct xprt_create *args)
 | 
			
		|||
	/* 60 second timeout, no retries */
 | 
			
		||||
	xprt->timeout = &xprt_rdma_default_timeout;
 | 
			
		||||
	xprt->bind_timeout = (60U * HZ);
 | 
			
		||||
	xprt->connect_timeout = (60U * HZ);
 | 
			
		||||
	xprt->reestablish_timeout = (5U * HZ);
 | 
			
		||||
	xprt->idle_timeout = (5U * 60 * HZ);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -137,20 +137,6 @@ static ctl_table sunrpc_table[] = {
 | 
			
		|||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Time out for an RPC UDP socket connect.  UDP socket connects are
 | 
			
		||||
 * synchronous, but we set a timeout anyway in case of resource
 | 
			
		||||
 * exhaustion on the local host.
 | 
			
		||||
 */
 | 
			
		||||
#define XS_UDP_CONN_TO		(5U * HZ)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Wait duration for an RPC TCP connection to be established.  Solaris
 | 
			
		||||
 * NFS over TCP uses 60 seconds, for example, which is in line with how
 | 
			
		||||
 * long a server takes to reboot.
 | 
			
		||||
 */
 | 
			
		||||
#define XS_TCP_CONN_TO		(60U * HZ)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Wait duration for a reply from the RPC portmapper.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -2324,7 +2310,6 @@ static struct rpc_xprt *xs_setup_udp(struct xprt_create *args)
 | 
			
		|||
	xprt->max_payload = (1U << 16) - (MAX_HEADER << 3);
 | 
			
		||||
 | 
			
		||||
	xprt->bind_timeout = XS_BIND_TO;
 | 
			
		||||
	xprt->connect_timeout = XS_UDP_CONN_TO;
 | 
			
		||||
	xprt->reestablish_timeout = XS_UDP_REEST_TO;
 | 
			
		||||
	xprt->idle_timeout = XS_IDLE_DISC_TO;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2399,7 +2384,6 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args)
 | 
			
		|||
	xprt->max_payload = RPC_MAX_FRAGMENT_SIZE;
 | 
			
		||||
 | 
			
		||||
	xprt->bind_timeout = XS_BIND_TO;
 | 
			
		||||
	xprt->connect_timeout = XS_TCP_CONN_TO;
 | 
			
		||||
	xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO;
 | 
			
		||||
	xprt->idle_timeout = XS_IDLE_DISC_TO;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2475,7 +2459,6 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args)
 | 
			
		|||
	/* backchannel */
 | 
			
		||||
	xprt_set_bound(xprt);
 | 
			
		||||
	xprt->bind_timeout = 0;
 | 
			
		||||
	xprt->connect_timeout = 0;
 | 
			
		||||
	xprt->reestablish_timeout = 0;
 | 
			
		||||
	xprt->idle_timeout = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue