| @@ -7461,7 +7461,7 @@ static void nfs4_exchange_id_done(struct rpc_task *task, void *data) · 7460 unmodified lines |
| 7461 | 7461 | cdata->res.server_scope = NULL; |
| 7462 | 7462 | } |
| 7463 | 7463 | /* Save the EXCHANGE_ID verifier session trunk tests */ |
| 7464 | | − memcpy(clp->cl_confirm.data, cdata->args.verifier->data, |
| 7464 | + memcpy(clp->cl_confirm.data, cdata->args.verifier.data, |
| 7465 | 7465 | sizeof(clp->cl_confirm.data)); |
| 7466 | 7466 | } |
| 7467 | 7467 | out: |
| @@ -7474,10 +7474,6 @@ static void nfs4_exchange_id_release(void *data) · 6 unmodified lines |
| 7474 | 7474 | struct nfs41_exchange_id_data *cdata = |
| 7475 | 7475 | (struct nfs41_exchange_id_data *)data; |
| 7476 | 7476 | |
| 7477 | | − if (cdata->xprt) { |
| 7478 | | − xprt_put(cdata->xprt); |
| 7479 | | − rpc_clnt_xprt_switch_put(cdata->args.client->cl_rpcclient); |
| 7480 | | − } |
| 7481 | 7477 | nfs_put_client(cdata->args.client); |
| 7482 | 7478 | kfree(cdata->res.impl_id); |
| 7483 | 7479 | kfree(cdata->res.server_scope); |
| @@ -7498,7 +7494,6 @@ static const struct rpc_call_ops nfs4_exchange_id_call_ops = { · 14 unmodified lines |
| 7498 | 7494 | static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, |
| 7499 | 7495 | u32 sp4_how, struct rpc_xprt *xprt) |
| 7500 | 7496 | { |
| 7501 | | − nfs4_verifier verifier; |
| 7502 | 7497 | struct rpc_message msg = { |
| 7503 | 7498 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_EXCHANGE_ID], |
| 7504 | 7499 | .rpc_cred = cred, |
| @@ -7507,7 +7502,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, · 2 unmodified lines |
| 7507 | 7502 | .rpc_client = clp->cl_rpcclient, |
| 7508 | 7503 | .callback_ops = &nfs4_exchange_id_call_ops, |
| 7509 | 7504 | .rpc_message = &msg, |
| 7510 | | − .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT, |
| 7505 | + .flags = RPC_TASK_TIMEOUT, |
| 7511 | 7506 | }; |
| 7512 | 7507 | struct nfs41_exchange_id_data *calldata; |
| 7513 | 7508 | struct rpc_task *task; |
| @@ -7522,8 +7517,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, · 8 unmodified lines |
| 7522 | 7517 | return -ENOMEM; |
| 7523 | 7518 | } |
| 7524 | 7519 | |
| 7525 | | − if (!xprt) |
| 7526 | | − nfs4_init_boot_verifier(clp, &verifier); |
| 7520 | + nfs4_init_boot_verifier(clp, &calldata->args.verifier); |
| 7527 | 7521 | |
| 7528 | 7522 | status = nfs4_init_uniform_client_string(clp); |
| 7529 | 7523 | if (status) |
| @@ -7562,11 +7556,9 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, · 32 unmodified lines |
| 7562 | 7556 | if (xprt) { |
| 7563 | 7557 | calldata->xprt = xprt; |
| 7564 | 7558 | task_setup_data.rpc_xprt = xprt; |
| 7565 | | − task_setup_data.flags = |
| 7566 | | − RPC_TASK_SOFT|RPC_TASK_SOFTCONN|RPC_TASK_ASYNC; |
| 7567 | | − calldata->args.verifier = &clp->cl_confirm; |
| 7568 | | − } else { |
| 7569 | | − calldata->args.verifier = &verifier; |
| 7559 | + task_setup_data.flags |= RPC_TASK_SOFTCONN; |
| 7560 | + memcpy(calldata->args.verifier.data, clp->cl_confirm.data, |
| 7561 | + sizeof(calldata->args.verifier.data)); |
| 7570 | 7562 | } |
| 7571 | 7563 | calldata->args.client = clp; |
| 7572 | 7564 | #ifdef CONFIG_NFS_V4_1_MIGRATION |
| @@ -7585,12 +7577,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, · 12 unmodified lines |
| 7585 | 7577 | if (IS_ERR(task)) |
| 7586 | 7578 | return PTR_ERR(task); |
| 7587 | 7579 | |
| 7588 | | − if (!xprt) { |
| 7589 | | − status = rpc_wait_for_completion_task(task); |
| 7590 | | − if (!status) |
| 7591 | | − status = calldata->rpc_status; |
| 7592 | | − } else /* session trunking test */ |
| 7593 | | − status = calldata->rpc_status; |
| 7580 | + status = calldata->rpc_status; |
| 7594 | 7581 | |
| 7595 | 7582 | rpc_put_task(task); |
| 7596 | 7583 | out: |