Commit 26ae102f authored by Trond Myklebust's avatar Trond Myklebust Committed by Anna Schumaker

NFSv4: Set the connection timeout to match the lease period

Set the timeout for TCP connections to be 1 lease period to ensure
that we don't lose our lease due to a faulty TCP connection.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 7196dbb0
...@@ -153,7 +153,7 @@ void nfs4_set_lease_period(struct nfs_client *clp, ...@@ -153,7 +153,7 @@ void nfs4_set_lease_period(struct nfs_client *clp,
spin_unlock(&clp->cl_lock); spin_unlock(&clp->cl_lock);
/* Cap maximum reconnect timeout at 1/2 lease period */ /* Cap maximum reconnect timeout at 1/2 lease period */
rpc_cap_max_reconnect_timeout(clp->cl_rpcclient, lease >> 1); rpc_set_connect_timeout(clp->cl_rpcclient, lease, lease >> 1);
} }
/* /*
......
...@@ -201,8 +201,9 @@ int rpc_clnt_add_xprt(struct rpc_clnt *, struct xprt_create *, ...@@ -201,8 +201,9 @@ int rpc_clnt_add_xprt(struct rpc_clnt *, struct xprt_create *,
struct rpc_xprt *, struct rpc_xprt *,
void *), void *),
void *data); void *data);
void rpc_cap_max_reconnect_timeout(struct rpc_clnt *clnt, void rpc_set_connect_timeout(struct rpc_clnt *clnt,
unsigned long timeo); unsigned long connect_timeout,
unsigned long reconnect_timeout);
int rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *, int rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *,
struct rpc_xprt_switch *, struct rpc_xprt_switch *,
......
...@@ -2747,17 +2747,19 @@ rpc_xprt_set_connect_timeout(struct rpc_clnt *clnt, ...@@ -2747,17 +2747,19 @@ rpc_xprt_set_connect_timeout(struct rpc_clnt *clnt,
} }
void void
rpc_cap_max_reconnect_timeout(struct rpc_clnt *clnt, unsigned long timeo) rpc_set_connect_timeout(struct rpc_clnt *clnt,
unsigned long connect_timeout,
unsigned long reconnect_timeout)
{ {
struct connect_timeout_data timeout = { struct connect_timeout_data timeout = {
.connect_timeout = timeo, .connect_timeout = connect_timeout,
.reconnect_timeout = timeo, .reconnect_timeout = reconnect_timeout,
}; };
rpc_clnt_iterate_for_each_xprt(clnt, rpc_clnt_iterate_for_each_xprt(clnt,
rpc_xprt_set_connect_timeout, rpc_xprt_set_connect_timeout,
&timeout); &timeout);
} }
EXPORT_SYMBOL_GPL(rpc_cap_max_reconnect_timeout); EXPORT_SYMBOL_GPL(rpc_set_connect_timeout);
void rpc_clnt_xprt_switch_put(struct rpc_clnt *clnt) void rpc_clnt_xprt_switch_put(struct rpc_clnt *clnt)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment