mirror of https://gitee.com/openkylin/linux.git
NFSv4.x: Enforce the ca_maxresponsesize_cached on the back channel
We have no duplicate reply cache, so we always set the back channel ca_maxresponsesize_cached to zero when negotiating the session. That means we should always error out as soon as we see the server set args->csa_cachethis. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
f74a834a0e
commit
80f9642724
|
@ -381,9 +381,8 @@ validate_seqid(struct nfs4_slot_table *tbl, struct cb_sequenceargs * args)
|
|||
if (args->csa_cachethis == 0)
|
||||
return htonl(NFS4ERR_RETRY_UNCACHED_REP);
|
||||
|
||||
/* The ca_maxresponsesize_cached is 0 with no DRC */
|
||||
else if (args->csa_cachethis == 1)
|
||||
return htonl(NFS4ERR_REP_TOO_BIG_TO_CACHE);
|
||||
/* Liar! We never allowed you to set csa_cachethis != 0 */
|
||||
return htonl(NFS4ERR_SEQ_FALSE_RETRY);
|
||||
}
|
||||
|
||||
/* Wraparound */
|
||||
|
@ -500,6 +499,10 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args,
|
|||
|
||||
cps->slotid = args->csa_slotid;
|
||||
|
||||
/* The ca_maxresponsesize_cached is 0 with no DRC */
|
||||
if (args->csa_cachethis != 0)
|
||||
return htonl(NFS4ERR_REP_TOO_BIG_TO_CACHE);
|
||||
|
||||
/*
|
||||
* Check for pending referring calls. If a match is found, a
|
||||
* related callback was received before the response to the original
|
||||
|
|
Loading…
Reference in New Issue