From: Dave Wysochanski <dwysocha@redhat.com>
To: Olga Kornievskaia <olga.kornievskaia@gmail.com>,
trond.myklebust@hammerspace.com, anna.schumaker@netapp.com
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 1/1] SUNRPC: fix handling of half-closed connection
Date: Fri, 22 Feb 2019 07:12:56 -0500 [thread overview]
Message-ID: <1550837576.6456.3.camel@redhat.com> (raw)
In-Reply-To: <20190220145650.21566-1-olga.kornievskaia@gmail.com>
Hi Olga,
Do you have a reproducer for this? A number of months ago I did a
significant amount of testing with half-closed connections, after we
had reports of connections stuck in FIN_WAIT2 in some older kernels.
What I found was with kernels that had the tcp keepalives (commit
7f260e8575bf53b93b77978c1e39f8e67612759c), I could only reproduce a
hang of a few minutes, after which time the tcp keepalive code would
reset the connection.
That said it was a while ago and something subtle may have changed.
Also I'm not not sure if your header implies an indefinite hang or just
a few minutes.
Thanks.
On Wed, 2019-02-20 at 09:56 -0500, Olga Kornievskaia wrote:
> From: Olga Kornievskaia <kolga@netapp.com>
>
> When server replies with an ACK to client's FIN/ACK, client ends
> up stuck in a TCP_FIN_WAIT2 state and client's mount hangs.
> Instead, make sure to close and reset client's socket and transport
> when transitioned into that state.
>
> Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
> ---
> net/sunrpc/xprtsock.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
> index 618e9c2..812e5e3 100644
> --- a/net/sunrpc/xprtsock.c
> +++ b/net/sunrpc/xprtsock.c
> @@ -1502,6 +1502,7 @@ static void xs_tcp_state_change(struct sock
> *sk)
> clear_bit(XPRT_CLOSE_WAIT, &xprt->state);
> smp_mb__after_atomic();
> break;
> + case TCP_FIN_WAIT2:
> case TCP_CLOSE_WAIT:
> /* The server initiated a shutdown of the socket */
> xprt->connect_cookie++;
> @@ -2152,6 +2153,7 @@ static void xs_tcp_shutdown(struct rpc_xprt
> *xprt)
> kernel_sock_shutdown(sock, SHUT_RDWR);
> trace_rpc_socket_shutdown(xprt, sock);
> break;
> + case TCP_FIN_WAIT2:
> case TCP_CLOSE:
> case TCP_TIME_WAIT:
> xs_reset_transport(transport);
next prev parent reply other threads:[~2019-02-22 12:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-20 14:56 [PATCH 1/1] SUNRPC: fix handling of half-closed connection Olga Kornievskaia
2019-02-22 12:12 ` Dave Wysochanski [this message]
2019-02-22 13:45 ` Trond Myklebust
2019-02-22 14:46 ` Olga Kornievskaia
2019-02-22 15:05 ` Trond Myklebust
2019-02-22 15:11 ` Olga Kornievskaia
2019-02-22 15:50 ` Trond Myklebust
2019-02-22 17:02 ` Olga Kornievskaia
2019-02-22 17:09 ` Trond Myklebust
2019-02-22 14:44 ` Olga Kornievskaia
2019-02-22 16:32 ` Dave Wysochanski
2019-02-22 17:10 ` Olga Kornievskaia
2019-02-22 19:17 ` Dave Wysochanski
2019-02-22 20:00 ` Trond Myklebust
2019-02-23 17:31 ` Dave Wysochanski
2019-03-05 17:22 ` Olga Kornievskaia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1550837576.6456.3.camel@redhat.com \
--to=dwysocha@redhat.com \
--cc=anna.schumaker@netapp.com \
--cc=linux-nfs@vger.kernel.org \
--cc=olga.kornievskaia@gmail.com \
--cc=trond.myklebust@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.