aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/clnt.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 498dd6ad5bc5..4216fe33204a 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1867,6 +1867,9 @@ call_bind(struct rpc_task *task)
1867 dprint_status(task); 1867 dprint_status(task);
1868 1868
1869 task->tk_action = call_bind_status; 1869 task->tk_action = call_bind_status;
1870 if (!xprt_prepare_transmit(task))
1871 return;
1872
1870 task->tk_timeout = xprt->bind_timeout; 1873 task->tk_timeout = xprt->bind_timeout;
1871 xprt->ops->rpcbind(task); 1874 xprt->ops->rpcbind(task);
1872} 1875}
@@ -1911,6 +1914,8 @@ call_bind_status(struct rpc_task *task)
1911 task->tk_rebind_retry--; 1914 task->tk_rebind_retry--;
1912 rpc_delay(task, 3*HZ); 1915 rpc_delay(task, 3*HZ);
1913 goto retry_timeout; 1916 goto retry_timeout;
1917 case -EAGAIN:
1918 goto retry_timeout;
1914 case -ETIMEDOUT: 1919 case -ETIMEDOUT:
1915 dprintk("RPC: %5u rpcbind request timed out\n", 1920 dprintk("RPC: %5u rpcbind request timed out\n",
1916 task->tk_pid); 1921 task->tk_pid);
@@ -1952,7 +1957,7 @@ call_bind_status(struct rpc_task *task)
1952 1957
1953retry_timeout: 1958retry_timeout:
1954 task->tk_status = 0; 1959 task->tk_status = 0;
1955 task->tk_action = call_encode; 1960 task->tk_action = call_bind;
1956 rpc_check_timeout(task); 1961 rpc_check_timeout(task);
1957} 1962}
1958 1963
@@ -1986,6 +1991,8 @@ call_connect(struct rpc_task *task)
1986 rpc_exit(task, -ENOTCONN); 1991 rpc_exit(task, -ENOTCONN);
1987 return; 1992 return;
1988 } 1993 }
1994 if (!xprt_prepare_transmit(task))
1995 return;
1989 xprt_connect(task); 1996 xprt_connect(task);
1990} 1997}
1991 1998