@ -1427,37 +1427,6 @@ out:
read_unlock_bh ( & sk - > sk_callback_lock ) ;
}
/*
* Do the equivalent of linger / linger2 handling for dealing with
* broken servers that don ' t close the socket in a timely
* fashion
*/
static void xs_tcp_schedule_linger_timeout ( struct rpc_xprt * xprt ,
unsigned long timeout )
{
struct sock_xprt * transport ;
if ( xprt_test_and_set_connecting ( xprt ) )
return ;
set_bit ( XPRT_CONNECTION_ABORT , & xprt - > state ) ;
transport = container_of ( xprt , struct sock_xprt , xprt ) ;
queue_delayed_work ( rpciod_workqueue , & transport - > connect_worker ,
timeout ) ;
}
static void xs_tcp_cancel_linger_timeout ( struct rpc_xprt * xprt )
{
struct sock_xprt * transport ;
transport = container_of ( xprt , struct sock_xprt , xprt ) ;
if ( ! test_bit ( XPRT_CONNECTION_ABORT , & xprt - > state ) | |
! cancel_delayed_work ( & transport - > connect_worker ) )
return ;
clear_bit ( XPRT_CONNECTION_ABORT , & xprt - > state ) ;
xprt_clear_connecting ( xprt ) ;
}
static void xs_sock_mark_closed ( struct rpc_xprt * xprt )
{
xs_sock_reset_connection_flags ( xprt ) ;
@ -1513,7 +1482,6 @@ static void xs_tcp_state_change(struct sock *sk)
clear_bit ( XPRT_CONNECTED , & xprt - > state ) ;
clear_bit ( XPRT_CLOSE_WAIT , & xprt - > state ) ;
smp_mb__after_atomic ( ) ;
xs_tcp_schedule_linger_timeout ( xprt , xs_tcp_fin_timeout ) ;
break ;
case TCP_CLOSE_WAIT :
/* The server initiated a shutdown of the socket */
@ -1530,13 +1498,11 @@ static void xs_tcp_state_change(struct sock *sk)
break ;
case TCP_LAST_ACK :
set_bit ( XPRT_CLOSING , & xprt - > state ) ;
xs_tcp_schedule_linger_timeout ( xprt , xs_tcp_fin_timeout ) ;
smp_mb__before_atomic ( ) ;
clear_bit ( XPRT_CONNECTED , & xprt - > state ) ;
smp_mb__after_atomic ( ) ;
break ;
case TCP_CLOSE :
xs_tcp_cancel_linger_timeout ( xprt ) ;
xs_sock_mark_closed ( xprt ) ;
}
out :
@ -2134,7 +2100,6 @@ static int xs_tcp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
/* socket options */
sock_reset_flag ( sk , SOCK_LINGER ) ;
tcp_sk ( sk ) - > linger2 = 0 ;
tcp_sk ( sk ) - > nonagle | = TCP_NAGLE_OFF ;
xprt_clear_connected ( xprt ) ;