diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2009-02-22 19:43:45 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2009-03-18 17:38:39 -0400 |
commit | a601caeda21c0e94c153dbd146ec0899cc5f324f (patch) | |
tree | 0fc46ede6bde9cf2ed6bf1417f18ef620867e2d0 /fs | |
parent | 418cd20aa19b54554cab383e2fd0d1cb8c4732ee (diff) |
nfsd4: move rpc_client setup to a separate function
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfsd/nfs4callback.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index 8d55f5047503..290289bd44f7 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c | |||
@@ -361,9 +361,8 @@ static struct rpc_program cb_program = { | |||
361 | /* Reference counting, callback cleanup, etc., all look racy as heck. | 361 | /* Reference counting, callback cleanup, etc., all look racy as heck. |
362 | * And why is cb_set an atomic? */ | 362 | * And why is cb_set an atomic? */ |
363 | 363 | ||
364 | static int do_probe_callback(void *data) | 364 | static struct rpc_clnt *setup_callback_client(struct nfs4_client *clp) |
365 | { | 365 | { |
366 | struct nfs4_client *clp = data; | ||
367 | struct sockaddr_in addr; | 366 | struct sockaddr_in addr; |
368 | struct nfs4_callback *cb = &clp->cl_callback; | 367 | struct nfs4_callback *cb = &clp->cl_callback; |
369 | struct rpc_timeout timeparms = { | 368 | struct rpc_timeout timeparms = { |
@@ -384,15 +383,10 @@ static int do_probe_callback(void *data) | |||
384 | .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET), | 383 | .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET), |
385 | .client_name = clp->cl_principal, | 384 | .client_name = clp->cl_principal, |
386 | }; | 385 | }; |
387 | struct rpc_message msg = { | ||
388 | .rpc_proc = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_NULL], | ||
389 | .rpc_argp = clp, | ||
390 | }; | ||
391 | struct rpc_clnt *client; | 386 | struct rpc_clnt *client; |
392 | int status = -EINVAL; | ||
393 | 387 | ||
394 | if (!clp->cl_principal && (clp->cl_flavor >= RPC_AUTH_GSS_KRB5)) | 388 | if (!clp->cl_principal && (clp->cl_flavor >= RPC_AUTH_GSS_KRB5)) |
395 | goto out_err; | 389 | return ERR_PTR(-EINVAL); |
396 | 390 | ||
397 | /* Initialize address */ | 391 | /* Initialize address */ |
398 | memset(&addr, 0, sizeof(addr)); | 392 | memset(&addr, 0, sizeof(addr)); |
@@ -402,6 +396,25 @@ static int do_probe_callback(void *data) | |||
402 | 396 | ||
403 | /* Create RPC client */ | 397 | /* Create RPC client */ |
404 | client = rpc_create(&args); | 398 | client = rpc_create(&args); |
399 | if (IS_ERR(client)) | ||
400 | dprintk("NFSD: couldn't create callback client: %ld\n", | ||
401 | PTR_ERR(client)); | ||
402 | return client; | ||
403 | |||
404 | } | ||
405 | |||
406 | static int do_probe_callback(void *data) | ||
407 | { | ||
408 | struct nfs4_client *clp = data; | ||
409 | struct nfs4_callback *cb = &clp->cl_callback; | ||
410 | struct rpc_message msg = { | ||
411 | .rpc_proc = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_NULL], | ||
412 | .rpc_argp = clp, | ||
413 | }; | ||
414 | struct rpc_clnt *client; | ||
415 | int status; | ||
416 | |||
417 | client = setup_callback_client(clp); | ||
405 | if (IS_ERR(client)) { | 418 | if (IS_ERR(client)) { |
406 | status = PTR_ERR(client); | 419 | status = PTR_ERR(client); |
407 | dprintk("NFSD: couldn't create callback client: %d\n", | 420 | dprintk("NFSD: couldn't create callback client: %d\n", |