From: Trond Myklebust Date: Wed, 22 Jun 2005 17:16:28 +0000 (+0000) Subject: [PATCH] RPC: Clean up socket autodisconnect X-Git-Tag: v2.6.13-rc4~130^2~157^2~19 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=0f9dc2b16884bb5957d010ed8e9114e771a05916;p=linux-2.6-omap-h63xx.git [PATCH] RPC: Clean up socket autodisconnect Cancel autodisconnect requests inside xprt_transmit() in order to avoid races. Use more efficient del_singleshot_timer_sync() Signed-off-by: Trond Myklebust --- diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index ef941e7de8b..a74a1289113 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1240,6 +1240,8 @@ xprt_transmit(struct rpc_task *task) list_add_tail(&req->rq_list, &xprt->recv); spin_unlock_bh(&xprt->sock_lock); xprt_reset_majortimeo(req); + /* Turn off autodisconnect */ + del_singleshot_timer_sync(&xprt->timer); } } else if (!req->rq_bytes_sent) return; @@ -1370,8 +1372,6 @@ xprt_reserve(struct rpc_task *task) spin_lock(&xprt->xprt_lock); do_xprt_reserve(task); spin_unlock(&xprt->xprt_lock); - if (task->tk_rqstp) - del_timer_sync(&xprt->timer); } }