1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM nbd
4 
5 #if !defined(_TRACE_NBD_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_NBD_H
7 
8 #include <linux/tracepoint.h>
9 
10 DECLARE_EVENT_CLASS(nbd_transport_event,
11 
12 	TP_PROTO(struct request *req, u64 handle),
13 
14 	TP_ARGS(req, handle),
15 
16 	TP_STRUCT__entry(
17 		__field(struct request *, req)
18 		__field(u64, handle)
19 	),
20 
21 	TP_fast_assign(
22 		__entry->req = req;
23 		__entry->handle = handle;
24 	),
25 
26 	TP_printk(
27 		"nbd transport event: request %p, handle 0x%016llx",
28 		__entry->req,
29 		__entry->handle
30 	)
31 );
32 
33 DEFINE_EVENT(nbd_transport_event, nbd_header_sent,
34 
35 	TP_PROTO(struct request *req, u64 handle),
36 
37 	TP_ARGS(req, handle)
38 );
39 
40 DEFINE_EVENT(nbd_transport_event, nbd_payload_sent,
41 
42 	TP_PROTO(struct request *req, u64 handle),
43 
44 	TP_ARGS(req, handle)
45 );
46 
47 DEFINE_EVENT(nbd_transport_event, nbd_header_received,
48 
49 	TP_PROTO(struct request *req, u64 handle),
50 
51 	TP_ARGS(req, handle)
52 );
53 
54 DEFINE_EVENT(nbd_transport_event, nbd_payload_received,
55 
56 	TP_PROTO(struct request *req, u64 handle),
57 
58 	TP_ARGS(req, handle)
59 );
60 
61 DECLARE_EVENT_CLASS(nbd_send_request,
62 
63 	TP_PROTO(struct nbd_request *nbd_request, int index,
64 		 struct request *rq),
65 
66 	TP_ARGS(nbd_request, index, rq),
67 
68 	TP_STRUCT__entry(
69 		__field(struct nbd_request *, nbd_request)
70 		__field(u64, dev_index)
71 		__field(struct request *, request)
72 	),
73 
74 	TP_fast_assign(
75 		__entry->nbd_request = 0;
76 		__entry->dev_index = index;
77 		__entry->request = rq;
78 	),
79 
80 	TP_printk("nbd%lld: request %p", __entry->dev_index, __entry->request)
81 );
82 
83 #ifdef DEFINE_EVENT_WRITABLE
84 #undef NBD_DEFINE_EVENT
85 #define NBD_DEFINE_EVENT(template, call, proto, args, size)		\
86 	DEFINE_EVENT_WRITABLE(template, call, PARAMS(proto),		\
87 			      PARAMS(args), size)
88 #else
89 #undef NBD_DEFINE_EVENT
90 #define NBD_DEFINE_EVENT(template, call, proto, args, size)		\
91 	DEFINE_EVENT(template, call, PARAMS(proto), PARAMS(args))
92 #endif
93 
94 NBD_DEFINE_EVENT(nbd_send_request, nbd_send_request,
95 
96 	TP_PROTO(struct nbd_request *nbd_request, int index,
97 		 struct request *rq),
98 
99 	TP_ARGS(nbd_request, index, rq),
100 
101 	sizeof(struct nbd_request)
102 );
103 
104 #endif
105 
106 /* This part must be outside protection */
107 #include <trace/define_trace.h>
108