xref: /linux/include/trace/events/dlm.h (revision 621cde16e49b3ecf7d59a8106a20aaebfb4a59a9)
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>
108c95006dSAlexander 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 
192*1131f339SAlexander Aring 	TP_PROTO(__u32 ls_id, __u32 lkb_id, int mode,
193*1131f339SAlexander Aring 		 const char *res_name, size_t res_length),
194f1d3b8f9SAlexander Aring 
195*1131f339SAlexander Aring 	TP_ARGS(ls_id, lkb_id, mode, res_name, res_length),
196f1d3b8f9SAlexander Aring 
197f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
198f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
199f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
200f1d3b8f9SAlexander Aring 		__field(int, mode)
201*1131f339SAlexander Aring 		__dynamic_array(unsigned char, res_name, res_length)
202f1d3b8f9SAlexander Aring 	),
203f1d3b8f9SAlexander Aring 
204f1d3b8f9SAlexander Aring 	TP_fast_assign(
205*1131f339SAlexander Aring 		__entry->ls_id = ls_id;
206*1131f339SAlexander Aring 		__entry->lkb_id = lkb_id;
207f1d3b8f9SAlexander Aring 		__entry->mode = mode;
2085d92a30eSAlexander Aring 
209*1131f339SAlexander Aring 		memcpy(__get_dynamic_array(res_name), res_name,
2105d92a30eSAlexander Aring 		       __get_dynamic_array_len(res_name));
211f1d3b8f9SAlexander Aring 	),
212f1d3b8f9SAlexander Aring 
2135d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x mode=%s res_name=%s",
2145d92a30eSAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2155d92a30eSAlexander Aring 		  show_lock_mode(__entry->mode),
2165d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2175d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
218f1d3b8f9SAlexander Aring 
219f1d3b8f9SAlexander Aring );
220f1d3b8f9SAlexander Aring 
221f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_ast,
222f1d3b8f9SAlexander Aring 
223*1131f339SAlexander Aring 	TP_PROTO(__u32 ls_id, __u32 lkb_id, __u8 sb_flags, int sb_status,
224*1131f339SAlexander Aring 		 const char *res_name, size_t res_length),
225f1d3b8f9SAlexander Aring 
226*1131f339SAlexander Aring 	TP_ARGS(ls_id, lkb_id, sb_flags, sb_status, res_name, res_length),
227f1d3b8f9SAlexander Aring 
228f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
229f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
230f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
231*1131f339SAlexander Aring 		__field(__u8, sb_flags)
232f1d3b8f9SAlexander Aring 		__field(int, sb_status)
233*1131f339SAlexander Aring 		__dynamic_array(unsigned char, res_name, res_length)
234f1d3b8f9SAlexander Aring 	),
235f1d3b8f9SAlexander Aring 
236f1d3b8f9SAlexander Aring 	TP_fast_assign(
237*1131f339SAlexander Aring 		__entry->ls_id = ls_id;
238*1131f339SAlexander Aring 		__entry->lkb_id = lkb_id;
239*1131f339SAlexander Aring 		__entry->sb_flags = sb_flags;
240*1131f339SAlexander Aring 		__entry->sb_status = sb_status;
2415d92a30eSAlexander Aring 
242*1131f339SAlexander Aring 		memcpy(__get_dynamic_array(res_name), res_name,
2435d92a30eSAlexander Aring 		       __get_dynamic_array_len(res_name));
244f1d3b8f9SAlexander Aring 	),
245f1d3b8f9SAlexander Aring 
2465d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x sb_flags=%s sb_status=%d res_name=%s",
247f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2485d92a30eSAlexander Aring 		  show_dlm_sb_flags(__entry->sb_flags), __entry->sb_status,
2495d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2505d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
251f1d3b8f9SAlexander Aring 
252f1d3b8f9SAlexander Aring );
253f1d3b8f9SAlexander Aring 
254f1d3b8f9SAlexander Aring /* note: we begin tracing dlm_unlock_start() only if ls and lkb are found */
255f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_unlock_start,
256f1d3b8f9SAlexander Aring 
257f1d3b8f9SAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, __u32 flags),
258f1d3b8f9SAlexander Aring 
259f1d3b8f9SAlexander Aring 	TP_ARGS(ls, lkb, flags),
260f1d3b8f9SAlexander Aring 
261f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
262f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
263f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
264f1d3b8f9SAlexander Aring 		__field(__u32, flags)
2655d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
2665d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
267f1d3b8f9SAlexander Aring 	),
268f1d3b8f9SAlexander Aring 
269f1d3b8f9SAlexander Aring 	TP_fast_assign(
2705d92a30eSAlexander Aring 		struct dlm_rsb *r;
2715d92a30eSAlexander Aring 
272f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
273f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
274f1d3b8f9SAlexander Aring 		__entry->flags = flags;
2755d92a30eSAlexander Aring 
2765d92a30eSAlexander Aring 		r = lkb->lkb_resource;
2775d92a30eSAlexander Aring 		if (r)
2785d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
2795d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
280f1d3b8f9SAlexander Aring 	),
281f1d3b8f9SAlexander Aring 
2825d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x flags=%s res_name=%s",
283f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
2845d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags),
2855d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
2865d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
287f1d3b8f9SAlexander Aring 
288f1d3b8f9SAlexander Aring );
289f1d3b8f9SAlexander Aring 
290f1d3b8f9SAlexander Aring TRACE_EVENT(dlm_unlock_end,
291f1d3b8f9SAlexander Aring 
292f1d3b8f9SAlexander Aring 	TP_PROTO(struct dlm_ls *ls, struct dlm_lkb *lkb, __u32 flags,
293f1d3b8f9SAlexander Aring 		 int error),
294f1d3b8f9SAlexander Aring 
295f1d3b8f9SAlexander Aring 	TP_ARGS(ls, lkb, flags, error),
296f1d3b8f9SAlexander Aring 
297f1d3b8f9SAlexander Aring 	TP_STRUCT__entry(
298f1d3b8f9SAlexander Aring 		__field(__u32, ls_id)
299f1d3b8f9SAlexander Aring 		__field(__u32, lkb_id)
300f1d3b8f9SAlexander Aring 		__field(__u32, flags)
301f1d3b8f9SAlexander Aring 		__field(int, error)
3025d92a30eSAlexander Aring 		__dynamic_array(unsigned char, res_name,
3035d92a30eSAlexander Aring 				lkb->lkb_resource ? lkb->lkb_resource->res_length : 0)
304f1d3b8f9SAlexander Aring 	),
305f1d3b8f9SAlexander Aring 
306f1d3b8f9SAlexander Aring 	TP_fast_assign(
3075d92a30eSAlexander Aring 		struct dlm_rsb *r;
3085d92a30eSAlexander Aring 
309f1d3b8f9SAlexander Aring 		__entry->ls_id = ls->ls_global_id;
310f1d3b8f9SAlexander Aring 		__entry->lkb_id = lkb->lkb_id;
311f1d3b8f9SAlexander Aring 		__entry->flags = flags;
312f1d3b8f9SAlexander Aring 		__entry->error = error;
3135d92a30eSAlexander Aring 
3145d92a30eSAlexander Aring 		r = lkb->lkb_resource;
3155d92a30eSAlexander Aring 		if (r)
3165d92a30eSAlexander Aring 			memcpy(__get_dynamic_array(res_name), r->res_name,
3175d92a30eSAlexander Aring 			       __get_dynamic_array_len(res_name));
318f1d3b8f9SAlexander Aring 	),
319f1d3b8f9SAlexander Aring 
3205d92a30eSAlexander Aring 	TP_printk("ls_id=%u lkb_id=%x flags=%s error=%d res_name=%s",
321f1d3b8f9SAlexander Aring 		  __entry->ls_id, __entry->lkb_id,
3225d92a30eSAlexander Aring 		  show_lock_flags(__entry->flags), __entry->error,
3235d92a30eSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
3245d92a30eSAlexander Aring 				  __get_dynamic_array_len(res_name)))
325f1d3b8f9SAlexander Aring 
326f1d3b8f9SAlexander Aring );
327f1d3b8f9SAlexander Aring 
328e01c4b7bSAlexander Aring DECLARE_EVENT_CLASS(dlm_rcom_template,
329e01c4b7bSAlexander Aring 
33017827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
331e01c4b7bSAlexander Aring 
33217827754SAlexander Aring 	TP_ARGS(dst, h_seq, rc),
333e01c4b7bSAlexander Aring 
334e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
33517827754SAlexander Aring 		__field(uint32_t, dst)
33681889255SAlexander Aring 		__field(uint32_t, h_seq)
337e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
338e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
339e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
340e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
341e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
342e01c4b7bSAlexander Aring 		__field(uint32_t, rc_type)
343e01c4b7bSAlexander Aring 		__field(int32_t, rc_result)
344e01c4b7bSAlexander Aring 		__field(uint64_t, rc_id)
345e01c4b7bSAlexander Aring 		__field(uint64_t, rc_seq)
346e01c4b7bSAlexander Aring 		__field(uint64_t, rc_seq_reply)
347e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, rc_buf,
348e01c4b7bSAlexander Aring 				le16_to_cpu(rc->rc_header.h_length) - sizeof(*rc))
349e01c4b7bSAlexander Aring 	),
350e01c4b7bSAlexander Aring 
351e01c4b7bSAlexander Aring 	TP_fast_assign(
35217827754SAlexander Aring 		__entry->dst = dst;
35381889255SAlexander Aring 		__entry->h_seq = h_seq;
354e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(rc->rc_header.h_version);
355e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(rc->rc_header.u.h_lockspace);
356e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(rc->rc_header.h_nodeid);
357e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(rc->rc_header.h_length);
358e01c4b7bSAlexander Aring 		__entry->h_cmd = rc->rc_header.h_cmd;
359e01c4b7bSAlexander Aring 		__entry->rc_type = le32_to_cpu(rc->rc_type);
360e01c4b7bSAlexander Aring 		__entry->rc_result = le32_to_cpu(rc->rc_result);
361e01c4b7bSAlexander Aring 		__entry->rc_id = le64_to_cpu(rc->rc_id);
362e01c4b7bSAlexander Aring 		__entry->rc_seq = le64_to_cpu(rc->rc_seq);
363e01c4b7bSAlexander Aring 		__entry->rc_seq_reply = le64_to_cpu(rc->rc_seq_reply);
364e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(rc_buf), rc->rc_buf,
365e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(rc_buf));
366e01c4b7bSAlexander Aring 	),
367e01c4b7bSAlexander Aring 
36817827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
369e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s rc_type=%s rc_result=%d "
370e01c4b7bSAlexander Aring 		  "rc_id=%llu rc_seq=%llu rc_seq_reply=%llu "
37117827754SAlexander Aring 		  "rc_buf=0x%s", __entry->dst, __entry->h_seq,
372e01c4b7bSAlexander Aring 		  show_message_version(__entry->h_version),
373e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
374e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
375e01c4b7bSAlexander Aring 		  show_rcom_type(__entry->rc_type),
376e01c4b7bSAlexander Aring 		  __entry->rc_result, __entry->rc_id, __entry->rc_seq,
377e01c4b7bSAlexander Aring 		  __entry->rc_seq_reply,
378e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(rc_buf),
379e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(rc_buf)))
380e01c4b7bSAlexander Aring 
381e01c4b7bSAlexander Aring );
382e01c4b7bSAlexander Aring 
383e01c4b7bSAlexander Aring DEFINE_EVENT(dlm_rcom_template, dlm_send_rcom,
38417827754SAlexander Aring 	     TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
38517827754SAlexander Aring 	     TP_ARGS(dst, h_seq, rc));
386e01c4b7bSAlexander Aring 
387e01c4b7bSAlexander Aring DEFINE_EVENT(dlm_rcom_template, dlm_recv_rcom,
38817827754SAlexander Aring 	     TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
38917827754SAlexander Aring 	     TP_ARGS(dst, h_seq, rc));
390e01c4b7bSAlexander Aring 
391e01c4b7bSAlexander Aring TRACE_EVENT(dlm_send_message,
392e01c4b7bSAlexander Aring 
39317827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms,
394e01c4b7bSAlexander Aring 		 const void *name, int namelen),
395e01c4b7bSAlexander Aring 
39617827754SAlexander Aring 	TP_ARGS(dst, h_seq, ms, name, namelen),
397e01c4b7bSAlexander Aring 
398e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
39917827754SAlexander Aring 		__field(uint32_t, dst)
40081889255SAlexander Aring 		__field(uint32_t, h_seq)
401e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
402e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
403e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
404e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
405e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
406e01c4b7bSAlexander Aring 		__field(uint32_t, m_type)
407e01c4b7bSAlexander Aring 		__field(uint32_t, m_nodeid)
408e01c4b7bSAlexander Aring 		__field(uint32_t, m_pid)
409e01c4b7bSAlexander Aring 		__field(uint32_t, m_lkid)
410e01c4b7bSAlexander Aring 		__field(uint32_t, m_remid)
411e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_lkid)
412e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_remid)
413e01c4b7bSAlexander Aring 		__field(uint32_t, m_exflags)
414e01c4b7bSAlexander Aring 		__field(uint32_t, m_sbflags)
415e01c4b7bSAlexander Aring 		__field(uint32_t, m_flags)
416e01c4b7bSAlexander Aring 		__field(uint32_t, m_lvbseq)
417e01c4b7bSAlexander Aring 		__field(uint32_t, m_hash)
418e01c4b7bSAlexander Aring 		__field(int32_t, m_status)
419e01c4b7bSAlexander Aring 		__field(int32_t, m_grmode)
420e01c4b7bSAlexander Aring 		__field(int32_t, m_rqmode)
421e01c4b7bSAlexander Aring 		__field(int32_t, m_bastmode)
422e01c4b7bSAlexander Aring 		__field(int32_t, m_asts)
423e01c4b7bSAlexander Aring 		__field(int32_t, m_result)
424e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, m_extra,
425e01c4b7bSAlexander Aring 				le16_to_cpu(ms->m_header.h_length) - sizeof(*ms))
426e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, res_name, namelen)
427e01c4b7bSAlexander Aring 	),
428e01c4b7bSAlexander Aring 
429e01c4b7bSAlexander Aring 	TP_fast_assign(
43017827754SAlexander Aring 		__entry->dst = dst;
43181889255SAlexander Aring 		__entry->h_seq = h_seq;
432e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(ms->m_header.h_version);
433e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
434e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(ms->m_header.h_nodeid);
435e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(ms->m_header.h_length);
436e01c4b7bSAlexander Aring 		__entry->h_cmd = ms->m_header.h_cmd;
437e01c4b7bSAlexander Aring 		__entry->m_type = le32_to_cpu(ms->m_type);
438e01c4b7bSAlexander Aring 		__entry->m_nodeid = le32_to_cpu(ms->m_nodeid);
439e01c4b7bSAlexander Aring 		__entry->m_pid = le32_to_cpu(ms->m_pid);
440e01c4b7bSAlexander Aring 		__entry->m_lkid = le32_to_cpu(ms->m_lkid);
441e01c4b7bSAlexander Aring 		__entry->m_remid = le32_to_cpu(ms->m_remid);
442e01c4b7bSAlexander Aring 		__entry->m_parent_lkid = le32_to_cpu(ms->m_parent_lkid);
443e01c4b7bSAlexander Aring 		__entry->m_parent_remid = le32_to_cpu(ms->m_parent_remid);
444e01c4b7bSAlexander Aring 		__entry->m_exflags = le32_to_cpu(ms->m_exflags);
445e01c4b7bSAlexander Aring 		__entry->m_sbflags = le32_to_cpu(ms->m_sbflags);
446e01c4b7bSAlexander Aring 		__entry->m_flags = le32_to_cpu(ms->m_flags);
447e01c4b7bSAlexander Aring 		__entry->m_lvbseq = le32_to_cpu(ms->m_lvbseq);
448e01c4b7bSAlexander Aring 		__entry->m_hash = le32_to_cpu(ms->m_hash);
449e01c4b7bSAlexander Aring 		__entry->m_status = le32_to_cpu(ms->m_status);
450e01c4b7bSAlexander Aring 		__entry->m_grmode = le32_to_cpu(ms->m_grmode);
451e01c4b7bSAlexander Aring 		__entry->m_rqmode = le32_to_cpu(ms->m_rqmode);
452e01c4b7bSAlexander Aring 		__entry->m_bastmode = le32_to_cpu(ms->m_bastmode);
453e01c4b7bSAlexander Aring 		__entry->m_asts = le32_to_cpu(ms->m_asts);
454e01c4b7bSAlexander Aring 		__entry->m_result = le32_to_cpu(ms->m_result);
455e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(m_extra), ms->m_extra,
456e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(m_extra));
457e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(res_name), name,
458e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(res_name));
459e01c4b7bSAlexander Aring 	),
460e01c4b7bSAlexander Aring 
46117827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
462e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
463e01c4b7bSAlexander Aring 		  "m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
464e01c4b7bSAlexander Aring 		  "m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
465e01c4b7bSAlexander Aring 		  "m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
466e01c4b7bSAlexander Aring 		  "m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
46717827754SAlexander Aring 		  "m_extra=0x%s res_name=0x%s", __entry->dst,
46881889255SAlexander Aring 		  __entry->h_seq, show_message_version(__entry->h_version),
469e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
470e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
471e01c4b7bSAlexander Aring 		  show_message_type(__entry->m_type),
472e01c4b7bSAlexander Aring 		  __entry->m_nodeid, __entry->m_pid, __entry->m_lkid,
473e01c4b7bSAlexander Aring 		  __entry->m_remid, __entry->m_parent_lkid,
474e01c4b7bSAlexander Aring 		  __entry->m_parent_remid, show_lock_flags(__entry->m_exflags),
475e01c4b7bSAlexander Aring 		  show_dlm_sb_flags(__entry->m_sbflags),
476e01c4b7bSAlexander Aring 		  show_lkb_flags(__entry->m_flags), __entry->m_lvbseq,
477e01c4b7bSAlexander Aring 		  __entry->m_hash, __entry->m_status,
478e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_grmode),
479e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_rqmode),
480e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_bastmode),
481e01c4b7bSAlexander Aring 		  __entry->m_asts, __entry->m_result,
482e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(m_extra),
483e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(m_extra)),
484e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(res_name),
485e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(res_name)))
486e01c4b7bSAlexander Aring 
487e01c4b7bSAlexander Aring );
488e01c4b7bSAlexander Aring 
489e01c4b7bSAlexander Aring TRACE_EVENT(dlm_recv_message,
490e01c4b7bSAlexander Aring 
49117827754SAlexander Aring 	TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms),
492e01c4b7bSAlexander Aring 
49317827754SAlexander Aring 	TP_ARGS(dst, h_seq, ms),
494e01c4b7bSAlexander Aring 
495e01c4b7bSAlexander Aring 	TP_STRUCT__entry(
49617827754SAlexander Aring 		__field(uint32_t, dst)
49781889255SAlexander Aring 		__field(uint32_t, h_seq)
498e01c4b7bSAlexander Aring 		__field(uint32_t, h_version)
499e01c4b7bSAlexander Aring 		__field(uint32_t, h_lockspace)
500e01c4b7bSAlexander Aring 		__field(uint32_t, h_nodeid)
501e01c4b7bSAlexander Aring 		__field(uint16_t, h_length)
502e01c4b7bSAlexander Aring 		__field(uint8_t, h_cmd)
503e01c4b7bSAlexander Aring 		__field(uint32_t, m_type)
504e01c4b7bSAlexander Aring 		__field(uint32_t, m_nodeid)
505e01c4b7bSAlexander Aring 		__field(uint32_t, m_pid)
506e01c4b7bSAlexander Aring 		__field(uint32_t, m_lkid)
507e01c4b7bSAlexander Aring 		__field(uint32_t, m_remid)
508e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_lkid)
509e01c4b7bSAlexander Aring 		__field(uint32_t, m_parent_remid)
510e01c4b7bSAlexander Aring 		__field(uint32_t, m_exflags)
511e01c4b7bSAlexander Aring 		__field(uint32_t, m_sbflags)
512e01c4b7bSAlexander Aring 		__field(uint32_t, m_flags)
513e01c4b7bSAlexander Aring 		__field(uint32_t, m_lvbseq)
514e01c4b7bSAlexander Aring 		__field(uint32_t, m_hash)
515e01c4b7bSAlexander Aring 		__field(int32_t, m_status)
516e01c4b7bSAlexander Aring 		__field(int32_t, m_grmode)
517e01c4b7bSAlexander Aring 		__field(int32_t, m_rqmode)
518e01c4b7bSAlexander Aring 		__field(int32_t, m_bastmode)
519e01c4b7bSAlexander Aring 		__field(int32_t, m_asts)
520e01c4b7bSAlexander Aring 		__field(int32_t, m_result)
521e01c4b7bSAlexander Aring 		__dynamic_array(unsigned char, m_extra,
522e01c4b7bSAlexander Aring 				le16_to_cpu(ms->m_header.h_length) - sizeof(*ms))
523e01c4b7bSAlexander Aring 	),
524e01c4b7bSAlexander Aring 
525e01c4b7bSAlexander Aring 	TP_fast_assign(
52617827754SAlexander Aring 		__entry->dst = dst;
52781889255SAlexander Aring 		__entry->h_seq = h_seq;
528e01c4b7bSAlexander Aring 		__entry->h_version = le32_to_cpu(ms->m_header.h_version);
529e01c4b7bSAlexander Aring 		__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
530e01c4b7bSAlexander Aring 		__entry->h_nodeid = le32_to_cpu(ms->m_header.h_nodeid);
531e01c4b7bSAlexander Aring 		__entry->h_length = le16_to_cpu(ms->m_header.h_length);
532e01c4b7bSAlexander Aring 		__entry->h_cmd = ms->m_header.h_cmd;
533e01c4b7bSAlexander Aring 		__entry->m_type = le32_to_cpu(ms->m_type);
534e01c4b7bSAlexander Aring 		__entry->m_nodeid = le32_to_cpu(ms->m_nodeid);
535e01c4b7bSAlexander Aring 		__entry->m_pid = le32_to_cpu(ms->m_pid);
536e01c4b7bSAlexander Aring 		__entry->m_lkid = le32_to_cpu(ms->m_lkid);
537e01c4b7bSAlexander Aring 		__entry->m_remid = le32_to_cpu(ms->m_remid);
538e01c4b7bSAlexander Aring 		__entry->m_parent_lkid = le32_to_cpu(ms->m_parent_lkid);
539e01c4b7bSAlexander Aring 		__entry->m_parent_remid = le32_to_cpu(ms->m_parent_remid);
540e01c4b7bSAlexander Aring 		__entry->m_exflags = le32_to_cpu(ms->m_exflags);
541e01c4b7bSAlexander Aring 		__entry->m_sbflags = le32_to_cpu(ms->m_sbflags);
542e01c4b7bSAlexander Aring 		__entry->m_flags = le32_to_cpu(ms->m_flags);
543e01c4b7bSAlexander Aring 		__entry->m_lvbseq = le32_to_cpu(ms->m_lvbseq);
544e01c4b7bSAlexander Aring 		__entry->m_hash = le32_to_cpu(ms->m_hash);
545e01c4b7bSAlexander Aring 		__entry->m_status = le32_to_cpu(ms->m_status);
546e01c4b7bSAlexander Aring 		__entry->m_grmode = le32_to_cpu(ms->m_grmode);
547e01c4b7bSAlexander Aring 		__entry->m_rqmode = le32_to_cpu(ms->m_rqmode);
548e01c4b7bSAlexander Aring 		__entry->m_bastmode = le32_to_cpu(ms->m_bastmode);
549e01c4b7bSAlexander Aring 		__entry->m_asts = le32_to_cpu(ms->m_asts);
550e01c4b7bSAlexander Aring 		__entry->m_result = le32_to_cpu(ms->m_result);
551e01c4b7bSAlexander Aring 		memcpy(__get_dynamic_array(m_extra), ms->m_extra,
552e01c4b7bSAlexander Aring 		       __get_dynamic_array_len(m_extra));
553e01c4b7bSAlexander Aring 	),
554e01c4b7bSAlexander Aring 
55517827754SAlexander Aring 	TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
556e01c4b7bSAlexander Aring 		  "h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
557e01c4b7bSAlexander Aring 		  "m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
558e01c4b7bSAlexander Aring 		  "m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
559e01c4b7bSAlexander Aring 		  "m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
560e01c4b7bSAlexander Aring 		  "m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
56117827754SAlexander Aring 		  "m_extra=0x%s", __entry->dst,
56281889255SAlexander Aring 		  __entry->h_seq, show_message_version(__entry->h_version),
563e01c4b7bSAlexander Aring 		  __entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
564e01c4b7bSAlexander Aring 		  show_header_cmd(__entry->h_cmd),
565e01c4b7bSAlexander Aring 		  show_message_type(__entry->m_type),
566e01c4b7bSAlexander Aring 		  __entry->m_nodeid, __entry->m_pid, __entry->m_lkid,
567e01c4b7bSAlexander Aring 		  __entry->m_remid, __entry->m_parent_lkid,
568e01c4b7bSAlexander Aring 		  __entry->m_parent_remid, show_lock_flags(__entry->m_exflags),
569e01c4b7bSAlexander Aring 		  show_dlm_sb_flags(__entry->m_sbflags),
570e01c4b7bSAlexander Aring 		  show_lkb_flags(__entry->m_flags), __entry->m_lvbseq,
571e01c4b7bSAlexander Aring 		  __entry->m_hash, __entry->m_status,
572e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_grmode),
573e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_rqmode),
574e01c4b7bSAlexander Aring 		  show_lock_mode(__entry->m_bastmode),
575e01c4b7bSAlexander Aring 		  __entry->m_asts, __entry->m_result,
576e01c4b7bSAlexander Aring 		  __print_hex_str(__get_dynamic_array(m_extra),
577e01c4b7bSAlexander Aring 				  __get_dynamic_array_len(m_extra)))
578e01c4b7bSAlexander Aring 
579e01c4b7bSAlexander Aring );
580e01c4b7bSAlexander Aring 
5818c95006dSAlexander Aring DECLARE_EVENT_CLASS(dlm_plock_template,
5828c95006dSAlexander Aring 
5838c95006dSAlexander Aring 	TP_PROTO(const struct dlm_plock_info *info),
5848c95006dSAlexander Aring 
5858c95006dSAlexander Aring 	TP_ARGS(info),
5868c95006dSAlexander Aring 
5878c95006dSAlexander Aring 	TP_STRUCT__entry(
5888c95006dSAlexander Aring 		__field(uint8_t, optype)
5898c95006dSAlexander Aring 		__field(uint8_t, ex)
5908c95006dSAlexander Aring 		__field(uint8_t, wait)
5918c95006dSAlexander Aring 		__field(uint8_t, flags)
5928c95006dSAlexander Aring 		__field(uint32_t, pid)
5938c95006dSAlexander Aring 		__field(int32_t, nodeid)
5948c95006dSAlexander Aring 		__field(int32_t, rv)
5958c95006dSAlexander Aring 		__field(uint32_t, fsid)
5968c95006dSAlexander Aring 		__field(uint64_t, number)
5978c95006dSAlexander Aring 		__field(uint64_t, start)
5988c95006dSAlexander Aring 		__field(uint64_t, end)
5998c95006dSAlexander Aring 		__field(uint64_t, owner)
6008c95006dSAlexander Aring 	),
6018c95006dSAlexander Aring 
6028c95006dSAlexander Aring 	TP_fast_assign(
6038c95006dSAlexander Aring 		__entry->optype = info->optype;
6048c95006dSAlexander Aring 		__entry->ex = info->ex;
6058c95006dSAlexander Aring 		__entry->wait = info->wait;
6068c95006dSAlexander Aring 		__entry->flags = info->flags;
6078c95006dSAlexander Aring 		__entry->pid = info->pid;
6088c95006dSAlexander Aring 		__entry->nodeid = info->nodeid;
6098c95006dSAlexander Aring 		__entry->rv = info->rv;
6108c95006dSAlexander Aring 		__entry->fsid = info->fsid;
6118c95006dSAlexander Aring 		__entry->number = info->number;
6128c95006dSAlexander Aring 		__entry->start = info->start;
6138c95006dSAlexander Aring 		__entry->end = info->end;
6148c95006dSAlexander Aring 		__entry->owner = info->owner;
6158c95006dSAlexander Aring 	),
6168c95006dSAlexander Aring 
6178c95006dSAlexander 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",
6188c95006dSAlexander Aring 		  __entry->fsid, __entry->number, __entry->owner,
6198c95006dSAlexander Aring 		  __entry->optype, __entry->ex, __entry->wait,
6208c95006dSAlexander Aring 		  __entry->flags, __entry->pid, __entry->nodeid,
6218c95006dSAlexander Aring 		  __entry->rv, __entry->start, __entry->end)
6228c95006dSAlexander Aring 
6238c95006dSAlexander Aring );
6248c95006dSAlexander Aring 
6258c95006dSAlexander Aring DEFINE_EVENT(dlm_plock_template, dlm_plock_read,
6268c95006dSAlexander Aring 	     TP_PROTO(const struct dlm_plock_info *info), TP_ARGS(info));
6278c95006dSAlexander Aring 
6288c95006dSAlexander Aring DEFINE_EVENT(dlm_plock_template, dlm_plock_write,
6298c95006dSAlexander Aring 	     TP_PROTO(const struct dlm_plock_info *info), TP_ARGS(info));
6308c95006dSAlexander Aring 
63192732376SAlexander Aring TRACE_EVENT(dlm_send,
63292732376SAlexander Aring 
63392732376SAlexander Aring 	TP_PROTO(int nodeid, int ret),
63492732376SAlexander Aring 
63592732376SAlexander Aring 	TP_ARGS(nodeid, ret),
63692732376SAlexander Aring 
63792732376SAlexander Aring 	TP_STRUCT__entry(
63892732376SAlexander Aring 		__field(int, nodeid)
63992732376SAlexander Aring 		__field(int, ret)
64092732376SAlexander Aring 	),
64192732376SAlexander Aring 
64292732376SAlexander Aring 	TP_fast_assign(
64392732376SAlexander Aring 		__entry->nodeid = nodeid;
64492732376SAlexander Aring 		__entry->ret = ret;
64592732376SAlexander Aring 	),
64692732376SAlexander Aring 
64792732376SAlexander Aring 	TP_printk("nodeid=%d ret=%d", __entry->nodeid, __entry->ret)
64892732376SAlexander Aring 
64992732376SAlexander Aring );
65092732376SAlexander Aring 
65192732376SAlexander Aring TRACE_EVENT(dlm_recv,
65292732376SAlexander Aring 
65392732376SAlexander Aring 	TP_PROTO(int nodeid, int ret),
65492732376SAlexander Aring 
65592732376SAlexander Aring 	TP_ARGS(nodeid, ret),
65692732376SAlexander Aring 
65792732376SAlexander Aring 	TP_STRUCT__entry(
65892732376SAlexander Aring 		__field(int, nodeid)
65992732376SAlexander Aring 		__field(int, ret)
66092732376SAlexander Aring 	),
66192732376SAlexander Aring 
66292732376SAlexander Aring 	TP_fast_assign(
66392732376SAlexander Aring 		__entry->nodeid = nodeid;
66492732376SAlexander Aring 		__entry->ret = ret;
66592732376SAlexander Aring 	),
66692732376SAlexander Aring 
66792732376SAlexander Aring 	TP_printk("nodeid=%d ret=%d", __entry->nodeid, __entry->ret)
66892732376SAlexander Aring 
66992732376SAlexander Aring );
67092732376SAlexander Aring 
671f1d3b8f9SAlexander Aring #endif /* if !defined(_TRACE_DLM_H) || defined(TRACE_HEADER_MULTI_READ) */
672f1d3b8f9SAlexander Aring 
673f1d3b8f9SAlexander Aring /* This part must be outside protection */
674f1d3b8f9SAlexander Aring #include <trace/define_trace.h>
675