xref: /openbmc/linux/include/trace/events/dlm.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1f1d3b8f9SAlexander Aring /* SPDX-License-Identifier: GPL-2.0 */
2f1d3b8f9SAlexander Aring #undef TRACE_SYSTEM
3f1d3b8f9SAlexander Aring #define TRACE_SYSTEM dlm
4f1d3b8f9SAlexander Aring 
5f1d3b8f9SAlexander Aring #if !defined(_TRACE_DLM_H) || defined(TRACE_HEADER_MULTI_READ)
6f1d3b8f9SAlexander Aring #define _TRACE_DLM_H
7f1d3b8f9SAlexander Aring 
8f1d3b8f9SAlexander Aring #include <linux/dlm.h>
9f1d3b8f9SAlexander Aring #include <linux/dlmconstants.h>
10*8c95006dSAlexander Aring #include <uapi/linux/dlm_plock.h>
11f1d3b8f9SAlexander Aring #include <linux/tracepoint.h>
12f1d3b8f9SAlexander Aring 
13f1d3b8f9SAlexander Aring #include "../../../fs/dlm/dlm_internal.h"
14f1d3b8f9SAlexander Aring 
15f1d3b8f9SAlexander Aring #define show_lock_flags(flags) __print_flags(flags, "|",	\
16f1d3b8f9SAlexander Aring 	{ DLM_LKF_NOQUEUE,	"NOQUEUE" },			\
17f1d3b8f9SAlexander Aring 	{ DLM_LKF_CANCEL,	"CANCEL" },			\
18f1d3b8f9SAlexander Aring 	{ DLM_LKF_CONVERT,	"CONVERT" },			\
19f1d3b8f9SAlexander Aring 	{ DLM_LKF_VALBLK,	"VALBLK" },			\
20f1d3b8f9SAlexander Aring 	{ DLM_LKF_QUECVT,	"QUECVT" },			\
21f1d3b8f9SAlexander Aring 	{ DLM_LKF_IVVALBLK,	"IVVALBLK" },			\
22f1d3b8f9SAlexander Aring 	{ DLM_LKF_CONVDEADLK,	"CONVDEADLK" },			\
23f1d3b8f9SAlexander Aring 	{ DLM_LKF_PERSISTENT,	"PERSISTENT" },			\
24f1d3b8f9SAlexander Aring 	{ DLM_LKF_NODLCKWT,	"NODLCKWT" },			\
25f1d3b8f9SAlexander Aring 	{ DLM_LKF_NODLCKBLK,	"NODLCKBLK" },			\
26f1d3b8f9SAlexander Aring 	{ DLM_LKF_EXPEDITE,	"EXPEDITE" },			\
27f1d3b8f9SAlexander Aring 	{ DLM_LKF_NOQUEUEBAST,	"NOQUEUEBAST" },		\
28f1d3b8f9SAlexander Aring 	{ DLM_LKF_HEADQUE,	"HEADQUE" },			\
29f1d3b8f9SAlexander Aring 	{ DLM_LKF_NOORDER,	"NOORDER" },			\
30f1d3b8f9SAlexander Aring 	{ DLM_LKF_ORPHAN,	"ORPHAN" },			\
31f1d3b8f9SAlexander Aring 	{ DLM_LKF_ALTPR,	"ALTPR" },			\
32f1d3b8f9SAlexander Aring 	{ DLM_LKF_ALTCW,	"ALTCW" },			\
33f1d3b8f9SAlexander Aring 	{ DLM_LKF_FORCEUNLOCK,	"FORCEUNLOCK" },		\
34f1d3b8f9SAlexander Aring 	{ DLM_LKF_TIMEOUT,	"TIMEOUT" })
35f1d3b8f9SAlexander Aring 
36f1d3b8f9SAlexander Aring #define show_lock_mode(mode) __print_symbolic(mode,		\
37f1d3b8f9SAlexander Aring 	{ DLM_LOCK_IV,		"IV"},				\
38f1d3b8f9SAlexander Aring 	{ DLM_LOCK_NL,		"NL"},				\
39f1d3b8f9SAlexander Aring 	{ DLM_LOCK_CR,		"CR"},				\
40f1d3b8f9SAlexander Aring 	{ DLM_LOCK_CW,		"CW"},				\
41f1d3b8f9SAlexander Aring 	{ DLM_LOCK_PR,		"PR"},				\
42f1d3b8f9SAlexander Aring 	{ DLM_LOCK_PW,		"PW"},				\
43f1d3b8f9SAlexander Aring 	{ DLM_LOCK_EX,		"EX"})
44f1d3b8f9SAlexander Aring 
45f1d3b8f9SAlexander Aring #define show_dlm_sb_flags(flags) __print_flags(flags, "|",	\
46f1d3b8f9SAlexander Aring 	{ DLM_SBF_DEMOTED,	"DEMOTED" },			\
47f1d3b8f9SAlexander Aring 	{ DLM_SBF_VALNOTVALID,	"VALNOTVALID" },		\
48f1d3b8f9SAlexander Aring 	{ DLM_SBF_ALTMODE,	"ALTMODE" })
49f1d3b8f9SAlexander Aring 
50e01c4b7bSAlexander Aring #define show_lkb_flags(flags) __print_flags(flags, "|",		\
518a39dcd9SAlexander Aring 	{ BIT(DLM_DFL_USER_BIT), "USER" },			\
528a39dcd9SAlexander Aring 	{ BIT(DLM_DFL_ORPHAN_BIT), "ORPHAN" })
53e01c4b7bSAlexander Aring 
54e01c4b7bSAlexander Aring #define show_header_cmd(cmd) __print_symbolic(cmd,		\
55e01c4b7bSAlexander Aring 	{ DLM_MSG,		"MSG"},				\
56e01c4b7bSAlexander Aring 	{ DLM_RCOM,		"RCOM"},			\
57e01c4b7bSAlexander Aring 	{ DLM_OPTS,		"OPTS"},			\
58e01c4b7bSAlexander Aring 	{ DLM_ACK,		"ACK"},				\
59e01c4b7bSAlexander Aring 	{ DLM_FIN,		"FIN"})
60e01c4b7bSAlexander Aring 
61e01c4b7bSAlexander Aring #define show_message_version(version) __print_symbolic(version,	\
62e01c4b7bSAlexander Aring 	{ DLM_VERSION_3_1,	"3.1"},				\
63e01c4b7bSAlexander Aring 	{ DLM_VERSION_3_2,	"3.2"})
64e01c4b7bSAlexander Aring 
65e01c4b7bSAlexander Aring #define show_message_type(type) __print_symbolic(type,		\
66e01c4b7bSAlexander Aring 	{ DLM_MSG_REQUEST,	"REQUEST"},			\
67e01c4b7bSAlexander Aring 	{ DLM_MSG_CONVERT,	"CONVERT"},			\
68e01c4b7bSAlexander Aring 	{ DLM_MSG_UNLOCK,	"UNLOCK"},			\
69e01c4b7bSAlexander Aring 	{ DLM_MSG_CANCEL,	"CANCEL"},			\
70e01c4b7bSAlexander Aring 	{ DLM_MSG_REQUEST_REPLY, "REQUEST_REPLY"},		\
71e01c4b7bSAlexander Aring 	{ DLM_MSG_CONVERT_REPLY, "CONVERT_REPLY"},		\
72e01c4b7bSAlexander Aring 	{ DLM_MSG_UNLOCK_REPLY,	"UNLOCK_REPLY"},		\
73e01c4b7bSAlexander Aring 	{ DLM_MSG_CANCEL_REPLY,	"CANCEL_REPLY"},		\
74e01c4b7bSAlexander Aring 	{ DLM_MSG_GRANT,	"GRANT"},			\
75e01c4b7bSAlexander Aring 	{ DLM_MSG_BAST,		"BAST"},			\
76e01c4b7bSAlexander Aring 	{ DLM_MSG_LOOKUP,	"LOOKUP"},			\
77e01c4b7bSAlexander Aring 	{ DLM_MSG_REMOVE,	"REMOVE"},			\
78e01c4b7bSAlexander Aring 	{ DLM_MSG_LOOKUP_REPLY,	"LOOKUP_REPLY"},		\
79e01c4b7bSAlexander Aring 	{ DLM_MSG_PURGE,	"PURGE"})
80e01c4b7bSAlexander Aring 
81e01c4b7bSAlexander Aring #define show_rcom_type(type) __print_symbolic(type,            \
82e01c4b7bSAlexander Aring 	{ DLM_RCOM_STATUS,              "STATUS"},              \
83e01c4b7bSAlexander Aring 	{ DLM_RCOM_NAMES,               "NAMES"},               \
84e01c4b7bSAlexander Aring 	{ DLM_RCOM_LOOKUP,              "LOOKUP"},              \
85e01c4b7bSAlexander Aring 	{ DLM_RCOM_LOCK,                "LOCK"},                \
86e01c4b7bSAlexander Aring 	{ DLM_RCOM_STATUS_REPLY,        "STATUS_REPLY"},        \
87e01c4b7bSAlexander Aring 	{ DLM_RCOM_NAMES_REPLY,         "NAMES_REPLY"},         \
88e01c4b7bSAlexander Aring 	{ DLM_RCOM_LOOKUP_REPLY,        "LOOKUP_REPLY"},        \
89e01c4b7bSAlexander Aring 	{ DLM_RCOM_LOCK_REPLY,          "LOCK_REPLY"})
90e01c4b7bSAlexander Aring 
91e01c4b7bSAlexander Aring 
92f1d3b8f9SAlexander Aring /* note: we begin tracing dlm_lock_start() only if ls and lkb are found */
93f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_lock_start,
94f1d3b8f9SAlexander Aring 
9556171e0dSAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, const void *name,
965d92a30eSAlexander Aring 		 unsigned int namelen, int mode, __u32 flags),
97f1d3b8f9SAlexander Aring 
985d92a30eSAlexander Aring 	TP_ARGS(ls, lkb, name, namelen, mode, flags),
99f1d3b8f9SAlexander Aring 
100f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
101f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
102f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
103f1d3b8f9SAlexander Aring 		__field(int, mode)
104f1d3b8f9SAlexander Aring 		__field(__u32, flags)
1055d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
1065d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : namelen)
107f1d3b8f9SAlexander Aring 	),
108f1d3b8f9SAlexander Aring 
109f1d3b8f9SAlexander Aring 	TP_fast_assign(
1105d92a30eSAlexander Aring 		struct dlm_rsb *r;
1115d92a30eSAlexander Aring 
112f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
113f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
114f1d3b8f9SAlexander Aring 		__entry->mode = mode;
115f1d3b8f9SAlexander Aring 		__entry->flags = flags;
1165d92a30eSAlexander Aring 
1175d92a30eSAlexander Aring 		r = lkb->lkb_resource;
1185d92a30eSAlexander Aring 		if (r)
1195d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
1205d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
1215d92a30eSAlexander Aring 		else if (name)
1225d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), name,
1235d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
124f1d3b8f9SAlexander Aring 	),
125f1d3b8f9SAlexander Aring 
1265d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x mode=%s flags=%s res_name=%s",
127f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
128f1d3b8f9SAlexander Aring 		  show_lock_mode(__entry->mode),
1295d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags),
1305d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
1315d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
132f1d3b8f9SAlexander Aring 
133f1d3b8f9SAlexander Aring );
134f1d3b8f9SAlexander Aring 
135f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_lock_end,
136f1d3b8f9SAlexander Aring 
13756171e0dSAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, const void *name,
1387a3de732SAlexander Aring 		 unsigned int namelen, int mode, __u32 flags, int error,
1397a3de732SAlexander Aring 		 bool kernel_lock),
140f1d3b8f9SAlexander Aring 
1417a3de732SAlexander Aring 	TP_ARGS(ls, lkb, name, namelen, mode, flags, error, kernel_lock),
142f1d3b8f9SAlexander Aring 
143f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
144f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
145f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
146f1d3b8f9SAlexander Aring 		__field(int, mode)
147f1d3b8f9SAlexander Aring 		__field(__u32, flags)
148f1d3b8f9SAlexander Aring 		__field(int, error)
1495d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
1505d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : namelen)
151f1d3b8f9SAlexander Aring 	),
152f1d3b8f9SAlexander Aring 
153f1d3b8f9SAlexander Aring 	TP_fast_assign(
1545d92a30eSAlexander Aring 		struct dlm_rsb *r;
1555d92a30eSAlexander Aring 
156f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
157f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
158f1d3b8f9SAlexander Aring 		__entry->mode = mode;
159f1d3b8f9SAlexander Aring 		__entry->flags = flags;
1607a3de732SAlexander Aring 		__entry->error = error;
161f1d3b8f9SAlexander Aring 
1625d92a30eSAlexander Aring 		r = lkb->lkb_resource;
1635d92a30eSAlexander Aring 		if (r)
1645d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
1655d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
1665d92a30eSAlexander Aring 		else if (name)
1675d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), name,
1685d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
1695d92a30eSAlexander Aring 
1707a3de732SAlexander Aring 		if (kernel_lock) {
171f1d3b8f9SAlexander Aring 			/* return value will be zeroed in those cases by dlm_lock()
172f1d3b8f9SAlexander Aring 			 * we do it here again to not introduce more overhead if
173f1d3b8f9SAlexander Aring 			 * trace isn't running and error reflects the return value.
174f1d3b8f9SAlexander Aring 			 */
175f1d3b8f9SAlexander Aring 			if (error == -EAGAIN || error == -EDEADLK)
176f1d3b8f9SAlexander Aring 				__entry->error = 0;
1777a3de732SAlexander Aring 		}
1785d92a30eSAlexander Aring 
179f1d3b8f9SAlexander Aring 	),
180f1d3b8f9SAlexander Aring 
1815d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x mode=%s flags=%s error=%d res_name=%s",
182f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
183f1d3b8f9SAlexander Aring 		  show_lock_mode(__entry->mode),
1845d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags), __entry->error,
1855d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
1865d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
187f1d3b8f9SAlexander Aring 
188f1d3b8f9SAlexander Aring );
189f1d3b8f9SAlexander Aring 
190f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_bast,
191f1d3b8f9SAlexander Aring 
192f1d3b8f9SAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, int mode),
193f1d3b8f9SAlexander Aring 
194f1d3b8f9SAlexander Aring 	TP_ARGS(ls, lkb, mode),
195f1d3b8f9SAlexander Aring 
196f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
197f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
198f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
199f1d3b8f9SAlexander Aring 		__field(int, mode)
2005d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
2015d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
202f1d3b8f9SAlexander Aring 	),
203f1d3b8f9SAlexander Aring 
204f1d3b8f9SAlexander Aring 	TP_fast_assign(
2055d92a30eSAlexander Aring 		struct dlm_rsb *r;
2065d92a30eSAlexander Aring 
207f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
208f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
209f1d3b8f9SAlexander Aring 		__entry->mode = mode;
2105d92a30eSAlexander Aring 
2115d92a30eSAlexander Aring 		r = lkb->lkb_resource;
2125d92a30eSAlexander Aring 		if (r)
2135d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
2145d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
215f1d3b8f9SAlexander Aring 	),
216f1d3b8f9SAlexander Aring 
2175d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x mode=%s res_name=%s",
2185d92a30eSAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2195d92a30eSAlexander Aring 		  show_lock_mode(__entry->mode),
2205d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2215d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
222f1d3b8f9SAlexander Aring 
223f1d3b8f9SAlexander Aring );
224f1d3b8f9SAlexander Aring 
225f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_ast,
226f1d3b8f9SAlexander Aring 
2270c4c516fSAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb),
228f1d3b8f9SAlexander Aring 
2290c4c516fSAlexander Aring 	TP_ARGS(ls, lkb),
230f1d3b8f9SAlexander Aring 
231f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
232f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
233f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
234f1d3b8f9SAlexander Aring 		__field(u8, sb_flags)
235f1d3b8f9SAlexander Aring 		__field(int, sb_status)
2365d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
2375d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
238f1d3b8f9SAlexander Aring 	),
239f1d3b8f9SAlexander Aring 
240f1d3b8f9SAlexander Aring 	TP_fast_assign(
2415d92a30eSAlexander Aring 		struct dlm_rsb *r;
2425d92a30eSAlexander Aring 
243f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
244f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
2450c4c516fSAlexander Aring 		__entry->sb_flags = lkb->lkb_lksb->sb_flags;
2460c4c516fSAlexander Aring 		__entry->sb_status = lkb->lkb_lksb->sb_status;
2475d92a30eSAlexander Aring 
2485d92a30eSAlexander Aring 		r = lkb->lkb_resource;
2495d92a30eSAlexander Aring 		if (r)
2505d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
2515d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
252f1d3b8f9SAlexander Aring 	),
253f1d3b8f9SAlexander Aring 
2545d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x sb_flags=%s sb_status=%d res_name=%s",
255f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2565d92a30eSAlexander Aring 		  show_dlm_sb_flags(__entry->sb_flags), __entry->sb_status,
2575d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2585d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
259f1d3b8f9SAlexander Aring 
260f1d3b8f9SAlexander Aring );
261f1d3b8f9SAlexander Aring 
262f1d3b8f9SAlexander Aring /* note: we begin tracing dlm_unlock_start() only if ls and lkb are found */
263f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_unlock_start,
264f1d3b8f9SAlexander Aring 
265f1d3b8f9SAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, __u32 flags),
266f1d3b8f9SAlexander Aring 
267f1d3b8f9SAlexander Aring 	TP_ARGS(ls, lkb, flags),
268f1d3b8f9SAlexander Aring 
269f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
270f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
271f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
272f1d3b8f9SAlexander Aring 		__field(__u32, flags)
2735d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
2745d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
275f1d3b8f9SAlexander Aring 	),
276f1d3b8f9SAlexander Aring 
277f1d3b8f9SAlexander Aring 	TP_fast_assign(
2785d92a30eSAlexander Aring 		struct dlm_rsb *r;
2795d92a30eSAlexander Aring 
280f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
281f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
282f1d3b8f9SAlexander Aring 		__entry->flags = flags;
2835d92a30eSAlexander Aring 
2845d92a30eSAlexander Aring 		r = lkb->lkb_resource;
2855d92a30eSAlexander Aring 		if (r)
2865d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
2875d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
288f1d3b8f9SAlexander Aring 	),
289f1d3b8f9SAlexander Aring 
2905d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x flags=%s res_name=%s",
291f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2925d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags),
2935d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2945d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
295f1d3b8f9SAlexander Aring 
296f1d3b8f9SAlexander Aring );
297f1d3b8f9SAlexander Aring 
298f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_unlock_end,
299f1d3b8f9SAlexander Aring 
300f1d3b8f9SAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, __u32 flags,
301f1d3b8f9SAlexander Aring 		 int error),
302f1d3b8f9SAlexander Aring 
303f1d3b8f9SAlexander Aring 	TP_ARGS(ls, lkb, flags, error),
304f1d3b8f9SAlexander Aring 
305f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
306f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
307f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
308f1d3b8f9SAlexander Aring 		__field(__u32, flags)
309f1d3b8f9SAlexander Aring 		__field(int, error)
3105d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
3115d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
312f1d3b8f9SAlexander Aring 	),
313f1d3b8f9SAlexander Aring 
314f1d3b8f9SAlexander Aring 	TP_fast_assign(
3155d92a30eSAlexander Aring 		struct dlm_rsb *r;
3165d92a30eSAlexander Aring 
317f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
318f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
319f1d3b8f9SAlexander Aring 		__entry->flags = flags;
320f1d3b8f9SAlexander Aring 		__entry->error = error;
3215d92a30eSAlexander Aring 
3225d92a30eSAlexander Aring 		r = lkb->lkb_resource;
3235d92a30eSAlexander Aring 		if (r)
3245d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
3255d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
326f1d3b8f9SAlexander Aring 	),
327f1d3b8f9SAlexander Aring 
3285d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x flags=%s error=%d res_name=%s",
329f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
3305d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags), __entry->error,
3315d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
3325d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
333f1d3b8f9SAlexander Aring 
334f1d3b8f9SAlexander Aring );
335f1d3b8f9SAlexander Aring 
336e01c4b7bSAlexander Aring DECLARE_EVENT_CLASS(dlm_rcom_template,
337e01c4b7bSAlexander Aring 
33817827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
339e01c4b7bSAlexander Aring 
34017827754SAlexander Aring 	TP_ARGS(dst, h_seq, rc),
341e01c4b7bSAlexander Aring 
342e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
34317827754SAlexander Aring 		__field(uint32_t, dst)
34481889255SAlexander Aring 		__field(uint32_t, h_seq)
345e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
346e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
347e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
348e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
349e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
350e01c4b7bSAlexander Aring 		__field(uint32_t, rc_type)
351e01c4b7bSAlexander Aring 		__field(int32_t, rc_result)
352e01c4b7bSAlexander Aring 		__field(uint64_t, rc_id)
353e01c4b7bSAlexander Aring 		__field(uint64_t, rc_seq)
354e01c4b7bSAlexander Aring 		__field(uint64_t, rc_seq_reply)
355e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, rc_buf,
356e01c4b7bSAlexander Aring 				le16_to_cpu(rc->rc_header.h_length) - sizeof(*rc))
357e01c4b7bSAlexander Aring 	),
358e01c4b7bSAlexander Aring 
359e01c4b7bSAlexander Aring 	TP_fast_assign(
36017827754SAlexander Aring 		__entry->dst = dst;
36181889255SAlexander Aring 		__entry->h_seq = h_seq;
362e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(rc->rc_header.h_version);
363e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(rc->rc_header.u.h_lockspace);
364e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(rc->rc_header.h_nodeid);
365e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(rc->rc_header.h_length);
366e01c4b7bSAlexander Aring 		__entry->h_cmd = rc->rc_header.h_cmd;
367e01c4b7bSAlexander Aring 		__entry->rc_type = le32_to_cpu(rc->rc_type);
368e01c4b7bSAlexander Aring 		__entry->rc_result = le32_to_cpu(rc->rc_result);
369e01c4b7bSAlexander Aring 		__entry->rc_id = le64_to_cpu(rc->rc_id);
370e01c4b7bSAlexander Aring 		__entry->rc_seq = le64_to_cpu(rc->rc_seq);
371e01c4b7bSAlexander Aring 		__entry->rc_seq_reply = le64_to_cpu(rc->rc_seq_reply);
372e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(rc_buf), rc->rc_buf,
373e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(rc_buf));
374e01c4b7bSAlexander Aring 	),
375e01c4b7bSAlexander Aring 
37617827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
377e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s rc_type=%s rc_result=%d "
378e01c4b7bSAlexander Aring 		  "rc_id=%llu rc_seq=%llu rc_seq_reply=%llu "
37917827754SAlexander Aring 		  "rc_buf=0x%s", __entry->dst, __entry->h_seq,
380e01c4b7bSAlexander Aring 		  show_message_version(__entry->h_version),
381e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
382e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
383e01c4b7bSAlexander Aring 		  show_rcom_type(__entry->rc_type),
384e01c4b7bSAlexander Aring 		  __entry->rc_result, __entry->rc_id, __entry->rc_seq,
385e01c4b7bSAlexander Aring 		  __entry->rc_seq_reply,
386e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(rc_buf),
387e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(rc_buf)))
388e01c4b7bSAlexander Aring 
389e01c4b7bSAlexander Aring );
390e01c4b7bSAlexander Aring 
391e01c4b7bSAlexander Aring DEFINE_EVENT(dlm_rcom_template, dlm_send_rcom,
39217827754SAlexander Aring 	     TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
39317827754SAlexander Aring 	     TP_ARGS(dst, h_seq, rc));
394e01c4b7bSAlexander Aring 
395e01c4b7bSAlexander Aring DEFINE_EVENT(dlm_rcom_template, dlm_recv_rcom,
39617827754SAlexander Aring 	     TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
39717827754SAlexander Aring 	     TP_ARGS(dst, h_seq, rc));
398e01c4b7bSAlexander Aring 
399e01c4b7bSAlexander Aring TRACE_EVENT(dlm_send_message,
400e01c4b7bSAlexander Aring 
40117827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms,
402e01c4b7bSAlexander Aring 		 const void *name, int namelen),
403e01c4b7bSAlexander Aring 
40417827754SAlexander Aring 	TP_ARGS(dst, h_seq, ms, name, namelen),
405e01c4b7bSAlexander Aring 
406e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
40717827754SAlexander Aring 		__field(uint32_t, dst)
40881889255SAlexander Aring 		__field(uint32_t, h_seq)
409e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
410e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
411e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
412e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
413e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
414e01c4b7bSAlexander Aring 		__field(uint32_t, m_type)
415e01c4b7bSAlexander Aring 		__field(uint32_t, m_nodeid)
416e01c4b7bSAlexander Aring 		__field(uint32_t, m_pid)
417e01c4b7bSAlexander Aring 		__field(uint32_t, m_lkid)
418e01c4b7bSAlexander Aring 		__field(uint32_t, m_remid)
419e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_lkid)
420e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_remid)
421e01c4b7bSAlexander Aring 		__field(uint32_t, m_exflags)
422e01c4b7bSAlexander Aring 		__field(uint32_t, m_sbflags)
423e01c4b7bSAlexander Aring 		__field(uint32_t, m_flags)
424e01c4b7bSAlexander Aring 		__field(uint32_t, m_lvbseq)
425e01c4b7bSAlexander Aring 		__field(uint32_t, m_hash)
426e01c4b7bSAlexander Aring 		__field(int32_t, m_status)
427e01c4b7bSAlexander Aring 		__field(int32_t, m_grmode)
428e01c4b7bSAlexander Aring 		__field(int32_t, m_rqmode)
429e01c4b7bSAlexander Aring 		__field(int32_t, m_bastmode)
430e01c4b7bSAlexander Aring 		__field(int32_t, m_asts)
431e01c4b7bSAlexander Aring 		__field(int32_t, m_result)
432e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, m_extra,
433e01c4b7bSAlexander Aring 				le16_to_cpu(ms->m_header.h_length) - sizeof(*ms))
434e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, res_name, namelen)
435e01c4b7bSAlexander Aring 	),
436e01c4b7bSAlexander Aring 
437e01c4b7bSAlexander Aring 	TP_fast_assign(
43817827754SAlexander Aring 		__entry->dst = dst;
43981889255SAlexander Aring 		__entry->h_seq = h_seq;
440e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(ms->m_header.h_version);
441e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
442e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(ms->m_header.h_nodeid);
443e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(ms->m_header.h_length);
444e01c4b7bSAlexander Aring 		__entry->h_cmd = ms->m_header.h_cmd;
445e01c4b7bSAlexander Aring 		__entry->m_type = le32_to_cpu(ms->m_type);
446e01c4b7bSAlexander Aring 		__entry->m_nodeid = le32_to_cpu(ms->m_nodeid);
447e01c4b7bSAlexander Aring 		__entry->m_pid = le32_to_cpu(ms->m_pid);
448e01c4b7bSAlexander Aring 		__entry->m_lkid = le32_to_cpu(ms->m_lkid);
449e01c4b7bSAlexander Aring 		__entry->m_remid = le32_to_cpu(ms->m_remid);
450e01c4b7bSAlexander Aring 		__entry->m_parent_lkid = le32_to_cpu(ms->m_parent_lkid);
451e01c4b7bSAlexander Aring 		__entry->m_parent_remid = le32_to_cpu(ms->m_parent_remid);
452e01c4b7bSAlexander Aring 		__entry->m_exflags = le32_to_cpu(ms->m_exflags);
453e01c4b7bSAlexander Aring 		__entry->m_sbflags = le32_to_cpu(ms->m_sbflags);
454e01c4b7bSAlexander Aring 		__entry->m_flags = le32_to_cpu(ms->m_flags);
455e01c4b7bSAlexander Aring 		__entry->m_lvbseq = le32_to_cpu(ms->m_lvbseq);
456e01c4b7bSAlexander Aring 		__entry->m_hash = le32_to_cpu(ms->m_hash);
457e01c4b7bSAlexander Aring 		__entry->m_status = le32_to_cpu(ms->m_status);
458e01c4b7bSAlexander Aring 		__entry->m_grmode = le32_to_cpu(ms->m_grmode);
459e01c4b7bSAlexander Aring 		__entry->m_rqmode = le32_to_cpu(ms->m_rqmode);
460e01c4b7bSAlexander Aring 		__entry->m_bastmode = le32_to_cpu(ms->m_bastmode);
461e01c4b7bSAlexander Aring 		__entry->m_asts = le32_to_cpu(ms->m_asts);
462e01c4b7bSAlexander Aring 		__entry->m_result = le32_to_cpu(ms->m_result);
463e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(m_extra), ms->m_extra,
464e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(m_extra));
465e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(res_name), name,
466e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(res_name));
467e01c4b7bSAlexander Aring 	),
468e01c4b7bSAlexander Aring 
46917827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
470e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
471e01c4b7bSAlexander Aring 		  "m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
472e01c4b7bSAlexander Aring 		  "m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
473e01c4b7bSAlexander Aring 		  "m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
474e01c4b7bSAlexander Aring 		  "m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
47517827754SAlexander Aring 		  "m_extra=0x%s res_name=0x%s", __entry->dst,
47681889255SAlexander Aring 		  __entry->h_seq, show_message_version(__entry->h_version),
477e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
478e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
479e01c4b7bSAlexander Aring 		  show_message_type(__entry->m_type),
480e01c4b7bSAlexander Aring 		  __entry->m_nodeid, __entry->m_pid, __entry->m_lkid,
481e01c4b7bSAlexander Aring 		  __entry->m_remid, __entry->m_parent_lkid,
482e01c4b7bSAlexander Aring 		  __entry->m_parent_remid, show_lock_flags(__entry->m_exflags),
483e01c4b7bSAlexander Aring 		  show_dlm_sb_flags(__entry->m_sbflags),
484e01c4b7bSAlexander Aring 		  show_lkb_flags(__entry->m_flags), __entry->m_lvbseq,
485e01c4b7bSAlexander Aring 		  __entry->m_hash, __entry->m_status,
486e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_grmode),
487e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_rqmode),
488e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_bastmode),
489e01c4b7bSAlexander Aring 		  __entry->m_asts, __entry->m_result,
490e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(m_extra),
491e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(m_extra)),
492e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
493e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(res_name)))
494e01c4b7bSAlexander Aring 
495e01c4b7bSAlexander Aring );
496e01c4b7bSAlexander Aring 
497e01c4b7bSAlexander Aring TRACE_EVENT(dlm_recv_message,
498e01c4b7bSAlexander Aring 
49917827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms),
500e01c4b7bSAlexander Aring 
50117827754SAlexander Aring 	TP_ARGS(dst, h_seq, ms),
502e01c4b7bSAlexander Aring 
503e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
50417827754SAlexander Aring 		__field(uint32_t, dst)
50581889255SAlexander Aring 		__field(uint32_t, h_seq)
506e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
507e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
508e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
509e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
510e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
511e01c4b7bSAlexander Aring 		__field(uint32_t, m_type)
512e01c4b7bSAlexander Aring 		__field(uint32_t, m_nodeid)
513e01c4b7bSAlexander Aring 		__field(uint32_t, m_pid)
514e01c4b7bSAlexander Aring 		__field(uint32_t, m_lkid)
515e01c4b7bSAlexander Aring 		__field(uint32_t, m_remid)
516e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_lkid)
517e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_remid)
518e01c4b7bSAlexander Aring 		__field(uint32_t, m_exflags)
519e01c4b7bSAlexander Aring 		__field(uint32_t, m_sbflags)
520e01c4b7bSAlexander Aring 		__field(uint32_t, m_flags)
521e01c4b7bSAlexander Aring 		__field(uint32_t, m_lvbseq)
522e01c4b7bSAlexander Aring 		__field(uint32_t, m_hash)
523e01c4b7bSAlexander Aring 		__field(int32_t, m_status)
524e01c4b7bSAlexander Aring 		__field(int32_t, m_grmode)
525e01c4b7bSAlexander Aring 		__field(int32_t, m_rqmode)
526e01c4b7bSAlexander Aring 		__field(int32_t, m_bastmode)
527e01c4b7bSAlexander Aring 		__field(int32_t, m_asts)
528e01c4b7bSAlexander Aring 		__field(int32_t, m_result)
529e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, m_extra,
530e01c4b7bSAlexander Aring 				le16_to_cpu(ms->m_header.h_length) - sizeof(*ms))
531e01c4b7bSAlexander Aring 	),
532e01c4b7bSAlexander Aring 
533e01c4b7bSAlexander Aring 	TP_fast_assign(
53417827754SAlexander Aring 		__entry->dst = dst;
53581889255SAlexander Aring 		__entry->h_seq = h_seq;
536e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(ms->m_header.h_version);
537e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
538e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(ms->m_header.h_nodeid);
539e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(ms->m_header.h_length);
540e01c4b7bSAlexander Aring 		__entry->h_cmd = ms->m_header.h_cmd;
541e01c4b7bSAlexander Aring 		__entry->m_type = le32_to_cpu(ms->m_type);
542e01c4b7bSAlexander Aring 		__entry->m_nodeid = le32_to_cpu(ms->m_nodeid);
543e01c4b7bSAlexander Aring 		__entry->m_pid = le32_to_cpu(ms->m_pid);
544e01c4b7bSAlexander Aring 		__entry->m_lkid = le32_to_cpu(ms->m_lkid);
545e01c4b7bSAlexander Aring 		__entry->m_remid = le32_to_cpu(ms->m_remid);
546e01c4b7bSAlexander Aring 		__entry->m_parent_lkid = le32_to_cpu(ms->m_parent_lkid);
547e01c4b7bSAlexander Aring 		__entry->m_parent_remid = le32_to_cpu(ms->m_parent_remid);
548e01c4b7bSAlexander Aring 		__entry->m_exflags = le32_to_cpu(ms->m_exflags);
549e01c4b7bSAlexander Aring 		__entry->m_sbflags = le32_to_cpu(ms->m_sbflags);
550e01c4b7bSAlexander Aring 		__entry->m_flags = le32_to_cpu(ms->m_flags);
551e01c4b7bSAlexander Aring 		__entry->m_lvbseq = le32_to_cpu(ms->m_lvbseq);
552e01c4b7bSAlexander Aring 		__entry->m_hash = le32_to_cpu(ms->m_hash);
553e01c4b7bSAlexander Aring 		__entry->m_status = le32_to_cpu(ms->m_status);
554e01c4b7bSAlexander Aring 		__entry->m_grmode = le32_to_cpu(ms->m_grmode);
555e01c4b7bSAlexander Aring 		__entry->m_rqmode = le32_to_cpu(ms->m_rqmode);
556e01c4b7bSAlexander Aring 		__entry->m_bastmode = le32_to_cpu(ms->m_bastmode);
557e01c4b7bSAlexander Aring 		__entry->m_asts = le32_to_cpu(ms->m_asts);
558e01c4b7bSAlexander Aring 		__entry->m_result = le32_to_cpu(ms->m_result);
559e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(m_extra), ms->m_extra,
560e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(m_extra));
561e01c4b7bSAlexander Aring 	),
562e01c4b7bSAlexander Aring 
56317827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
564e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
565e01c4b7bSAlexander Aring 		  "m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
566e01c4b7bSAlexander Aring 		  "m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
567e01c4b7bSAlexander Aring 		  "m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
568e01c4b7bSAlexander Aring 		  "m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
56917827754SAlexander Aring 		  "m_extra=0x%s", __entry->dst,
57081889255SAlexander Aring 		  __entry->h_seq, show_message_version(__entry->h_version),
571e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
572e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
573e01c4b7bSAlexander Aring 		  show_message_type(__entry->m_type),
574e01c4b7bSAlexander Aring 		  __entry->m_nodeid, __entry->m_pid, __entry->m_lkid,
575e01c4b7bSAlexander Aring 		  __entry->m_remid, __entry->m_parent_lkid,
576e01c4b7bSAlexander Aring 		  __entry->m_parent_remid, show_lock_flags(__entry->m_exflags),
577e01c4b7bSAlexander Aring 		  show_dlm_sb_flags(__entry->m_sbflags),
578e01c4b7bSAlexander Aring 		  show_lkb_flags(__entry->m_flags), __entry->m_lvbseq,
579e01c4b7bSAlexander Aring 		  __entry->m_hash, __entry->m_status,
580e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_grmode),
581e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_rqmode),
582e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_bastmode),
583e01c4b7bSAlexander Aring 		  __entry->m_asts, __entry->m_result,
584e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(m_extra),
585e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(m_extra)))
586e01c4b7bSAlexander Aring 
587e01c4b7bSAlexander Aring );
588e01c4b7bSAlexander Aring 
589*8c95006dSAlexander Aring DECLARE_EVENT_CLASS(dlm_plock_template,
590*8c95006dSAlexander Aring 
591*8c95006dSAlexander Aring 	TP_PROTO(const struct dlm_plock_info *info),
592*8c95006dSAlexander Aring 
593*8c95006dSAlexander Aring 	TP_ARGS(info),
594*8c95006dSAlexander Aring 
595*8c95006dSAlexander Aring 	TP_STRUCT__entry(
596*8c95006dSAlexander Aring 		__field(uint8_t, optype)
597*8c95006dSAlexander Aring 		__field(uint8_t, ex)
598*8c95006dSAlexander Aring 		__field(uint8_t, wait)
599*8c95006dSAlexander Aring 		__field(uint8_t, flags)
600*8c95006dSAlexander Aring 		__field(uint32_t, pid)
601*8c95006dSAlexander Aring 		__field(int32_t, nodeid)
602*8c95006dSAlexander Aring 		__field(int32_t, rv)
603*8c95006dSAlexander Aring 		__field(uint32_t, fsid)
604*8c95006dSAlexander Aring 		__field(uint64_t, number)
605*8c95006dSAlexander Aring 		__field(uint64_t, start)
606*8c95006dSAlexander Aring 		__field(uint64_t, end)
607*8c95006dSAlexander Aring 		__field(uint64_t, owner)
608*8c95006dSAlexander Aring 	),
609*8c95006dSAlexander Aring 
610*8c95006dSAlexander Aring 	TP_fast_assign(
611*8c95006dSAlexander Aring 		__entry->optype = info->optype;
612*8c95006dSAlexander Aring 		__entry->ex = info->ex;
613*8c95006dSAlexander Aring 		__entry->wait = info->wait;
614*8c95006dSAlexander Aring 		__entry->flags = info->flags;
615*8c95006dSAlexander Aring 		__entry->pid = info->pid;
616*8c95006dSAlexander Aring 		__entry->nodeid = info->nodeid;
617*8c95006dSAlexander Aring 		__entry->rv = info->rv;
618*8c95006dSAlexander Aring 		__entry->fsid = info->fsid;
619*8c95006dSAlexander Aring 		__entry->number = info->number;
620*8c95006dSAlexander Aring 		__entry->start = info->start;
621*8c95006dSAlexander Aring 		__entry->end = info->end;
622*8c95006dSAlexander Aring 		__entry->owner = info->owner;
623*8c95006dSAlexander Aring 	),
624*8c95006dSAlexander Aring 
625*8c95006dSAlexander Aring 	TP_printk("fsid=%u number=%llx owner=%llx optype=%d ex=%d wait=%d flags=%x pid=%u nodeid=%d rv=%d start=%llx end=%llx",
626*8c95006dSAlexander Aring 		  __entry->fsid, __entry->number, __entry->owner,
627*8c95006dSAlexander Aring 		  __entry->optype, __entry->ex, __entry->wait,
628*8c95006dSAlexander Aring 		  __entry->flags, __entry->pid, __entry->nodeid,
629*8c95006dSAlexander Aring 		  __entry->rv, __entry->start, __entry->end)
630*8c95006dSAlexander Aring 
631*8c95006dSAlexander Aring );
632*8c95006dSAlexander Aring 
633*8c95006dSAlexander Aring DEFINE_EVENT(dlm_plock_template, dlm_plock_read,
634*8c95006dSAlexander Aring 	     TP_PROTO(const struct dlm_plock_info *info), TP_ARGS(info));
635*8c95006dSAlexander Aring 
636*8c95006dSAlexander Aring DEFINE_EVENT(dlm_plock_template, dlm_plock_write,
637*8c95006dSAlexander Aring 	     TP_PROTO(const struct dlm_plock_info *info), TP_ARGS(info));
638*8c95006dSAlexander Aring 
63992732376SAlexander Aring TRACE_EVENT(dlm_send,
64092732376SAlexander Aring 
64192732376SAlexander Aring 	TP_PROTO(int nodeid, int ret),
64292732376SAlexander Aring 
64392732376SAlexander Aring 	TP_ARGS(nodeid, ret),
64492732376SAlexander Aring 
64592732376SAlexander Aring 	TP_STRUCT__entry(
64692732376SAlexander Aring 		__field(int, nodeid)
64792732376SAlexander Aring 		__field(int, ret)
64892732376SAlexander Aring 	),
64992732376SAlexander Aring 
65092732376SAlexander Aring 	TP_fast_assign(
65192732376SAlexander Aring 		__entry->nodeid = nodeid;
65292732376SAlexander Aring 		__entry->ret = ret;
65392732376SAlexander Aring 	),
65492732376SAlexander Aring 
65592732376SAlexander Aring 	TP_printk("nodeid=%d ret=%d", __entry->nodeid, __entry->ret)
65692732376SAlexander Aring 
65792732376SAlexander Aring );
65892732376SAlexander Aring 
65992732376SAlexander Aring TRACE_EVENT(dlm_recv,
66092732376SAlexander Aring 
66192732376SAlexander Aring 	TP_PROTO(int nodeid, int ret),
66292732376SAlexander Aring 
66392732376SAlexander Aring 	TP_ARGS(nodeid, ret),
66492732376SAlexander Aring 
66592732376SAlexander Aring 	TP_STRUCT__entry(
66692732376SAlexander Aring 		__field(int, nodeid)
66792732376SAlexander Aring 		__field(int, ret)
66892732376SAlexander Aring 	),
66992732376SAlexander Aring 
67092732376SAlexander Aring 	TP_fast_assign(
67192732376SAlexander Aring 		__entry->nodeid = nodeid;
67292732376SAlexander Aring 		__entry->ret = ret;
67392732376SAlexander Aring 	),
67492732376SAlexander Aring 
67592732376SAlexander Aring 	TP_printk("nodeid=%d ret=%d", __entry->nodeid, __entry->ret)
67692732376SAlexander Aring 
67792732376SAlexander Aring );
67892732376SAlexander Aring 
679f1d3b8f9SAlexander Aring #endif /* if !defined(_TRACE_DLM_H) || defined(TRACE_HEADER_MULTI_READ) */
680f1d3b8f9SAlexander Aring 
681f1d3b8f9SAlexander Aring /* This part must be outside protection */
682f1d3b8f9SAlexander Aring #include <trace/define_trace.h>
683