Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ void nfs4_set_lease_period(struct nfs_client *clp,
	spin_unlock(&clp->cl_lock);

	/* 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);
}

/*
+3 −2
Original line number Diff line number Diff line
@@ -201,8 +201,9 @@ int rpc_clnt_add_xprt(struct rpc_clnt *, struct xprt_create *,
				struct rpc_xprt *,
				void *),
			void *data);
void		rpc_cap_max_reconnect_timeout(struct rpc_clnt *clnt,
			unsigned long timeo);
void		rpc_set_connect_timeout(struct rpc_clnt *clnt,
			unsigned long connect_timeout,
			unsigned long reconnect_timeout);

int		rpc_clnt_setup_test_and_add_xprt(struct rpc_clnt *,
			struct rpc_xprt_switch *,
+6 −4
Original line number Diff line number Diff line
@@ -2747,17 +2747,19 @@ rpc_xprt_set_connect_timeout(struct rpc_clnt *clnt,
}

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 = {
		.connect_timeout = timeo,
		.reconnect_timeout = timeo,
		.connect_timeout = connect_timeout,
		.reconnect_timeout = reconnect_timeout,
	};
	rpc_clnt_iterate_for_each_xprt(clnt,
			rpc_xprt_set_connect_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)
{