diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2024-02-08 11:00:35 -0500 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2024-03-01 09:12:31 -0500 |
commit | b910544a5a41b4d71141128c2d5d8eda056bf665 (patch) | |
tree | 6254249f844d2397224984ca6a46a05fe9139d9c /fs/nfsd | |
parent | e4469c6cc69be1b5a1d93699618f3f84f16f22f8 (diff) | |
download | linux-b910544a5a41b4d71141128c2d5d8eda056bf665.tar.gz linux-b910544a5a41b4d71141128c2d5d8eda056bf665.tar.bz2 linux-b910544a5a41b4d71141128c2d5d8eda056bf665.zip |
NFSD: Document the phases of CREATE_SESSION
As described in RFC 8881 Section 18.36.4, CREATE_SESSION can be
split into four phases. NFSD's implementation now does it like that
description.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 8ffa6d548a9a..994dcf8e5420 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3762,6 +3762,8 @@ nfsd4_create_session(struct svc_rqst *rqstp, goto out_free_session; spin_lock(&nn->client_lock); + + /* RFC 8881 Section 18.36.4 Phase 1: Client record look-up. */ unconf = find_unconfirmed_client(&cr_ses->clientid, true, nn); conf = find_confirmed_client(&cr_ses->clientid, true, nn); if (!conf && !unconf) { @@ -3769,6 +3771,7 @@ nfsd4_create_session(struct svc_rqst *rqstp, goto out_free_conn; } + /* RFC 8881 Section 18.36.4 Phase 2: Sequence ID processing. */ if (conf) cs_slot = &conf->cl_cs_slot; else @@ -3784,6 +3787,7 @@ nfsd4_create_session(struct svc_rqst *rqstp, cs_slot->sl_seqid++; cr_ses->seqid = cs_slot->sl_seqid; + /* RFC 8881 Section 18.36.4 Phase 3: Client ID confirmation. */ if (conf) { status = nfserr_wrong_cred; if (!nfsd4_mach_creds_match(conf, rqstp)) @@ -3810,6 +3814,8 @@ nfsd4_create_session(struct svc_rqst *rqstp, move_to_confirmed(unconf); conf = unconf; } + + /* RFC 8881 Section 18.36.4 Phase 4: Session creation. */ status = nfs_ok; /* Persistent sessions are not supported */ cr_ses->flags &= ~SESSION4_PERSIST; |