Do you also need to move req->rq_ntrans++ ? > On Sep 3, 2018, at 11:29 AM, Trond Myklebust <trondmy@xxxxxxxxx> wrote: > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > --- > net/sunrpc/clnt.c | 6 ------ > net/sunrpc/xprt.c | 4 ++++ > 2 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index 585a82dfaf4d..fb40d1e9f636 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -1967,8 +1967,6 @@ call_connect_status(struct rpc_task *task) > static void > call_transmit(struct rpc_task *task) > { > - int is_retrans = RPC_WAS_SENT(task); > - > dprint_status(task); > > task->tk_action = call_transmit_status; > @@ -1979,10 +1977,6 @@ call_transmit(struct rpc_task *task) > if (!xprt_prepare_transmit(task)) > return; > xprt_transmit(task); > - if (task->tk_status < 0) > - return; > - if (is_retrans) > - task->tk_client->cl_stats->rpcretrans++; > } > > /* > diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c > index 95d15d4017f7..b85e2c4fa115 100644 > --- a/net/sunrpc/xprt.c > +++ b/net/sunrpc/xprt.c > @@ -1126,6 +1126,7 @@ void xprt_transmit(struct rpc_task *task) > struct rpc_rqst *req = task->tk_rqstp; > struct rpc_xprt *xprt = req->rq_xprt; > unsigned int connect_cookie; > + int is_retrans = RPC_WAS_SENT(task); > int status; > > dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen); > @@ -1148,6 +1149,9 @@ void xprt_transmit(struct rpc_task *task) > return; > } > > + if (is_retrans) > + task->tk_client->cl_stats->rpcretrans++; > + > xprt_inject_disconnect(xprt); > > dprintk("RPC: %5u xmit complete\n", task->tk_pid); > -- > 2.17.1 > -- Chuck Lever chucklever@xxxxxxxxx