]> err.no Git - linux-2.6/commitdiff
SUNRPC: Handle ENETUNREACH, EHOSTUNREACH and EHOSTDOWN socket errors
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 30 Aug 2006 18:32:49 +0000 (14:32 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 23 Sep 2006 03:24:56 +0000 (23:24 -0400)
In case of any of the above errors occuring, delay for 3 seconds, then
handle as if it were a timeout error.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/clnt.c

index 87efcd207f2336b30050d53ee53ed1003320995f..355e7863c0aa57a72bf933682ae2846b8323386a 100644 (file)
@@ -1030,6 +1030,14 @@ call_status(struct rpc_task *task)
 
        task->tk_status = 0;
        switch(status) {
+       case -EHOSTDOWN:
+       case -EHOSTUNREACH:
+       case -ENETUNREACH:
+               /*
+                * Delay any retries for 3 seconds, then handle as if it
+                * were a timeout.
+                */
+               rpc_delay(task, 3*HZ);
        case -ETIMEDOUT:
                task->tk_action = call_timeout;
                break;