5b7eb78486
Using sysfs's xprt_state attribute, mark a particular transport offline. It will not be picked during the round-robin selection. It's not allowed to take the main (1st created transport associated with the rpc_client) offline. Also bring a transport back online via sysfs by writing "online" and that would allow for this transport to be picked during the round- robin selection. Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2020 Anna Schumaker <Anna.Schumaker@Netapp.com>
|
|
*/
|
|
#ifndef __SUNRPC_SYSFS_H
|
|
#define __SUNRPC_SYSFS_H
|
|
|
|
struct rpc_sysfs_client {
|
|
struct kobject kobject;
|
|
struct net *net;
|
|
struct rpc_clnt *clnt;
|
|
struct rpc_xprt_switch *xprt_switch;
|
|
};
|
|
|
|
struct rpc_sysfs_xprt_switch {
|
|
struct kobject kobject;
|
|
struct net *net;
|
|
struct rpc_xprt_switch *xprt_switch;
|
|
struct rpc_xprt *xprt;
|
|
};
|
|
|
|
struct rpc_sysfs_xprt {
|
|
struct kobject kobject;
|
|
struct rpc_xprt *xprt;
|
|
struct rpc_xprt_switch *xprt_switch;
|
|
};
|
|
|
|
int rpc_sysfs_init(void);
|
|
void rpc_sysfs_exit(void);
|
|
|
|
void rpc_sysfs_client_setup(struct rpc_clnt *clnt,
|
|
struct rpc_xprt_switch *xprt_switch,
|
|
struct net *net);
|
|
void rpc_sysfs_client_destroy(struct rpc_clnt *clnt);
|
|
void rpc_sysfs_xprt_switch_setup(struct rpc_xprt_switch *xprt_switch,
|
|
struct rpc_xprt *xprt, gfp_t gfp_flags);
|
|
void rpc_sysfs_xprt_switch_destroy(struct rpc_xprt_switch *xprt);
|
|
void rpc_sysfs_xprt_setup(struct rpc_xprt_switch *xprt_switch,
|
|
struct rpc_xprt *xprt, gfp_t gfp_flags);
|
|
void rpc_sysfs_xprt_destroy(struct rpc_xprt *xprt);
|
|
|
|
#endif
|