When we have to re-encode the RPCSEC_GSS request because it has fallen outside the GSS sequence window, we want to avoid moving it to the front of the transmission queue, since that moves the entire sequence window forward, and may result in more requests falling out. Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> --- net/sunrpc/xprt.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 9075ae150ae5..040c45c68fb3 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1322,6 +1322,12 @@ xprt_request_transmit(struct rpc_rqst *req, struct rpc_task *snd_task) } /* Verify that our message lies in the RPCSEC_GSS window */ if (rpcauth_xmit_need_reencode(task)) { + if (xprt->ops->release_request && + xprt_request_retransmit_after_disconnect(task)) { + spin_lock_bh(&xprt->transport_lock); + xprt->ops->release_request(task); + spin_unlock_bh(&xprt->transport_lock); + } status = -EBADMSG; goto out_dequeue; } -- 2.20.1