SUNRPC: Clean up rpc_bind_new_program
We can and should use the rpc_create_args and __rpc_clone_client() to change the program and version number on the resulting rpc_client. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
50d2bdb197
commit
f994c43d19
1 changed files with 8 additions and 10 deletions
|
@ -703,21 +703,19 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old,
|
||||||
const struct rpc_program *program,
|
const struct rpc_program *program,
|
||||||
u32 vers)
|
u32 vers)
|
||||||
{
|
{
|
||||||
|
struct rpc_create_args args = {
|
||||||
|
.program = program,
|
||||||
|
.prognumber = program->number,
|
||||||
|
.version = vers,
|
||||||
|
.authflavor = old->cl_auth->au_flavor,
|
||||||
|
.client_name = old->cl_principal,
|
||||||
|
};
|
||||||
struct rpc_clnt *clnt;
|
struct rpc_clnt *clnt;
|
||||||
const struct rpc_version *version;
|
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
BUG_ON(vers >= program->nrvers || !program->version[vers]);
|
clnt = __rpc_clone_client(&args, old);
|
||||||
version = program->version[vers];
|
|
||||||
clnt = rpc_clone_client(old);
|
|
||||||
if (IS_ERR(clnt))
|
if (IS_ERR(clnt))
|
||||||
goto out;
|
goto out;
|
||||||
clnt->cl_procinfo = version->procs;
|
|
||||||
clnt->cl_maxproc = version->nrprocs;
|
|
||||||
clnt->cl_protname = program->name;
|
|
||||||
clnt->cl_prog = program->number;
|
|
||||||
clnt->cl_vers = version->number;
|
|
||||||
clnt->cl_stats = program->stats;
|
|
||||||
err = rpc_ping(clnt);
|
err = rpc_ping(clnt);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
rpc_shutdown_client(clnt);
|
rpc_shutdown_client(clnt);
|
||||||
|
|
Loading…
Add table
Reference in a new issue