mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
NFS4: Add a trace event to record invalid CB sequence IDs
Help debug NFSv4 callback failures. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
675dd90ad0
commit
c5833f0dc4
2 changed files with 58 additions and 8 deletions
|
@ -414,27 +414,39 @@ static __be32
|
|||
validate_seqid(const struct nfs4_slot_table *tbl, const struct nfs4_slot *slot,
|
||||
const struct cb_sequenceargs * args)
|
||||
{
|
||||
__be32 ret;
|
||||
|
||||
ret = cpu_to_be32(NFS4ERR_BADSLOT);
|
||||
if (args->csa_slotid > tbl->server_highest_slotid)
|
||||
return htonl(NFS4ERR_BADSLOT);
|
||||
goto out_err;
|
||||
|
||||
/* Replay */
|
||||
if (args->csa_sequenceid == slot->seq_nr) {
|
||||
ret = cpu_to_be32(NFS4ERR_DELAY);
|
||||
if (nfs4_test_locked_slot(tbl, slot->slot_nr))
|
||||
return htonl(NFS4ERR_DELAY);
|
||||
goto out_err;
|
||||
|
||||
/* Signal process_op to set this error on next op */
|
||||
ret = cpu_to_be32(NFS4ERR_RETRY_UNCACHED_REP);
|
||||
if (args->csa_cachethis == 0)
|
||||
return htonl(NFS4ERR_RETRY_UNCACHED_REP);
|
||||
goto out_err;
|
||||
|
||||
/* Liar! We never allowed you to set csa_cachethis != 0 */
|
||||
return htonl(NFS4ERR_SEQ_FALSE_RETRY);
|
||||
ret = cpu_to_be32(NFS4ERR_SEQ_FALSE_RETRY);
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
/* Note: wraparound relies on seq_nr being of type u32 */
|
||||
if (likely(args->csa_sequenceid == slot->seq_nr + 1))
|
||||
return htonl(NFS4_OK);
|
||||
|
||||
/* Misordered request */
|
||||
return htonl(NFS4ERR_SEQ_MISORDERED);
|
||||
ret = cpu_to_be32(NFS4ERR_SEQ_MISORDERED);
|
||||
if (args->csa_sequenceid != slot->seq_nr + 1)
|
||||
goto out_err;
|
||||
|
||||
return cpu_to_be32(NFS4_OK);
|
||||
|
||||
out_err:
|
||||
trace_nfs4_cb_seqid_err(args, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue