|
@@ -1060,7 +1060,7 @@ call_bind_status(struct rpc_task *task)
|
|
|
goto retry_timeout;
|
|
|
case -EPFNOSUPPORT:
|
|
|
/* server doesn't support any rpcbind version we know of */
|
|
|
- dprintk("RPC: %5u remote rpcbind service unavailable\n",
|
|
|
+ dprintk("RPC: %5u unrecognized remote rpcbind service\n",
|
|
|
task->tk_pid);
|
|
|
break;
|
|
|
case -EPROTONOSUPPORT:
|
|
@@ -1069,6 +1069,21 @@ call_bind_status(struct rpc_task *task)
|
|
|
task->tk_status = 0;
|
|
|
task->tk_action = call_bind;
|
|
|
return;
|
|
|
+ case -ECONNREFUSED: /* connection problems */
|
|
|
+ case -ECONNRESET:
|
|
|
+ case -ENOTCONN:
|
|
|
+ case -EHOSTDOWN:
|
|
|
+ case -EHOSTUNREACH:
|
|
|
+ case -ENETUNREACH:
|
|
|
+ case -EPIPE:
|
|
|
+ dprintk("RPC: %5u remote rpcbind unreachable: %d\n",
|
|
|
+ task->tk_pid, task->tk_status);
|
|
|
+ if (!RPC_IS_SOFTCONN(task)) {
|
|
|
+ rpc_delay(task, 5*HZ);
|
|
|
+ goto retry_timeout;
|
|
|
+ }
|
|
|
+ status = task->tk_status;
|
|
|
+ break;
|
|
|
default:
|
|
|
dprintk("RPC: %5u unrecognized rpcbind error (%d)\n",
|
|
|
task->tk_pid, -task->tk_status);
|