From 53ae0a992b875f20ec0d74ce0a766890dc24cf6f Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Wed, 22 Jun 2005 17:16:28 +0000 Subject: [PATCH] --- yaml --- r: 2795 b: refs/heads/master c: ae3884621bf5b4caff7785b9a417f262202965b2 h: refs/heads/master i: 2793: 1fcdcbdc03d4b91d0fb39730e00f0f17ec5fae6b 2791: 3454994085c58086f2518c1118196d32d55a6f41 v: v3 --- [refs] | 2 +- trunk/net/sunrpc/xprt.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 0e6016c75ee4..49ad28659cb1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20e5ac828dfd23b9080159c62a34f32d2dcd92fc +refs/heads/master: ae3884621bf5b4caff7785b9a417f262202965b2 diff --git a/trunk/net/sunrpc/xprt.c b/trunk/net/sunrpc/xprt.c index 2b8789cf8db1..eca92405948f 100644 --- a/trunk/net/sunrpc/xprt.c +++ b/trunk/net/sunrpc/xprt.c @@ -569,8 +569,11 @@ void xprt_connect(struct rpc_task *task) if (xprt->sock != NULL) schedule_delayed_work(&xprt->sock_connect, RPC_REESTABLISH_TIMEOUT); - else + else { schedule_work(&xprt->sock_connect); + if (!RPC_IS_ASYNC(task)) + flush_scheduled_work(); + } } return; out_write: @@ -1685,6 +1688,10 @@ xprt_shutdown(struct rpc_xprt *xprt) rpc_wake_up(&xprt->backlog); wake_up(&xprt->cong_wait); del_timer_sync(&xprt->timer); + + /* synchronously wait for connect worker to finish */ + cancel_delayed_work(&xprt->sock_connect); + flush_scheduled_work(); } /*