Re: [PATCH 2/7] SUNRPC: Allow RPCs to fail quickly if the server is unreachable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Oct 7, 2009, at 6:47 PM, Trond Myklebust wrote:

On Wed, 2009-10-07 at 18:34 -0400, Chuck Lever wrote:
On Oct 7, 2009, at 6:20 PM, Trond Myklebust wrote:
On Wed, 2009-10-07 at 18:02 -0400, Chuck Lever wrote:
		 * Special cases: if we've been waiting on the
		 * socket's write_space() callback, or if the
@@ -1198,6 +1200,11 @@ call_transmit_status(struct rpc_task *task)
	case -EHOSTUNREACH:
	case -ENETUNREACH:
	case -EPIPE:
+		if (RPC_IS_SOFTCONN(task)) {
+			xprt_end_transmit(task);
+			rpc_exit(task, task->tk_status);
+			break;
+		}

This doesn't look robust. The EPIPE error may mean that the socket got
closed as a result of server action, or a previous RPC call. Don't
forget that we might want to reuse SOFTCONN for NFSv4.1 session
binding
semantics.

EPIPE can easily be handled in a separate case that doesn't have soft
connect.

It directly affects rpcbind when you cache the rpc client, as you do in
later patches. If one RPC call fails with EPIPE, then so will all the
subsequent ones...

IOW: I'd suggest moving EPIPE _below_ your above SOFTCONN special case.
You might want to do the same for ENOTCONN...

Already done.  :-)


--
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux