Commit 526fca37 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

Merge branch 'sysfs-devel'

parents e9e8ee40 681d5699
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <linux/sunrpc/xprtmultipath.h>

struct rpc_inode;
struct rpc_sysfs_client;

/*
 * The high-level client handle
@@ -71,6 +72,7 @@ struct rpc_clnt {
#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
	struct dentry		*cl_debugfs;	/* debugfs directory */
#endif
	struct rpc_sysfs_client *cl_sysfs;	/* sysfs directory */
	/* cl_work is only needed after cl_xpi is no longer used,
	 * and that are of similar size
	 */
+7 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ enum rpc_display_format_t {

struct rpc_task;
struct rpc_xprt;
struct xprt_class;
struct seq_file;
struct svc_serv;
struct net;
@@ -182,9 +183,11 @@ enum xprt_transports {
	XPRT_TRANSPORT_LOCAL	= 257,
};

struct rpc_sysfs_xprt;
struct rpc_xprt {
	struct kref		kref;		/* Reference count */
	const struct rpc_xprt_ops *ops;		/* transport methods */
	unsigned int		id;		/* transport id */

	const struct rpc_timeout *timeout;	/* timeout parms */
	struct sockaddr_storage	addr;		/* server address */
@@ -288,6 +291,8 @@ struct rpc_xprt {
	atomic_t		inject_disconnect;
#endif
	struct rcu_head		rcu;
	const struct xprt_class	*xprt_class;
	struct rpc_sysfs_xprt	*xprt_sysfs;
};

#if defined(CONFIG_SUNRPC_BACKCHANNEL)
@@ -370,6 +375,7 @@ struct rpc_xprt * xprt_alloc(struct net *net, size_t size,
void			xprt_free(struct rpc_xprt *);
void			xprt_add_backlog(struct rpc_xprt *xprt, struct rpc_task *task);
bool			xprt_wake_up_backlog(struct rpc_xprt *xprt, struct rpc_rqst *req);
void			xprt_cleanup_ids(void);

static inline int
xprt_enable_swap(struct rpc_xprt *xprt)
@@ -408,6 +414,7 @@ void xprt_conditional_disconnect(struct rpc_xprt *xprt, unsigned int cookie);

bool			xprt_lock_connect(struct rpc_xprt *, struct rpc_task *, void *);
void			xprt_unlock_connect(struct rpc_xprt *, void *);
void			xprt_release_write(struct rpc_xprt *, struct rpc_task *);

/*
 * Reserved bit positions in xprt->state
+6 −0
Original line number Diff line number Diff line
@@ -10,10 +10,12 @@
#define _NET_SUNRPC_XPRTMULTIPATH_H

struct rpc_xprt_iter_ops;
struct rpc_sysfs_xprt_switch;
struct rpc_xprt_switch {
	spinlock_t		xps_lock;
	struct kref		xps_kref;

	unsigned int		xps_id;
	unsigned int		xps_nxprts;
	unsigned int		xps_nactive;
	atomic_long_t		xps_queuelen;
@@ -23,6 +25,7 @@ struct rpc_xprt_switch {

	const struct rpc_xprt_iter_ops *xps_iter_ops;

	struct rpc_sysfs_xprt_switch *xps_sysfs;
	struct rcu_head		xps_rcu;
};

@@ -71,4 +74,7 @@ extern struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi);

extern bool rpc_xprt_switch_has_addr(struct rpc_xprt_switch *xps,
		const struct sockaddr *sap);

extern void xprt_multipath_cleanup_ids(void);

#endif
+1 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ sunrpc-y := clnt.o xprt.o socklib.o xprtsock.o sched.o \
	    auth.o auth_null.o auth_unix.o \
	    svc.o svcsock.o svcauth.o svcauth_unix.o \
	    addr.o rpcb_clnt.o timer.o xdr.o \
	    sunrpc_syms.o cache.o rpc_pipe.o \
	    sunrpc_syms.o cache.o rpc_pipe.o sysfs.o \
	    svc_xprt.o \
	    xprtmultipath.o
sunrpc-$(CONFIG_SUNRPC_DEBUG) += debugfs.o
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
#include <trace/events/sunrpc.h>

#include "sunrpc.h"
#include "sysfs.h"
#include "netns.h"

#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
@@ -327,6 +328,7 @@ static int rpc_client_register(struct rpc_clnt *clnt,
out:
	if (pipefs_sb)
		rpc_put_sb_net(net);
	rpc_sysfs_client_destroy(clnt);
	rpc_clnt_debugfs_unregister(clnt);
	return err;
}
@@ -423,6 +425,7 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
	/* save the nodename */
	rpc_clnt_set_nodename(clnt, nodename);

	rpc_sysfs_client_setup(clnt, xps, rpc_net_ns(clnt));
	err = rpc_client_register(clnt, args->authflavor, args->client_name);
	if (err)
		goto out_no_path;
@@ -733,6 +736,7 @@ int rpc_switch_client_transport(struct rpc_clnt *clnt,

	rpc_unregister_client(clnt);
	__rpc_clnt_remove_pipedir(clnt);
	rpc_sysfs_client_destroy(clnt);
	rpc_clnt_debugfs_unregister(clnt);

	/*
@@ -879,6 +883,7 @@ static void rpc_free_client_work(struct work_struct *work)
	 * so they cannot be called in rpciod, so they are handled separately
	 * here.
	 */
	rpc_sysfs_client_destroy(clnt);
	rpc_clnt_debugfs_unregister(clnt);
	rpc_free_clid(clnt);
	rpc_clnt_remove_pipedir(clnt);
Loading