aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2008-12-23 15:21:35 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-12-23 15:21:35 -0500
commit4a01b8a4ee7b12becd26a49bae57f019605658cd (patch)
tree5d9c94bf7ef158d0514da3cc5b495c3fa7f8ffab /fs
parentc5d120f8e8b464368a7dcb038dc5c077d234d10a (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.c12
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,
470static int nfs_create_rpc_client(struct nfs_client *clp, 470static 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));