callback: replay cache for back channel

nfs41_cb_session stores the last cb_compound reply (whether or not cachethis was set) to handle retry attempts, along with the cb_compound arguments for improved NFS4ERR_SEQ_FALSE_RETRY detection

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2011-03-28 11:23:54 -04:00 committed by unknown
parent 32be705e4d
commit cc2efe6a96
7 changed files with 265 additions and 80 deletions

View file

@ -24,7 +24,6 @@
#ifndef __NFS41_CALLBACK_H__
#define __NFS41_CALLBACK_H__
//#include "nfs41.h"
#include "wintirpc.h"
#include "rpc/rpc.h"
#include "nfs41_types.h"
@ -230,14 +229,16 @@ struct cb_compound_args {
};
union cb_op_res {
enum_t status; /* all results start with status */
struct cb_layoutrecall_res layoutrecall;
struct cb_recall_slot_res recall_slot;
struct cb_sequence_res sequence;
struct cb_recall_res recall;
struct cb_recall_res recall;
};
struct cb_resop {
enum_t opnum;
union cb_op_res res;
bool_t xdr_ok;
};
struct cb_compound_res {
enum_t status;
@ -247,8 +248,13 @@ struct cb_compound_res {
};
/* callback_xdr.c */
bool_t proc_cb_compound_args(XDR *xdr, struct cb_compound_args *args);
bool_t proc_cb_compound_res(XDR *xdr, struct cb_compound_res *res);
/* callback_server.c */
struct __nfs41_session;
void nfs41_callback_session_init(
IN struct __nfs41_session *session);
#endif /* !__NFS41_CALLBACK_H__ */