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

@ -267,8 +267,11 @@ process_rpc_call:
reply_msg.acpted_rply.ar_results.where = NULL;
reply_msg.acpted_rply.ar_results.proc = (xdrproc_t)xdr_void;
xdr_replymsg(xdrs, &reply_msg);
if (!status)
(*cl->cb_xdr)(xdrs, res);
if (!status) {
(*cl->cb_xdr)(xdrs, res); /* encode the results */
xdrs->x_op = XDR_FREE;
(*cl->cb_xdr)(xdrs, res); /* free the results */
}
if (! xdrrec_endofrecord(xdrs, 1)) {
fprintf(stderr, "%04x: failed to send REPLY\n", GetCurrentThreadId());
}