diff options
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r-- | fs/nfs/client.c | 23 |
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 | ||
102 | struct nfs_subversion *get_nfs_version(unsigned int version) | 102 | struct 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 | ||