Browse Source

SUNRPC: Handle ENETUNREACH, EHOSTUNREACH and EHOSTDOWN socket errors

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>
Trond Myklebust 18 years ago
parent
commit
76303992b4
1 changed files with 8 additions and 0 deletions
  1. 8 0
      net/sunrpc/clnt.c

+ 8 - 0
net/sunrpc/clnt.c

@@ -1030,6 +1030,14 @@ call_status(struct rpc_task *task)
 
 
 	task->tk_status = 0;
 	task->tk_status = 0;
 	switch(status) {
 	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:
 	case -ETIMEDOUT:
 		task->tk_action = call_timeout;
 		task->tk_action = call_timeout;
 		break;
 		break;