sunrpc: add some tracepoints in svc_rqst handling functions
[deliverable/linux.git] / include / trace / events / sunrpc.h
index 1fef3e6e943632e6b2e1619c6536bc328a81eb8f..6260f5134212312b2252e471ff4520f5c726b754 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <linux/sunrpc/sched.h>
 #include <linux/sunrpc/clnt.h>
+#include <linux/sunrpc/svc.h>
 #include <net/tcp_states.h>
 #include <linux/net.h>
 #include <linux/tracepoint.h>
@@ -306,6 +307,60 @@ DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_reset_connection);
 DEFINE_RPC_SOCKET_EVENT(rpc_socket_close);
 DEFINE_RPC_SOCKET_EVENT(rpc_socket_shutdown);
 
+TRACE_EVENT(svc_recv,
+       TP_PROTO(struct svc_rqst *rqst, int status),
+
+       TP_ARGS(rqst, status),
+
+       TP_STRUCT__entry(
+               __field(struct sockaddr *, addr)
+               __field(__be32, xid)
+               __field(int, status)
+       ),
+
+       TP_fast_assign(
+               __entry->addr = (struct sockaddr *)&rqst->rq_addr;
+               __entry->xid = status > 0 ? rqst->rq_xid : 0;
+               __entry->status = status;
+       ),
+
+       TP_printk("addr=%pIScp xid=0x%x status=%d", __entry->addr,
+                       be32_to_cpu(__entry->xid), __entry->status)
+);
+
+DECLARE_EVENT_CLASS(svc_rqst_status,
+
+       TP_PROTO(struct svc_rqst *rqst, int status),
+
+       TP_ARGS(rqst, status),
+
+       TP_STRUCT__entry(
+               __field(struct sockaddr *, addr)
+               __field(__be32, xid)
+               __field(int, dropme)
+               __field(int, status)
+       ),
+
+       TP_fast_assign(
+               __entry->addr = (struct sockaddr *)&rqst->rq_addr;
+               __entry->xid = rqst->rq_xid;
+               __entry->dropme = (int)rqst->rq_dropme;
+               __entry->status = status;
+       ),
+
+       TP_printk("addr=%pIScp rq_xid=0x%x dropme=%d status=%d",
+               __entry->addr, be32_to_cpu(__entry->xid), __entry->dropme,
+               __entry->status)
+);
+
+DEFINE_EVENT(svc_rqst_status, svc_process,
+       TP_PROTO(struct svc_rqst *rqst, int status),
+       TP_ARGS(rqst, status));
+
+DEFINE_EVENT(svc_rqst_status, svc_send,
+       TP_PROTO(struct svc_rqst *rqst, int status),
+       TP_ARGS(rqst, status));
+
 #endif /* _TRACE_SUNRPC_H */
 
 #include <trace/define_trace.h>
This page took 0.027623 seconds and 5 git commands to generate.