diff options
| author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-06-24 10:55:46 -0400 |
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2016-07-13 15:53:43 -0400 |
| commit | 104f6351f7dc0036575b4e47765d6d39c757c066 (patch) | |
| tree | e919bf3518ae0370aa0c6736556fc49b7abbd5ac /include/trace | |
| parent | 82ea2d7615309d755579d609ad9c11daea25d0cc (diff) | |
SUNRPC: Add tracepoints for dropped and deferred requests
Dropping and/or deferring requests has an impact on performance. Let's
make sure we can trace those events.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/events/sunrpc.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index b014207a95a8..8a707f8a41c3 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h | |||
| @@ -473,6 +473,39 @@ TRACE_EVENT(svc_recv, | |||
| 473 | show_rqstp_flags(__entry->flags)) | 473 | show_rqstp_flags(__entry->flags)) |
| 474 | ); | 474 | ); |
| 475 | 475 | ||
| 476 | DECLARE_EVENT_CLASS(svc_rqst_event, | ||
| 477 | |||
| 478 | TP_PROTO(struct svc_rqst *rqst), | ||
| 479 | |||
| 480 | TP_ARGS(rqst), | ||
| 481 | |||
| 482 | TP_STRUCT__entry( | ||
| 483 | __field(__be32, xid) | ||
| 484 | __field(unsigned long, flags) | ||
| 485 | __dynamic_array(unsigned char, addr, rqst->rq_addrlen) | ||
| 486 | ), | ||
| 487 | |||
| 488 | TP_fast_assign( | ||
| 489 | __entry->xid = rqst->rq_xid; | ||
| 490 | __entry->flags = rqst->rq_flags; | ||
| 491 | memcpy(__get_dynamic_array(addr), | ||
| 492 | &rqst->rq_addr, rqst->rq_addrlen); | ||
| 493 | ), | ||
| 494 | |||
| 495 | TP_printk("addr=%pIScp rq_xid=0x%x flags=%s", | ||
| 496 | (struct sockaddr *)__get_dynamic_array(addr), | ||
| 497 | be32_to_cpu(__entry->xid), | ||
| 498 | show_rqstp_flags(__entry->flags)) | ||
| 499 | ); | ||
| 500 | |||
| 501 | DEFINE_EVENT(svc_rqst_event, svc_defer, | ||
| 502 | TP_PROTO(struct svc_rqst *rqst), | ||
| 503 | TP_ARGS(rqst)); | ||
| 504 | |||
| 505 | DEFINE_EVENT(svc_rqst_event, svc_drop, | ||
| 506 | TP_PROTO(struct svc_rqst *rqst), | ||
| 507 | TP_ARGS(rqst)); | ||
| 508 | |||
| 476 | DECLARE_EVENT_CLASS(svc_rqst_status, | 509 | DECLARE_EVENT_CLASS(svc_rqst_status, |
| 477 | 510 | ||
| 478 | TP_PROTO(struct svc_rqst *rqst, int status), | 511 | TP_PROTO(struct svc_rqst *rqst, int status), |
| @@ -636,6 +669,34 @@ TRACE_EVENT(svc_handle_xprt, | |||
| 636 | (struct sockaddr *)__get_dynamic_array(addr) : NULL, | 669 | (struct sockaddr *)__get_dynamic_array(addr) : NULL, |
| 637 | __entry->len, show_svc_xprt_flags(__entry->flags)) | 670 | __entry->len, show_svc_xprt_flags(__entry->flags)) |
| 638 | ); | 671 | ); |
| 672 | |||
| 673 | |||
| 674 | DECLARE_EVENT_CLASS(svc_deferred_event, | ||
| 675 | TP_PROTO(struct svc_deferred_req *dr), | ||
| 676 | |||
| 677 | TP_ARGS(dr), | ||
| 678 | |||
| 679 | TP_STRUCT__entry( | ||
| 680 | __field(__be32, xid) | ||
| 681 | __dynamic_array(unsigned char, addr, dr->addrlen) | ||
| 682 | ), | ||
| 683 | |||
| 684 | TP_fast_assign( | ||
| 685 | __entry->xid = *(__be32 *)(dr->args + (dr->xprt_hlen>>2)); | ||
| 686 | memcpy(__get_dynamic_array(addr), &dr->addr, dr->addrlen); | ||
| 687 | ), | ||
| 688 | |||
| 689 | TP_printk("addr=%pIScp xid=0x%x", | ||
| 690 | (struct sockaddr *)__get_dynamic_array(addr), | ||
| 691 | be32_to_cpu(__entry->xid)) | ||
| 692 | ); | ||
| 693 | |||
| 694 | DEFINE_EVENT(svc_deferred_event, svc_drop_deferred, | ||
| 695 | TP_PROTO(struct svc_deferred_req *dr), | ||
| 696 | TP_ARGS(dr)); | ||
| 697 | DEFINE_EVENT(svc_deferred_event, svc_revisit_deferred, | ||
| 698 | TP_PROTO(struct svc_deferred_req *dr), | ||
| 699 | TP_ARGS(dr)); | ||
| 639 | #endif /* _TRACE_SUNRPC_H */ | 700 | #endif /* _TRACE_SUNRPC_H */ |
| 640 | 701 | ||
| 641 | #include <trace/define_trace.h> | 702 | #include <trace/define_trace.h> |
