nfs: Initialize cb_sequenceres information before validate_seqid()
Subsystems (2)
PATCH 2/2 nfs: Initialize cb_sequenceres information before validate_seqid()
For a cb_layoutrecall replay, nfsd got CB_SEQUENCE status of zero, but all informations of cb_sequenceres are zero too !!!
validate_seqid() return NFS4ERR_RETRY_UNCACHED_REP for a replay, and skip the initlize cb_sequenceres.
Signed-off-by Kinglong Mee <[email protected]>
--- fs/nfs/callback_proc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
fs/nfs/callback_proc.c +7 -7
@@ -445,6 +445,13 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args, goto out; } +memcpy (&res->csr_sessionid, &args->csa_sessionid, +sizeof (res->csr_sessionid)); + res->csr_sequenceid = args->csa_sequenceid; + res->csr_slotid = args->csa_slotid; + res->csr_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; + res->csr_target_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; + status =validate_seqid (tbl, args);spin_unlock (&tbl->slot_tbl_lock);if (status)
@@ -462,13 +469,6 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args, goto out; } -memcpy (&res->csr_sessionid, &args->csa_sessionid, -sizeof (res->csr_sessionid)); - res->csr_sequenceid = args->csa_sequenceid; - res->csr_slotid = args->csa_slotid; - res->csr_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; - res->csr_target_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; -/* * RFC5661 20.9.3 * If CB_SEQUENCE returns an error, then the state of the slot
Signature · 1 line
2.4.2
And this one.
Ping ...
Quoted 44 lines · Kinglong Mee
For a
cb_layoutrecallreplay, nfsd gotCB_SEQUENCEstatus of zero, but all informations ofcb_sequenceresare zero too !!!
validate_seqid()returnNFS4ERR_RETRY_UNCACHED_REPfor a replay, and skip the initlizecb_sequenceres.Signed-off-by Kinglong Mee <[email protected]>--- fs/nfs/callback_proc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)fs/nfs/callback_proc.c +7
-7@@ -445,6 +445,13 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args, goto out; } +memcpy (&res->csr_sessionid, &args->csa_sessionid, +sizeof (res->csr_sessionid)); + res->csr_sequenceid = args->csa_sequenceid; + res->csr_slotid = args->csa_slotid; + res->csr_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; + res->csr_target_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; + status =validate_seqid (tbl, args);spin_unlock (&tbl->slot_tbl_lock);if (status)@@ -462,13 +469,6 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args, goto out; } -memcpy (&res->csr_sessionid, &args->csa_sessionid, -sizeof (res->csr_sessionid)); - res->csr_sequenceid = args->csa_sequenceid; - res->csr_slotid = args->csa_slotid; - res->csr_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; - res->csr_target_highestslotid =NFS41_BC_MAX_CALLBACKS -1 ; -/* * RFC5661 20.9.3 * If CB_SEQUENCE returns an error, then the state of the slot