]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
SUNRPC: Make xs_tcp_close() do a socket shutdown rather than a sock_release
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 9 Feb 2015 14:23:34 +0000 (09:23 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 9 Feb 2015 16:20:44 +0000 (11:20 -0500)
Use of socket shutdown() means that we monitor the shutdown process
through the xs_tcp_state_change() callback, so it is preferable to
a full close in all cases unless we're destroying the transport.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
net/sunrpc/xprtsock.c

index 3d83cbd32ef250439fc54a43df2cae98ddd9025c..0279e8ffb14a1037052c311711daea8c93038134 100644 (file)
@@ -857,10 +857,7 @@ static void xs_close(struct rpc_xprt *xprt)
 
 static void xs_tcp_close(struct rpc_xprt *xprt)
 {
-       if (test_and_clear_bit(XPRT_CONNECTION_CLOSE, &xprt->state))
-               xs_close(xprt);
-       else
-               xs_tcp_shutdown(xprt);
+       xs_tcp_shutdown(xprt);
 }
 
 static void xs_xprt_free(struct rpc_xprt *xprt)
@@ -1033,7 +1030,6 @@ static void xs_udp_data_ready(struct sock *sk)
  */
 static void xs_tcp_force_close(struct rpc_xprt *xprt)
 {
-       set_bit(XPRT_CONNECTION_CLOSE, &xprt->state);
        xprt_force_disconnect(xprt);
 }