Christoph Hellwig | 31ef83d | 2014-08-16 19:02:22 -0500 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2014 Christoph Hellwig. |
| 3 | */ |
| 4 | #undef TRACE_SYSTEM |
| 5 | #define TRACE_SYSTEM nfsd |
| 6 | |
| 7 | #if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) |
| 8 | #define _NFSD_TRACE_H |
| 9 | |
| 10 | #include <linux/tracepoint.h> |
Jeff Layton | 6e8b50d | 2015-11-17 06:52:23 -0500 | [diff] [blame] | 11 | #include "nfsfh.h" |
| 12 | |
| 13 | DECLARE_EVENT_CLASS(nfsd_io_class, |
| 14 | TP_PROTO(struct svc_rqst *rqstp, |
| 15 | struct svc_fh *fhp, |
| 16 | loff_t offset, |
| 17 | int len), |
| 18 | TP_ARGS(rqstp, fhp, offset, len), |
| 19 | TP_STRUCT__entry( |
| 20 | __field(__be32, xid) |
| 21 | __field_struct(struct knfsd_fh, fh) |
| 22 | __field(loff_t, offset) |
| 23 | __field(int, len) |
| 24 | ), |
| 25 | TP_fast_assign( |
| 26 | __entry->xid = rqstp->rq_xid, |
| 27 | fh_copy_shallow(&__entry->fh, &fhp->fh_handle); |
| 28 | __entry->offset = offset; |
| 29 | __entry->len = len; |
| 30 | ), |
| 31 | TP_printk("xid=0x%x fh=0x%x offset=%lld len=%d", |
| 32 | __be32_to_cpu(__entry->xid), knfsd_fh_hash(&__entry->fh), |
| 33 | __entry->offset, __entry->len) |
| 34 | ) |
| 35 | |
| 36 | #define DEFINE_NFSD_IO_EVENT(name) \ |
| 37 | DEFINE_EVENT(nfsd_io_class, name, \ |
| 38 | TP_PROTO(struct svc_rqst *rqstp, \ |
| 39 | struct svc_fh *fhp, \ |
| 40 | loff_t offset, \ |
| 41 | int len), \ |
| 42 | TP_ARGS(rqstp, fhp, offset, len)) |
| 43 | |
| 44 | DEFINE_NFSD_IO_EVENT(read_start); |
| 45 | DEFINE_NFSD_IO_EVENT(read_opened); |
| 46 | DEFINE_NFSD_IO_EVENT(read_io_done); |
| 47 | DEFINE_NFSD_IO_EVENT(read_done); |
| 48 | DEFINE_NFSD_IO_EVENT(write_start); |
| 49 | DEFINE_NFSD_IO_EVENT(write_opened); |
| 50 | DEFINE_NFSD_IO_EVENT(write_io_done); |
| 51 | DEFINE_NFSD_IO_EVENT(write_done); |
Christoph Hellwig | 31ef83d | 2014-08-16 19:02:22 -0500 | [diff] [blame] | 52 | |
Jeff Layton | 825213e | 2015-10-03 08:19:57 -0400 | [diff] [blame] | 53 | #include "state.h" |
| 54 | |
Christoph Hellwig | 31ef83d | 2014-08-16 19:02:22 -0500 | [diff] [blame] | 55 | DECLARE_EVENT_CLASS(nfsd_stateid_class, |
| 56 | TP_PROTO(stateid_t *stp), |
| 57 | TP_ARGS(stp), |
| 58 | TP_STRUCT__entry( |
| 59 | __field(u32, cl_boot) |
| 60 | __field(u32, cl_id) |
| 61 | __field(u32, si_id) |
| 62 | __field(u32, si_generation) |
| 63 | ), |
| 64 | TP_fast_assign( |
| 65 | __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; |
| 66 | __entry->cl_id = stp->si_opaque.so_clid.cl_id; |
| 67 | __entry->si_id = stp->si_opaque.so_id; |
| 68 | __entry->si_generation = stp->si_generation; |
| 69 | ), |
| 70 | TP_printk("client %08x:%08x stateid %08x:%08x", |
| 71 | __entry->cl_boot, |
| 72 | __entry->cl_id, |
| 73 | __entry->si_id, |
| 74 | __entry->si_generation) |
| 75 | ) |
| 76 | |
| 77 | #define DEFINE_STATEID_EVENT(name) \ |
| 78 | DEFINE_EVENT(nfsd_stateid_class, name, \ |
| 79 | TP_PROTO(stateid_t *stp), \ |
| 80 | TP_ARGS(stp)) |
| 81 | DEFINE_STATEID_EVENT(layoutstate_alloc); |
| 82 | DEFINE_STATEID_EVENT(layoutstate_unhash); |
| 83 | DEFINE_STATEID_EVENT(layoutstate_free); |
| 84 | DEFINE_STATEID_EVENT(layout_get_lookup_fail); |
| 85 | DEFINE_STATEID_EVENT(layout_commit_lookup_fail); |
| 86 | DEFINE_STATEID_EVENT(layout_return_lookup_fail); |
| 87 | DEFINE_STATEID_EVENT(layout_recall); |
| 88 | DEFINE_STATEID_EVENT(layout_recall_done); |
| 89 | DEFINE_STATEID_EVENT(layout_recall_fail); |
| 90 | DEFINE_STATEID_EVENT(layout_recall_release); |
| 91 | |
| 92 | #endif /* _NFSD_TRACE_H */ |
| 93 | |
| 94 | #undef TRACE_INCLUDE_PATH |
| 95 | #define TRACE_INCLUDE_PATH . |
| 96 | #define TRACE_INCLUDE_FILE trace |
| 97 | #include <trace/define_trace.h> |