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

Commit 83ddfebd authored by Kinglong Mee's avatar Kinglong Mee Committed by J. Bruce Fields
Browse files

SUNRPC: New helper for creating client with rpc_xprt

parent 47f72efa
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -130,6 +130,8 @@ struct rpc_create_args {
#define RPC_CLNT_CREATE_NO_RETRANS_TIMEOUT	(1UL << 9)
#define RPC_CLNT_CREATE_NO_RETRANS_TIMEOUT	(1UL << 9)


struct rpc_clnt *rpc_create(struct rpc_create_args *args);
struct rpc_clnt *rpc_create(struct rpc_create_args *args);
struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args,
					struct rpc_xprt *xprt);
struct rpc_clnt	*rpc_bind_new_program(struct rpc_clnt *,
struct rpc_clnt	*rpc_bind_new_program(struct rpc_clnt *,
				const struct rpc_program *, u32);
				const struct rpc_program *, u32);
void rpc_task_reset_client(struct rpc_task *task, struct rpc_clnt *clnt);
void rpc_task_reset_client(struct rpc_task *task, struct rpc_clnt *clnt);
+33 −25
Original line number Original line Diff line number Diff line
@@ -438,6 +438,38 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
	return ERR_PTR(err);
	return ERR_PTR(err);
}
}


struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args,
					struct rpc_xprt *xprt)
{
	struct rpc_clnt *clnt = NULL;

	clnt = rpc_new_client(args, xprt, NULL);
	if (IS_ERR(clnt))
		return clnt;

	if (!(args->flags & RPC_CLNT_CREATE_NOPING)) {
		int err = rpc_ping(clnt);
		if (err != 0) {
			rpc_shutdown_client(clnt);
			return ERR_PTR(err);
		}
	}

	clnt->cl_softrtry = 1;
	if (args->flags & RPC_CLNT_CREATE_HARDRTRY)
		clnt->cl_softrtry = 0;

	if (args->flags & RPC_CLNT_CREATE_AUTOBIND)
		clnt->cl_autobind = 1;
	if (args->flags & RPC_CLNT_CREATE_DISCRTRY)
		clnt->cl_discrtry = 1;
	if (!(args->flags & RPC_CLNT_CREATE_QUIET))
		clnt->cl_chatty = 1;

	return clnt;
}
EXPORT_SYMBOL_GPL(rpc_create_xprt);

/**
/**
 * rpc_create - create an RPC client and transport with one call
 * rpc_create - create an RPC client and transport with one call
 * @args: rpc_clnt create argument structure
 * @args: rpc_clnt create argument structure
@@ -451,7 +483,6 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args,
struct rpc_clnt *rpc_create(struct rpc_create_args *args)
struct rpc_clnt *rpc_create(struct rpc_create_args *args)
{
{
	struct rpc_xprt *xprt;
	struct rpc_xprt *xprt;
	struct rpc_clnt *clnt;
	struct xprt_create xprtargs = {
	struct xprt_create xprtargs = {
		.net = args->net,
		.net = args->net,
		.ident = args->protocol,
		.ident = args->protocol,
@@ -515,30 +546,7 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args)
	if (args->flags & RPC_CLNT_CREATE_NONPRIVPORT)
	if (args->flags & RPC_CLNT_CREATE_NONPRIVPORT)
		xprt->resvport = 0;
		xprt->resvport = 0;


	clnt = rpc_new_client(args, xprt, NULL);
	return rpc_create_xprt(args, xprt);
	if (IS_ERR(clnt))
		return clnt;

	if (!(args->flags & RPC_CLNT_CREATE_NOPING)) {
		int err = rpc_ping(clnt);
		if (err != 0) {
			rpc_shutdown_client(clnt);
			return ERR_PTR(err);
		}
	}

	clnt->cl_softrtry = 1;
	if (args->flags & RPC_CLNT_CREATE_HARDRTRY)
		clnt->cl_softrtry = 0;

	if (args->flags & RPC_CLNT_CREATE_AUTOBIND)
		clnt->cl_autobind = 1;
	if (args->flags & RPC_CLNT_CREATE_DISCRTRY)
		clnt->cl_discrtry = 1;
	if (!(args->flags & RPC_CLNT_CREATE_QUIET))
		clnt->cl_chatty = 1;

	return clnt;
}
}
EXPORT_SYMBOL_GPL(rpc_create);
EXPORT_SYMBOL_GPL(rpc_create);