SUNRPC: cleanup for rpc_new_client()

There is no reason why we shouldn't just pass the rpc_create_args.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Trond Myklebust 2007-12-20 16:03:53 -05:00
parent 69dd716c5f
commit 698b6d088e

View File

@ -122,8 +122,9 @@ rpc_setup_pipedir(struct rpc_clnt *clnt, char *dir_name)
} }
} }
static struct rpc_clnt * rpc_new_client(struct rpc_xprt *xprt, char *servname, struct rpc_program *program, u32 vers, rpc_authflavor_t flavor) static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, struct rpc_xprt *xprt)
{ {
struct rpc_program *program = args->program;
struct rpc_version *version; struct rpc_version *version;
struct rpc_clnt *clnt = NULL; struct rpc_clnt *clnt = NULL;
struct rpc_auth *auth; struct rpc_auth *auth;
@ -132,13 +133,13 @@ static struct rpc_clnt * rpc_new_client(struct rpc_xprt *xprt, char *servname, s
/* sanity check the name before trying to print it */ /* sanity check the name before trying to print it */
err = -EINVAL; err = -EINVAL;
len = strlen(servname); len = strlen(args->servername);
if (len > RPC_MAXNETNAMELEN) if (len > RPC_MAXNETNAMELEN)
goto out_no_rpciod; goto out_no_rpciod;
len++; len++;
dprintk("RPC: creating %s client for %s (xprt %p)\n", dprintk("RPC: creating %s client for %s (xprt %p)\n",
program->name, servname, xprt); program->name, args->servername, xprt);
err = rpciod_up(); err = rpciod_up();
if (err) if (err)
@ -146,7 +147,11 @@ static struct rpc_clnt * rpc_new_client(struct rpc_xprt *xprt, char *servname, s
err = -EINVAL; err = -EINVAL;
if (!xprt) if (!xprt)
goto out_no_xprt; goto out_no_xprt;
if (vers >= program->nrvers || !(version = program->version[vers]))
if (args->version >= program->nrvers)
goto out_err;
version = program->version[args->version];
if (version == NULL)
goto out_err; goto out_err;
err = -ENOMEM; err = -ENOMEM;
@ -158,12 +163,12 @@ static struct rpc_clnt * rpc_new_client(struct rpc_xprt *xprt, char *servname, s
clnt->cl_server = clnt->cl_inline_name; clnt->cl_server = clnt->cl_inline_name;
if (len > sizeof(clnt->cl_inline_name)) { if (len > sizeof(clnt->cl_inline_name)) {
char *buf = kmalloc(len, GFP_KERNEL); char *buf = kmalloc(len, GFP_KERNEL);
if (buf != 0) if (buf != NULL)
clnt->cl_server = buf; clnt->cl_server = buf;
else else
len = sizeof(clnt->cl_inline_name); len = sizeof(clnt->cl_inline_name);
} }
strlcpy(clnt->cl_server, servname, len); strlcpy(clnt->cl_server, args->servername, len);
clnt->cl_xprt = xprt; clnt->cl_xprt = xprt;
clnt->cl_procinfo = version->procs; clnt->cl_procinfo = version->procs;
@ -192,10 +197,10 @@ static struct rpc_clnt * rpc_new_client(struct rpc_xprt *xprt, char *servname, s
if (err < 0) if (err < 0)
goto out_no_path; goto out_no_path;
auth = rpcauth_create(flavor, clnt); auth = rpcauth_create(args->authflavor, clnt);
if (IS_ERR(auth)) { if (IS_ERR(auth)) {
printk(KERN_INFO "RPC: Couldn't create auth handle (flavor %u)\n", printk(KERN_INFO "RPC: Couldn't create auth handle (flavor %u)\n",
flavor); args->authflavor);
err = PTR_ERR(auth); err = PTR_ERR(auth);
goto out_no_auth; goto out_no_auth;
} }
@ -297,8 +302,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(xprt, args->servername, args->program, clnt = rpc_new_client(args, xprt);
args->version, args->authflavor);
if (IS_ERR(clnt)) if (IS_ERR(clnt))
return clnt; return clnt;