|
@@ -1866,26 +1866,13 @@ int nfs4_discover_server_trunking(struct nfs_client *clp,
|
|
|
{
|
|
|
const struct nfs4_state_recovery_ops *ops =
|
|
|
clp->cl_mvops->reboot_recovery_ops;
|
|
|
- rpc_authflavor_t *flavors, flav, save;
|
|
|
struct rpc_clnt *clnt;
|
|
|
struct rpc_cred *cred;
|
|
|
- int i, len, status;
|
|
|
+ int i, status;
|
|
|
|
|
|
dprintk("NFS: %s: testing '%s'\n", __func__, clp->cl_hostname);
|
|
|
|
|
|
- len = NFS_MAX_SECFLAVORS;
|
|
|
- flavors = kcalloc(len, sizeof(*flavors), GFP_KERNEL);
|
|
|
- if (flavors == NULL) {
|
|
|
- status = -ENOMEM;
|
|
|
- goto out;
|
|
|
- }
|
|
|
- len = rpcauth_list_flavors(flavors, len);
|
|
|
- if (len < 0) {
|
|
|
- status = len;
|
|
|
- goto out_free;
|
|
|
- }
|
|
|
clnt = clp->cl_rpcclient;
|
|
|
- save = clnt->cl_auth->au_flavor;
|
|
|
i = 0;
|
|
|
|
|
|
mutex_lock(&nfs_clid_init_mutex);
|
|
@@ -1900,12 +1887,6 @@ again:
|
|
|
switch (status) {
|
|
|
case 0:
|
|
|
break;
|
|
|
-
|
|
|
- case -EACCES:
|
|
|
- if (clp->cl_machine_cred == NULL)
|
|
|
- break;
|
|
|
- /* Handle case where the user hasn't set up machine creds */
|
|
|
- nfs4_clear_machine_cred(clp);
|
|
|
case -NFS4ERR_DELAY:
|
|
|
case -ETIMEDOUT:
|
|
|
case -EAGAIN:
|
|
@@ -1914,17 +1895,12 @@ again:
|
|
|
dprintk("NFS: %s after status %d, retrying\n",
|
|
|
__func__, status);
|
|
|
goto again;
|
|
|
-
|
|
|
+ case -EACCES:
|
|
|
+ if (i++)
|
|
|
+ break;
|
|
|
case -NFS4ERR_CLID_INUSE:
|
|
|
case -NFS4ERR_WRONGSEC:
|
|
|
- status = -EPERM;
|
|
|
- if (i >= len)
|
|
|
- break;
|
|
|
-
|
|
|
- flav = flavors[i++];
|
|
|
- if (flav == save)
|
|
|
- flav = flavors[i++];
|
|
|
- clnt = rpc_clone_client_set_auth(clnt, flav);
|
|
|
+ clnt = rpc_clone_client_set_auth(clnt, RPC_AUTH_NULL);
|
|
|
if (IS_ERR(clnt)) {
|
|
|
status = PTR_ERR(clnt);
|
|
|
break;
|
|
@@ -1944,9 +1920,6 @@ again:
|
|
|
|
|
|
out_unlock:
|
|
|
mutex_unlock(&nfs_clid_init_mutex);
|
|
|
-out_free:
|
|
|
- kfree(flavors);
|
|
|
-out:
|
|
|
dprintk("NFS: %s: status = %d\n", __func__, status);
|
|
|
return status;
|
|
|
}
|