aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 99694442b93f..8b39a42ac35e 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -93,10 +93,10 @@ static struct nfs_subversion *find_nfs_version(unsigned int version)
93 spin_unlock(&nfs_version_lock); 93 spin_unlock(&nfs_version_lock);
94 return nfs; 94 return nfs;
95 } 95 }
96 }; 96 }
97 97
98 spin_unlock(&nfs_version_lock); 98 spin_unlock(&nfs_version_lock);
99 return ERR_PTR(-EPROTONOSUPPORT);; 99 return ERR_PTR(-EPROTONOSUPPORT);
100} 100}
101 101
102struct nfs_subversion *get_nfs_version(unsigned int version) 102struct nfs_subversion *get_nfs_version(unsigned int version)
@@ -498,7 +498,8 @@ nfs_get_client(const struct nfs_client_initdata *cl_init,
498 return nfs_found_client(cl_init, clp); 498 return nfs_found_client(cl_init, clp);
499 } 499 }
500 if (new) { 500 if (new) {
501 list_add(&new->cl_share_link, &nn->nfs_client_list); 501 list_add_tail(&new->cl_share_link,
502 &nn->nfs_client_list);
502 spin_unlock(&nn->nfs_client_lock); 503 spin_unlock(&nn->nfs_client_lock);
503 new->cl_flags = cl_init->init_flags; 504 new->cl_flags = cl_init->init_flags;
504 return rpc_ops->init_client(new, timeparms, ip_addr, 505 return rpc_ops->init_client(new, timeparms, ip_addr,
@@ -668,7 +669,8 @@ int nfs_init_server_rpcclient(struct nfs_server *server,
668{ 669{
669 struct nfs_client *clp = server->nfs_client; 670 struct nfs_client *clp = server->nfs_client;
670 671
671 server->client = rpc_clone_client(clp->cl_rpcclient); 672 server->client = rpc_clone_client_set_auth(clp->cl_rpcclient,
673 pseudoflavour);
672 if (IS_ERR(server->client)) { 674 if (IS_ERR(server->client)) {
673 dprintk("%s: couldn't create rpc_client!\n", __func__); 675 dprintk("%s: couldn't create rpc_client!\n", __func__);
674 return PTR_ERR(server->client); 676 return PTR_ERR(server->client);
@@ -678,16 +680,6 @@ int nfs_init_server_rpcclient(struct nfs_server *server,
678 timeo, 680 timeo,
679 sizeof(server->client->cl_timeout_default)); 681 sizeof(server->client->cl_timeout_default));
680 server->client->cl_timeout = &server->client->cl_timeout_default; 682 server->client->cl_timeout = &server->client->cl_timeout_default;
681
682 if (pseudoflavour != clp->cl_rpcclient->cl_auth->au_flavor) {
683 struct rpc_auth *auth;
684
685 auth = rpcauth_create(pseudoflavour, server->client);
686 if (IS_ERR(auth)) {
687 dprintk("%s: couldn't create credcache!\n", __func__);
688 return PTR_ERR(auth);
689 }
690 }
691 server->client->cl_softrtry = 0; 683 server->client->cl_softrtry = 0;
692 if (server->flags & NFS_MOUNT_SOFT) 684 if (server->flags & NFS_MOUNT_SOFT)
693 server->client->cl_softrtry = 1; 685 server->client->cl_softrtry = 1;
@@ -761,6 +753,8 @@ static int nfs_init_server(struct nfs_server *server,
761 data->timeo, data->retrans); 753 data->timeo, data->retrans);
762 if (data->flags & NFS_MOUNT_NORESVPORT) 754 if (data->flags & NFS_MOUNT_NORESVPORT)
763 set_bit(NFS_CS_NORESVPORT, &cl_init.init_flags); 755 set_bit(NFS_CS_NORESVPORT, &cl_init.init_flags);
756 if (server->options & NFS_OPTION_MIGRATION)
757 set_bit(NFS_CS_MIGRATION, &cl_init.init_flags);
764 758
765 /* Allocate or find a client reference we can use */ 759 /* Allocate or find a client reference we can use */
766 clp = nfs_get_client(&cl_init, &timeparms, NULL, RPC_AUTH_UNIX); 760 clp = nfs_get_client(&cl_init, &timeparms, NULL, RPC_AUTH_UNIX);
@@ -855,7 +849,6 @@ static void nfs_server_set_fsinfo(struct nfs_server *server,
855 if (server->wsize > NFS_MAX_FILE_IO_SIZE) 849 if (server->wsize > NFS_MAX_FILE_IO_SIZE)
856 server->wsize = NFS_MAX_FILE_IO_SIZE; 850 server->wsize = NFS_MAX_FILE_IO_SIZE;
857 server->wpages = (server->wsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; 851 server->wpages = (server->wsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
858 server->pnfs_blksize = fsinfo->blksize;
859 852
860 server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL); 853 server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL);
861 854