diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2020-03-18 11:20:50 -0400 | 
|---|---|---|
| committer | Chuck Lever <chuck.lever@oracle.com> | 2020-05-18 10:21:22 -0400 | 
| commit | a0469f46faab786e8ec9f8c8526a185357b38772 (patch) | |
| tree | d2dfcf33298493c2f6d28153b857cf766228d509 /net/sunrpc/svcsock.c | |
| parent | 998024dee197944a7018a0bdc85b83b569ddec22 (diff) | |
SUNRPC: Replace dprintk call sites in TCP state change callouts
Report TCP socket state changes and accept failures via
tracepoints, replacing dprintk() call sites.
No tracepoint is added in svc_tcp_listen_data_ready. There's
no information available there that isn't also reported by the
svcsock_new_socket and the accept failure tracepoints.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'net/sunrpc/svcsock.c')
| -rw-r--r-- | net/sunrpc/svcsock.c | 35 | 
1 files changed, 6 insertions, 29 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 758b835ad4ce..4ac1180c6306 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c @@ -657,9 +657,6 @@ static void svc_tcp_listen_data_ready(struct sock *sk)  {  	struct svc_sock	*svsk = (struct svc_sock *)sk->sk_user_data; -	dprintk("svc: socket %p TCP (listen) state change %d\n", -		sk, sk->sk_state); -  	if (svsk) {  		/* Refer to svc_setup_socket() for details. */  		rmb(); @@ -680,8 +677,7 @@ static void svc_tcp_listen_data_ready(struct sock *sk)  		if (svsk) {  			set_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);  			svc_xprt_enqueue(&svsk->sk_xprt); -		} else -			printk("svc: socket %p: no user data\n", sk); +		}  	}  } @@ -692,15 +688,11 @@ static void svc_tcp_state_change(struct sock *sk)  {  	struct svc_sock	*svsk = (struct svc_sock *)sk->sk_user_data; -	dprintk("svc: socket %p TCP (connected) state change %d (svsk %p)\n", -		sk, sk->sk_state, sk->sk_user_data); - -	if (!svsk) -		printk("svc: socket %p: no user data\n", sk); -	else { +	if (svsk) {  		/* Refer to svc_setup_socket() for details. */  		rmb();  		svsk->sk_ostate(sk); +		trace_svcsock_tcp_state(&svsk->sk_xprt, svsk->sk_sock);  		if (sk->sk_state != TCP_ESTABLISHED) {  			set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);  			svc_xprt_enqueue(&svsk->sk_xprt); @@ -721,7 +713,6 @@ static struct svc_xprt *svc_tcp_accept(struct svc_xprt *xprt)  	struct socket	*newsock;  	struct svc_sock	*newsvsk;  	int		err, slen; -	RPC_IFDEBUG(char buf[RPC_MAX_ADDRBUFLEN]);  	if (!sock)  		return NULL; @@ -735,30 +726,18 @@ static struct svc_xprt *svc_tcp_accept(struct svc_xprt *xprt)  		else if (err != -EAGAIN)  			net_warn_ratelimited("%s: accept failed (err %d)!\n",  					     serv->sv_name, -err); +		trace_svcsock_accept_err(xprt, serv->sv_name, err);  		return NULL;  	}  	set_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags);  	err = kernel_getpeername(newsock, sin);  	if (err < 0) { -		net_warn_ratelimited("%s: peername failed (err %d)!\n", -				     serv->sv_name, -err); +		trace_svcsock_getpeername_err(xprt, serv->sv_name, err);  		goto failed;		/* aborted connection or whatever */  	}  	slen = err; -	/* Ideally, we would want to reject connections from unauthorized -	 * hosts here, but when we get encryption, the IP of the host won't -	 * tell us anything.  For now just warn about unpriv connections. -	 */ -	if (!svc_port_is_privileged(sin)) { -		dprintk("%s: connect from unprivileged port: %s\n", -			serv->sv_name, -			__svc_print_addr(sin, buf, sizeof(buf))); -	} -	dprintk("%s: connect from %s\n", serv->sv_name, -		__svc_print_addr(sin, buf, sizeof(buf))); -  	/* Reset the inherited callbacks before calling svc_setup_socket */  	newsock->sk->sk_state_change = svsk->sk_ostate;  	newsock->sk->sk_data_ready = svsk->sk_odata; @@ -776,10 +755,8 @@ static struct svc_xprt *svc_tcp_accept(struct svc_xprt *xprt)  	svc_xprt_set_remote(&newsvsk->sk_xprt, sin, slen);  	err = kernel_getsockname(newsock, sin);  	slen = err; -	if (unlikely(err < 0)) { -		dprintk("svc_tcp_accept: kernel_getsockname error %d\n", -err); +	if (unlikely(err < 0))  		slen = offsetof(struct sockaddr, sa_data); -	}  	svc_xprt_set_local(&newsvsk->sk_xprt, sin, slen);  	if (sock_is_loopback(newsock->sk))  | 
