-
- Downloads
NFSD: Reset cb_seq_status after NFS4ERR_DELAY
commit 961b4b5e upstream. I noticed that once an NFSv4.1 callback operation gets a NFS4ERR_DELAY status on CB_SEQUENCE and then the connection is lost, the callback client loops, resending it indefinitely. The switch arm in nfsd4_cb_sequence_done() that handles NFS4ERR_DELAY uses rpc_restart_call() to rearm the RPC state machine for the retransmit, but that path does not call the rpc_prepare_call callback again. Thus cb_seq_status is set to -10008 by the first NFS4ERR_DELAY result, but is never set back to 1 for the retransmits. nfsd4_cb_sequence_done() thinks it's getting nothing but a long series of CB_SEQUENCE NFS4ERR_DELAY replies. Fixes: 7ba6cad6 ("nfsd: New helper nfsd4_cb_sequence_done() for processing more cb errors") Reviewed-by:Jeff Layton <jlayton@kernel.org> Reviewed-by:
Benjamin Coddington <bcodding@redhat.com> Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
72dbd732
No related branches found
No related tags found
Please register or sign in to comment