diff options
author | Andy Adamson <andros@netapp.com> | 2009-12-04 15:52:24 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-12-04 15:52:24 -0500 |
commit | 4d643d1dfa9349164fe928e255f68020d91dbfe0 (patch) | |
tree | 1dde84268d81698e3f84cc3f20d90ddc234ba33f /fs/nfs/nfs4proc.c | |
parent | 7285f2d2ffd4b7ab4ffb70a47759ee209c30017b (diff) |
nfs41: add create session into establish_clid
Reported-by: Trond Myklebust <trond.myklebust@netapp.com>
Resetting the clientid from the state manager could result in not confirming
the clientid due to create session not being called.
Move the create session call from the NFS4CLNT_SESSION_SETUP state manager
initialize session case into the NFS4CLNT_LEASE_EXPIRED case establish_clid
call.
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 0f9b7541e049..528b60a23ed5 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -4315,7 +4315,7 @@ int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, | |||
4315 | * NFS4ERR_BADSESSION in the sequence operation, and will therefore | 4315 | * NFS4ERR_BADSESSION in the sequence operation, and will therefore |
4316 | * be in some phase of session reset. | 4316 | * be in some phase of session reset. |
4317 | */ | 4317 | */ |
4318 | static int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) | 4318 | int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) |
4319 | { | 4319 | { |
4320 | nfs4_verifier verifier; | 4320 | nfs4_verifier verifier; |
4321 | struct nfs41_exchange_id_args args = { | 4321 | struct nfs41_exchange_id_args args = { |
@@ -4601,7 +4601,6 @@ struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp) | |||
4601 | if (!session) | 4601 | if (!session) |
4602 | return NULL; | 4602 | return NULL; |
4603 | 4603 | ||
4604 | set_bit(NFS4CLNT_SESSION_SETUP, &clp->cl_state); | ||
4605 | /* | 4604 | /* |
4606 | * The create session reply races with the server back | 4605 | * The create session reply races with the server back |
4607 | * channel probe. Mark the client NFS_CS_SESSION_INITING | 4606 | * channel probe. Mark the client NFS_CS_SESSION_INITING |
@@ -4967,7 +4966,7 @@ struct nfs4_state_recovery_ops nfs41_reboot_recovery_ops = { | |||
4967 | .state_flag_bit = NFS_STATE_RECLAIM_REBOOT, | 4966 | .state_flag_bit = NFS_STATE_RECLAIM_REBOOT, |
4968 | .recover_open = nfs4_open_reclaim, | 4967 | .recover_open = nfs4_open_reclaim, |
4969 | .recover_lock = nfs4_lock_reclaim, | 4968 | .recover_lock = nfs4_lock_reclaim, |
4970 | .establish_clid = nfs4_proc_exchange_id, | 4969 | .establish_clid = nfs41_init_clientid, |
4971 | .get_clid_cred = nfs4_get_exchange_id_cred, | 4970 | .get_clid_cred = nfs4_get_exchange_id_cred, |
4972 | }; | 4971 | }; |
4973 | #endif /* CONFIG_NFS_V4_1 */ | 4972 | #endif /* CONFIG_NFS_V4_1 */ |
@@ -4987,7 +4986,7 @@ struct nfs4_state_recovery_ops nfs41_nograce_recovery_ops = { | |||
4987 | .state_flag_bit = NFS_STATE_RECLAIM_NOGRACE, | 4986 | .state_flag_bit = NFS_STATE_RECLAIM_NOGRACE, |
4988 | .recover_open = nfs4_open_expired, | 4987 | .recover_open = nfs4_open_expired, |
4989 | .recover_lock = nfs4_lock_expired, | 4988 | .recover_lock = nfs4_lock_expired, |
4990 | .establish_clid = nfs4_proc_exchange_id, | 4989 | .establish_clid = nfs41_init_clientid, |
4991 | .get_clid_cred = nfs4_get_exchange_id_cred, | 4990 | .get_clid_cred = nfs4_get_exchange_id_cred, |
4992 | }; | 4991 | }; |
4993 | #endif /* CONFIG_NFS_V4_1 */ | 4992 | #endif /* CONFIG_NFS_V4_1 */ |