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 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...

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.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