summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/state.h
diff options
context:
space:
mode:
authorKinglong Mee2015-06-02 12:59:25 +0200
committerJ. Bruce Fields2015-06-04 22:51:30 +0200
commit276f03e3ba242ebf2cf201cc3c7058d2884912b7 (patch)
tree882bd87a72e38396f21739bf8196ebbf3ef521b3 /fs/nfsd/state.h
parentnfsd: Reset cb_status in nfsd4_cb_prepare() at retrying (diff)
downloadkernel-qcow2-linux-276f03e3ba242ebf2cf201cc3c7058d2884912b7.tar.gz
kernel-qcow2-linux-276f03e3ba242ebf2cf201cc3c7058d2884912b7.tar.xz
kernel-qcow2-linux-276f03e3ba242ebf2cf201cc3c7058d2884912b7.zip
nfsd: Update callback sequnce id only CB_SEQUENCE success
When testing pnfs layout, nfsd got error NFS4ERR_SEQ_MISORDERED. It is caused by nfs return NFS4ERR_DELAY before validate_seqid(), don't update the sequnce id, but nfsd updates the sequnce id !!! According to RFC5661 20.9.3, " If CB_SEQUENCE returns an error, then the state of the slot (sequence ID, cached reply) MUST NOT change. " Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r--fs/nfsd/state.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
index dbc4f85a5008..4ed7c2ae95eb 100644
--- a/fs/nfsd/state.h
+++ b/fs/nfsd/state.h
@@ -68,6 +68,7 @@ struct nfsd4_callback {
struct nfsd4_callback_ops *cb_ops;
struct work_struct cb_work;
int cb_status;
+ bool cb_update_seq_nr;
bool cb_need_restart;
};