Re: [PATCH] SUNRPC: RPC client's TCP transport ignores errors during connect

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

 



On Apr 8, 2008, at 1:55 PM, Trond Myklebust wrote:
On Tue, 2008-04-08 at 13:38 -0400, Chuck Lever wrote:
Commits 66af1e55 through 663b8858 recently changed how
xs_tcp_state_change() awakens RPC tasks in order to address problems
with disconnection of TCP sockets that were already connected.

The generic function xprt_connect_status() is invoked during a transport connection operation by this wake-up. It expects a specific error value describing the connection failure, but currently always gets ENOTCONN.

Does it? AFAICS, the only errors that it cares about are ETIMEDOUT,
ENOTCONN, ECONNRESET, and ECONNREFUSED, and the only effect is change
the dprintk() message.

OTOH, call_connect_status() will cause the task to exit with an EIO if
ever it gets sent an ECONNRESET or ECONNREFUSED.

Well, OK... but why keep the extra switch arms in xprt_connect_status if transports and the generic logic don't use those error codes? It serves only to confuse.

Last week, you claimed:

> The client currently doesn't retry in the case of a connection
> failing for a soft RPC request.

In fact, it does retry a connection attempt on soft RPC requests until a *major* timeout occurs.

So is the actual bug in call_timeout?

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