diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2008-12-23 15:21:35 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 15:21:35 -0500 |
commit | 4a01b8a4ee7b12becd26a49bae57f019605658cd (patch) | |
tree | 5d9c94bf7ef158d0514da3cc5b495c3fa7f8ffab /fs | |
parent | c5d120f8e8b464368a7dcb038dc5c077d234d10a (diff) |
NFS: expand flags passed to nfs_create_rpc_client()
The nfs_create_rpc_client() function sets up an RPC client for an NFS
mount point. Add an option that allows it to set up an RPC transport
from an unprivileged port.
Instead of having nfs_create_rpc_client()'s callers retain local
knowledge about how to set up an RPC client, create a couple of flag
arguments to control the use of RPC_CLNT_CREATE flags.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/client.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 7547600b6174..d11cdaafb39a 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -470,7 +470,7 @@ static void nfs_init_timeout_values(struct rpc_timeout *to, int proto, | |||
470 | static int nfs_create_rpc_client(struct nfs_client *clp, | 470 | static int nfs_create_rpc_client(struct nfs_client *clp, |
471 | const struct rpc_timeout *timeparms, | 471 | const struct rpc_timeout *timeparms, |
472 | rpc_authflavor_t flavor, | 472 | rpc_authflavor_t flavor, |
473 | int flags) | 473 | int discrtry, int noresvport) |
474 | { | 474 | { |
475 | struct rpc_clnt *clnt = NULL; | 475 | struct rpc_clnt *clnt = NULL; |
476 | struct rpc_create_args args = { | 476 | struct rpc_create_args args = { |
@@ -482,9 +482,13 @@ static int nfs_create_rpc_client(struct nfs_client *clp, | |||
482 | .program = &nfs_program, | 482 | .program = &nfs_program, |
483 | .version = clp->rpc_ops->version, | 483 | .version = clp->rpc_ops->version, |
484 | .authflavor = flavor, | 484 | .authflavor = flavor, |
485 | .flags = flags, | ||
486 | }; | 485 | }; |
487 | 486 | ||
487 | if (discrtry) | ||
488 | args.flags |= RPC_CLNT_CREATE_DISCRTRY; | ||
489 | if (noresvport) | ||
490 | args.flags |= RPC_CLNT_CREATE_NONPRIVPORT; | ||
491 | |||
488 | if (!IS_ERR(clp->cl_rpcclient)) | 492 | if (!IS_ERR(clp->cl_rpcclient)) |
489 | return 0; | 493 | return 0; |
490 | 494 | ||
@@ -623,7 +627,7 @@ static int nfs_init_client(struct nfs_client *clp, | |||
623 | * Create a client RPC handle for doing FSSTAT with UNIX auth only | 627 | * Create a client RPC handle for doing FSSTAT with UNIX auth only |
624 | * - RFC 2623, sec 2.3.2 | 628 | * - RFC 2623, sec 2.3.2 |
625 | */ | 629 | */ |
626 | error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_UNIX, 0); | 630 | error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_UNIX, 0, 0); |
627 | if (error < 0) | 631 | if (error < 0) |
628 | goto error; | 632 | goto error; |
629 | nfs_mark_client_ready(clp, NFS_CS_READY); | 633 | nfs_mark_client_ready(clp, NFS_CS_READY); |
@@ -979,7 +983,7 @@ static int nfs4_init_client(struct nfs_client *clp, | |||
979 | clp->rpc_ops = &nfs_v4_clientops; | 983 | clp->rpc_ops = &nfs_v4_clientops; |
980 | 984 | ||
981 | error = nfs_create_rpc_client(clp, timeparms, authflavour, | 985 | error = nfs_create_rpc_client(clp, timeparms, authflavour, |
982 | RPC_CLNT_CREATE_DISCRTRY); | 986 | 1, 0); |
983 | if (error < 0) | 987 | if (error < 0) |
984 | goto error; | 988 | goto error; |
985 | memcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); | 989 | memcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); |