[PATCH v1 09/14] SUNRPC: Report RPC messages with unknown programs via a tracepoint

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Replace a dprintk call site. The new tracepoint can be left enabled
persistently to capture problems.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---
 include/trace/events/sunrpc.h |   23 +++++++++++++++++++++++
 net/sunrpc/svc.c              |    2 +-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h
index 3cfdd0ef6600..db581a837f1b 100644
--- a/include/trace/events/sunrpc.h
+++ b/include/trace/events/sunrpc.h
@@ -1665,6 +1665,29 @@ TRACE_EVENT(svc_decode_len_err,
 	TP_printk("addr=%s len=%zu", __get_str(addr), __entry->len)
 );
 
+TRACE_EVENT(svc_decode_prog_unavail_err,
+	TP_PROTO(
+		const struct svc_rqst *rqst,
+		u32 program
+	),
+
+	TP_ARGS(rqst, program),
+
+	TP_STRUCT__entry(
+		__field(u32, program)
+		__string(addr, rqst->rq_xprt ?
+			 rqst->rq_xprt->xpt_remotebuf : "(null)")
+	),
+
+	TP_fast_assign(
+		__entry->program = program;
+		__assign_str(addr, rqst->rq_xprt ?
+			     rqst->rq_xprt->xpt_remotebuf : "(null)");
+	),
+
+	TP_printk("addr=%s program=%u", __get_str(addr), __entry->program)
+);
+
 DECLARE_EVENT_CLASS(svc_rqst_event,
 
 	TP_PROTO(
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 3d95faffe43b..a057d1373579 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -1400,7 +1400,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
 	goto sendit;
 
 err_bad_prog:
-	dprintk("svc: unknown program %d\n", prog);
+	trace_svc_decode_prog_unavail_err(rqstp, prog);
 	serv->sv_stats->rpcbadfmt++;
 	svc_putnl(resv, RPC_PROG_UNAVAIL);
 	goto sendit;




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux