SUNRPC: Get rid of the xs_error_report socket callback
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 22 Oct 2012 21:14:36 +0000 (17:14 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 24 Oct 2012 14:46:15 +0000 (10:46 -0400)
commitf878b657ce8e7d3673afe48110ec208a29e38c4a
treece2f01c75268473a8d4e8879f5f55b73a16caa7d
parent4bc1e68ed6a8b59be8a79eb719be515a55c7bc68
SUNRPC: Get rid of the xs_error_report socket callback

Chris Perl reports that we're seeing races between the wakeup call in
xs_error_report and the connect attempts. Basically, Chris has shown
that in certain circumstances, the call to xs_error_report causes the
rpc_task that is responsible for reconnecting to wake up early, thus
triggering a disconnect and retry.

Since the sk->sk_error_report() calls in the socket layer are always
followed by a tcp_done() in the cases where we care about waking up
the rpc_tasks, just let the state_change callbacks take responsibility
for those wake ups.

Reported-by: Chris Perl <chris.perl@gmail.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
Tested-by: Chris Perl <chris.perl@gmail.com>
net/sunrpc/xprtsock.c