NeilBrown a1a975
From: Trond Myklebust <trond.myklebust@hammerspace.com>
NeilBrown a1a975
Date: Tue, 24 Aug 2021 11:38:17 -0400
NeilBrown a1a975
Subject: [PATCH] SUNRPC: Simplify socket shutdown when not reusing TCP ports
NeilBrown a1a975
Git-commit: 0a6ff58edbfb26469a095ab964095506352fc960
NeilBrown a1a975
Patch-mainline: v5.15-rc1
NeilBrown a1a975
References: git-fixes
NeilBrown a1a975
NeilBrown a1a975
If we're not required to reuse the TCP port, then we can just
NeilBrown a1a975
immediately close the socket, and leave the cleanup details to the TCP
NeilBrown a1a975
layer.
NeilBrown a1a975
NeilBrown a1a975
Fixes: e6237b6feb37 ("NFSv4.1: Don't rebind to the same source port when reconnecting to the server")
NeilBrown a1a975
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
NeilBrown a1a975
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
NeilBrown a1a975
Acked-by: NeilBrown <neilb@suse.com>
NeilBrown a1a975
NeilBrown a1a975
---
NeilBrown a1a975
 net/sunrpc/xprtsock.c |    4 ++++
NeilBrown a1a975
 1 file changed, 4 insertions(+)
NeilBrown a1a975
NeilBrown a1a975
--- a/net/sunrpc/xprtsock.c
NeilBrown a1a975
+++ b/net/sunrpc/xprtsock.c
NeilBrown a1a975
@@ -2260,6 +2260,10 @@ static void xs_tcp_shutdown(struct rpc_x
NeilBrown a1a975
 
NeilBrown a1a975
 	if (sock == NULL)
NeilBrown a1a975
 		return;
NeilBrown a1a975
+	if (!xprt->reuseport) {
NeilBrown a1a975
+		xs_close(xprt);
NeilBrown a1a975
+		return;
NeilBrown a1a975
+	}
NeilBrown a1a975
 	if (xprt_connected(xprt)) {
NeilBrown a1a975
 		kernel_sock_shutdown(sock, SHUT_RDWR);
NeilBrown a1a975
 		trace_rpc_socket_shutdown(xprt, sock);