diff options
Diffstat (limited to 'fs/nfsd/nfs4proc.c')
| -rw-r--r-- | fs/nfsd/nfs4proc.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index c453a1998e00..dadb3bf305b2 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1769,6 +1769,12 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,  			opdesc->op_get_currentstateid(cstate, &op->u);  		op->status = opdesc->op_func(rqstp, cstate, &op->u); +		/* Only from SEQUENCE */ +		if (cstate->status == nfserr_replay_cache) { +			dprintk("%s NFS4.1 replay from cache\n", __func__); +			status = op->status; +			goto out; +		}  		if (!op->status) {  			if (opdesc->op_set_currentstateid)  				opdesc->op_set_currentstateid(cstate, &op->u); @@ -1779,14 +1785,7 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,  			if (need_wrongsec_check(rqstp))  				op->status = check_nfsd_access(current_fh->fh_export, rqstp);  		} -  encode_op: -		/* Only from SEQUENCE */ -		if (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->xdr, op);  |