nfsd41: nfsd DRC logic
Replay a request in nfsd4_sequence. Add a minorversion to struct nfsd4_compound_state. Pass the current slot to nfs4svc_encode_compound res via struct nfsd4_compoundres to set an NFSv4.1 DRC entry. Signed-off-by: Andy Adamson<andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> [nfsd41: use bool inuse for slot state] Signed-off-by: Benny Halevy <bhalevy@panasas.com> [nfsd41: use cstate session in nfs4svc_encode_compoundres] [nfsd41 replace nfsd4_set_cache_entry] Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:

committed by
J. Bruce Fields

parent
c3d06f9ce8
commit
da3846a286
@@ -936,6 +936,12 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
|
||||
BUG_ON(op->status == nfs_ok);
|
||||
|
||||
encode_op:
|
||||
/* Only from SEQUENCE or CREATE_SESSION */
|
||||
if (resp->cstate.status == nfserr_replay_cache) {
|
||||
dprintk("%s NFS4.1 replay from cache\n", __func__);
|
||||
status = op->status;
|
||||
goto out;
|
||||
}
|
||||
if (op->status == nfserr_replay_me) {
|
||||
op->replay = &cstate->replay_owner->so_replay;
|
||||
nfsd4_encode_replay(resp, op);
|
||||
@@ -964,6 +970,7 @@ encode_op:
|
||||
status = nfserr_jukebox;
|
||||
}
|
||||
|
||||
resp->cstate.status = status;
|
||||
fh_put(&resp->cstate.current_fh);
|
||||
fh_put(&resp->cstate.save_fh);
|
||||
BUG_ON(resp->cstate.replay_owner);
|
||||
|
Reference in New Issue
Block a user