SUNRPC enable back offline transports in trunking discovery
When we are adding a transport to a xprt_switch that's already on the list but has been marked OFFLINE, then make the state ONLINE since it's been tested now. Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
95d0d30c66
commit
9368fd6c75
@ -242,6 +242,7 @@ void rpc_clnt_xprt_switch_put(struct rpc_clnt *);
|
|||||||
void rpc_clnt_xprt_switch_add_xprt(struct rpc_clnt *, struct rpc_xprt *);
|
void rpc_clnt_xprt_switch_add_xprt(struct rpc_clnt *, struct rpc_xprt *);
|
||||||
bool rpc_clnt_xprt_switch_has_addr(struct rpc_clnt *clnt,
|
bool rpc_clnt_xprt_switch_has_addr(struct rpc_clnt *clnt,
|
||||||
const struct sockaddr *sap);
|
const struct sockaddr *sap);
|
||||||
|
void rpc_clnt_xprt_set_online(struct rpc_clnt *clnt, struct rpc_xprt *xprt);
|
||||||
void rpc_cleanup_clids(void);
|
void rpc_cleanup_clids(void);
|
||||||
|
|
||||||
static inline int rpc_reply_expected(struct rpc_task *task)
|
static inline int rpc_reply_expected(struct rpc_task *task)
|
||||||
|
@ -3095,8 +3095,22 @@ void rpc_clnt_xprt_switch_put(struct rpc_clnt *clnt)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rpc_clnt_xprt_switch_put);
|
EXPORT_SYMBOL_GPL(rpc_clnt_xprt_switch_put);
|
||||||
|
|
||||||
|
void rpc_clnt_xprt_set_online(struct rpc_clnt *clnt, struct rpc_xprt *xprt)
|
||||||
|
{
|
||||||
|
struct rpc_xprt_switch *xps;
|
||||||
|
|
||||||
|
rcu_read_lock();
|
||||||
|
xps = rcu_dereference(clnt->cl_xpi.xpi_xpswitch);
|
||||||
|
rcu_read_unlock();
|
||||||
|
xprt_set_online_locked(xprt, xps);
|
||||||
|
}
|
||||||
|
|
||||||
void rpc_clnt_xprt_switch_add_xprt(struct rpc_clnt *clnt, struct rpc_xprt *xprt)
|
void rpc_clnt_xprt_switch_add_xprt(struct rpc_clnt *clnt, struct rpc_xprt *xprt)
|
||||||
{
|
{
|
||||||
|
if (rpc_clnt_xprt_switch_has_addr(clnt,
|
||||||
|
(const struct sockaddr *)&xprt->addr)) {
|
||||||
|
return rpc_clnt_xprt_set_online(clnt, xprt);
|
||||||
|
}
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
rpc_xprt_switch_add_xprt(rcu_dereference(clnt->cl_xpi.xpi_xpswitch),
|
rpc_xprt_switch_add_xprt(rcu_dereference(clnt->cl_xpi.xpi_xpswitch),
|
||||||
xprt);
|
xprt);
|
||||||
|
Loading…
Reference in New Issue
Block a user