diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2009-12-03 23:58:56 +0300 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-12-03 23:58:56 +0300 |
commit | 3a28becc35e5c8f1fabb707bcd8a473712653de6 (patch) | |
tree | 2cdbbbea50d8a6ed8c9a3f9a84b29b424154b6e4 /net/sunrpc/clnt.c | |
parent | caabea8a565fb4e16f8e58e16bb9d535e591b709 (diff) | |
download | linux-3a28becc35e5c8f1fabb707bcd8a473712653de6.tar.xz |
SUNRPC: soft connect semantics for UDP
Introduce soft connect behavior for UDP transports. In this case, a
major timeout returns ETIMEDOUT instead of EIO.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 97931d9f8579..154034b675bd 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -1380,6 +1380,10 @@ call_timeout(struct rpc_task *task) dprintk("RPC: %5u call_timeout (major)\n", task->tk_pid); task->tk_timeouts++; + if (RPC_IS_SOFTCONN(task)) { + rpc_exit(task, -ETIMEDOUT); + return; + } if (RPC_IS_SOFT(task)) { if (clnt->cl_chatty) printk(KERN_NOTICE "%s: server %s not responding, timed out\n", |