xprtrdma: Modernize ops->connect
Adapt and apply changes that were made to the TCP socket connect code. See the following commits for details on the purpose of these changes: Commit7196dbb02e
("SUNRPC: Allow changing of the TCP timeout parameters on the fly") Commit3851f1cdb2
("SUNRPC: Limit the reconnect backoff timer to the max RPC message timeout") Commit02910177ae
("SUNRPC: Fix reconnection timeouts") Some common transport code is moved to xprt.c to satisfy the code duplication police. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:

committed by
Anna Schumaker

parent
5828cebad1
commit
675dd90ad0
@@ -850,6 +850,38 @@ void xprt_connect(struct rpc_task *task)
|
||||
xprt_release_write(xprt, task);
|
||||
}
|
||||
|
||||
/**
|
||||
* xprt_reconnect_delay - compute the wait before scheduling a connect
|
||||
* @xprt: transport instance
|
||||
*
|
||||
*/
|
||||
unsigned long xprt_reconnect_delay(const struct rpc_xprt *xprt)
|
||||
{
|
||||
unsigned long start, now = jiffies;
|
||||
|
||||
start = xprt->stat.connect_start + xprt->reestablish_timeout;
|
||||
if (time_after(start, now))
|
||||
return start - now;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xprt_reconnect_delay);
|
||||
|
||||
/**
|
||||
* xprt_reconnect_backoff - compute the new re-establish timeout
|
||||
* @xprt: transport instance
|
||||
* @init_to: initial reestablish timeout
|
||||
*
|
||||
*/
|
||||
void xprt_reconnect_backoff(struct rpc_xprt *xprt, unsigned long init_to)
|
||||
{
|
||||
xprt->reestablish_timeout <<= 1;
|
||||
if (xprt->reestablish_timeout > xprt->max_reconnect_timeout)
|
||||
xprt->reestablish_timeout = xprt->max_reconnect_timeout;
|
||||
if (xprt->reestablish_timeout < init_to)
|
||||
xprt->reestablish_timeout = init_to;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xprt_reconnect_backoff);
|
||||
|
||||
enum xprt_xid_rb_cmp {
|
||||
XID_RB_EQUAL,
|
||||
XID_RB_LEFT,
|
||||
|
Reference in New Issue
Block a user