Loading include/trace/events/sunrpc.h +61 −0 Original line number Original line Diff line number Diff line Loading @@ -473,6 +473,39 @@ TRACE_EVENT(svc_recv, show_rqstp_flags(__entry->flags)) show_rqstp_flags(__entry->flags)) ); ); DECLARE_EVENT_CLASS(svc_rqst_event, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst), TP_STRUCT__entry( __field(__be32, xid) __field(unsigned long, flags) __dynamic_array(unsigned char, addr, rqst->rq_addrlen) ), TP_fast_assign( __entry->xid = rqst->rq_xid; __entry->flags = rqst->rq_flags; memcpy(__get_dynamic_array(addr), &rqst->rq_addr, rqst->rq_addrlen); ), TP_printk("addr=%pIScp rq_xid=0x%x flags=%s", (struct sockaddr *)__get_dynamic_array(addr), be32_to_cpu(__entry->xid), show_rqstp_flags(__entry->flags)) ); DEFINE_EVENT(svc_rqst_event, svc_defer, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst)); DEFINE_EVENT(svc_rqst_event, svc_drop, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst)); DECLARE_EVENT_CLASS(svc_rqst_status, DECLARE_EVENT_CLASS(svc_rqst_status, TP_PROTO(struct svc_rqst *rqst, int status), TP_PROTO(struct svc_rqst *rqst, int status), Loading Loading @@ -636,6 +669,34 @@ TRACE_EVENT(svc_handle_xprt, (struct sockaddr *)__get_dynamic_array(addr) : NULL, (struct sockaddr *)__get_dynamic_array(addr) : NULL, __entry->len, show_svc_xprt_flags(__entry->flags)) __entry->len, show_svc_xprt_flags(__entry->flags)) ); ); DECLARE_EVENT_CLASS(svc_deferred_event, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr), TP_STRUCT__entry( __field(__be32, xid) __dynamic_array(unsigned char, addr, dr->addrlen) ), TP_fast_assign( __entry->xid = *(__be32 *)(dr->args + (dr->xprt_hlen>>2)); memcpy(__get_dynamic_array(addr), &dr->addr, dr->addrlen); ), TP_printk("addr=%pIScp xid=0x%x", (struct sockaddr *)__get_dynamic_array(addr), be32_to_cpu(__entry->xid)) ); DEFINE_EVENT(svc_deferred_event, svc_drop_deferred, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr)); DEFINE_EVENT(svc_deferred_event, svc_revisit_deferred, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr)); #endif /* _TRACE_SUNRPC_H */ #endif /* _TRACE_SUNRPC_H */ #include <trace/define_trace.h> #include <trace/define_trace.h> net/sunrpc/svc_xprt.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -875,6 +875,7 @@ EXPORT_SYMBOL_GPL(svc_recv); */ */ void svc_drop(struct svc_rqst *rqstp) void svc_drop(struct svc_rqst *rqstp) { { trace_svc_drop(rqstp); dprintk("svc: xprt %p dropped request\n", rqstp->rq_xprt); dprintk("svc: xprt %p dropped request\n", rqstp->rq_xprt); svc_xprt_release(rqstp); svc_xprt_release(rqstp); } } Loading Loading @@ -1152,6 +1153,7 @@ static void svc_revisit(struct cache_deferred_req *dreq, int too_many) spin_unlock(&xprt->xpt_lock); spin_unlock(&xprt->xpt_lock); dprintk("revisit canceled\n"); dprintk("revisit canceled\n"); svc_xprt_put(xprt); svc_xprt_put(xprt); trace_svc_drop_deferred(dr); kfree(dr); kfree(dr); return; return; } } Loading Loading @@ -1209,6 +1211,7 @@ static struct cache_deferred_req *svc_defer(struct cache_req *req) set_bit(RQ_DROPME, &rqstp->rq_flags); set_bit(RQ_DROPME, &rqstp->rq_flags); dr->handle.revisit = svc_revisit; dr->handle.revisit = svc_revisit; trace_svc_defer(rqstp); return &dr->handle; return &dr->handle; } } Loading Loading @@ -1249,6 +1252,7 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt) struct svc_deferred_req, struct svc_deferred_req, handle.recent); handle.recent); list_del_init(&dr->handle.recent); list_del_init(&dr->handle.recent); trace_svc_revisit_deferred(dr); } else } else clear_bit(XPT_DEFERRED, &xprt->xpt_flags); clear_bit(XPT_DEFERRED, &xprt->xpt_flags); spin_unlock(&xprt->xpt_lock); spin_unlock(&xprt->xpt_lock); Loading Loading
include/trace/events/sunrpc.h +61 −0 Original line number Original line Diff line number Diff line Loading @@ -473,6 +473,39 @@ TRACE_EVENT(svc_recv, show_rqstp_flags(__entry->flags)) show_rqstp_flags(__entry->flags)) ); ); DECLARE_EVENT_CLASS(svc_rqst_event, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst), TP_STRUCT__entry( __field(__be32, xid) __field(unsigned long, flags) __dynamic_array(unsigned char, addr, rqst->rq_addrlen) ), TP_fast_assign( __entry->xid = rqst->rq_xid; __entry->flags = rqst->rq_flags; memcpy(__get_dynamic_array(addr), &rqst->rq_addr, rqst->rq_addrlen); ), TP_printk("addr=%pIScp rq_xid=0x%x flags=%s", (struct sockaddr *)__get_dynamic_array(addr), be32_to_cpu(__entry->xid), show_rqstp_flags(__entry->flags)) ); DEFINE_EVENT(svc_rqst_event, svc_defer, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst)); DEFINE_EVENT(svc_rqst_event, svc_drop, TP_PROTO(struct svc_rqst *rqst), TP_ARGS(rqst)); DECLARE_EVENT_CLASS(svc_rqst_status, DECLARE_EVENT_CLASS(svc_rqst_status, TP_PROTO(struct svc_rqst *rqst, int status), TP_PROTO(struct svc_rqst *rqst, int status), Loading Loading @@ -636,6 +669,34 @@ TRACE_EVENT(svc_handle_xprt, (struct sockaddr *)__get_dynamic_array(addr) : NULL, (struct sockaddr *)__get_dynamic_array(addr) : NULL, __entry->len, show_svc_xprt_flags(__entry->flags)) __entry->len, show_svc_xprt_flags(__entry->flags)) ); ); DECLARE_EVENT_CLASS(svc_deferred_event, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr), TP_STRUCT__entry( __field(__be32, xid) __dynamic_array(unsigned char, addr, dr->addrlen) ), TP_fast_assign( __entry->xid = *(__be32 *)(dr->args + (dr->xprt_hlen>>2)); memcpy(__get_dynamic_array(addr), &dr->addr, dr->addrlen); ), TP_printk("addr=%pIScp xid=0x%x", (struct sockaddr *)__get_dynamic_array(addr), be32_to_cpu(__entry->xid)) ); DEFINE_EVENT(svc_deferred_event, svc_drop_deferred, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr)); DEFINE_EVENT(svc_deferred_event, svc_revisit_deferred, TP_PROTO(struct svc_deferred_req *dr), TP_ARGS(dr)); #endif /* _TRACE_SUNRPC_H */ #endif /* _TRACE_SUNRPC_H */ #include <trace/define_trace.h> #include <trace/define_trace.h>
net/sunrpc/svc_xprt.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -875,6 +875,7 @@ EXPORT_SYMBOL_GPL(svc_recv); */ */ void svc_drop(struct svc_rqst *rqstp) void svc_drop(struct svc_rqst *rqstp) { { trace_svc_drop(rqstp); dprintk("svc: xprt %p dropped request\n", rqstp->rq_xprt); dprintk("svc: xprt %p dropped request\n", rqstp->rq_xprt); svc_xprt_release(rqstp); svc_xprt_release(rqstp); } } Loading Loading @@ -1152,6 +1153,7 @@ static void svc_revisit(struct cache_deferred_req *dreq, int too_many) spin_unlock(&xprt->xpt_lock); spin_unlock(&xprt->xpt_lock); dprintk("revisit canceled\n"); dprintk("revisit canceled\n"); svc_xprt_put(xprt); svc_xprt_put(xprt); trace_svc_drop_deferred(dr); kfree(dr); kfree(dr); return; return; } } Loading Loading @@ -1209,6 +1211,7 @@ static struct cache_deferred_req *svc_defer(struct cache_req *req) set_bit(RQ_DROPME, &rqstp->rq_flags); set_bit(RQ_DROPME, &rqstp->rq_flags); dr->handle.revisit = svc_revisit; dr->handle.revisit = svc_revisit; trace_svc_defer(rqstp); return &dr->handle; return &dr->handle; } } Loading Loading @@ -1249,6 +1252,7 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_xprt *xprt) struct svc_deferred_req, struct svc_deferred_req, handle.recent); handle.recent); list_del_init(&dr->handle.recent); list_del_init(&dr->handle.recent); trace_svc_revisit_deferred(dr); } else } else clear_bit(XPT_DEFERRED, &xprt->xpt_flags); clear_bit(XPT_DEFERRED, &xprt->xpt_flags); spin_unlock(&xprt->xpt_lock); spin_unlock(&xprt->xpt_lock); Loading