xref: /OK3568_Linux_fs/kernel/include/trace/events/afs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /* AFS tracepoints
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
5*4882a593Smuzhiyun  * Written by David Howells (dhowells@redhat.com)
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun #undef TRACE_SYSTEM
8*4882a593Smuzhiyun #define TRACE_SYSTEM afs
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #if !defined(_TRACE_AFS_H) || defined(TRACE_HEADER_MULTI_READ)
11*4882a593Smuzhiyun #define _TRACE_AFS_H
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <linux/tracepoint.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /*
16*4882a593Smuzhiyun  * Define enums for tracing information.
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun #ifndef __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
19*4882a593Smuzhiyun #define __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun enum afs_call_trace {
22*4882a593Smuzhiyun 	afs_call_trace_alloc,
23*4882a593Smuzhiyun 	afs_call_trace_free,
24*4882a593Smuzhiyun 	afs_call_trace_get,
25*4882a593Smuzhiyun 	afs_call_trace_put,
26*4882a593Smuzhiyun 	afs_call_trace_wake,
27*4882a593Smuzhiyun 	afs_call_trace_work,
28*4882a593Smuzhiyun };
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun enum afs_server_trace {
31*4882a593Smuzhiyun 	afs_server_trace_alloc,
32*4882a593Smuzhiyun 	afs_server_trace_callback,
33*4882a593Smuzhiyun 	afs_server_trace_destroy,
34*4882a593Smuzhiyun 	afs_server_trace_free,
35*4882a593Smuzhiyun 	afs_server_trace_gc,
36*4882a593Smuzhiyun 	afs_server_trace_get_by_addr,
37*4882a593Smuzhiyun 	afs_server_trace_get_by_uuid,
38*4882a593Smuzhiyun 	afs_server_trace_get_caps,
39*4882a593Smuzhiyun 	afs_server_trace_get_install,
40*4882a593Smuzhiyun 	afs_server_trace_get_new_cbi,
41*4882a593Smuzhiyun 	afs_server_trace_get_probe,
42*4882a593Smuzhiyun 	afs_server_trace_give_up_cb,
43*4882a593Smuzhiyun 	afs_server_trace_purging,
44*4882a593Smuzhiyun 	afs_server_trace_put_call,
45*4882a593Smuzhiyun 	afs_server_trace_put_cbi,
46*4882a593Smuzhiyun 	afs_server_trace_put_find_rsq,
47*4882a593Smuzhiyun 	afs_server_trace_put_probe,
48*4882a593Smuzhiyun 	afs_server_trace_put_slist,
49*4882a593Smuzhiyun 	afs_server_trace_put_slist_isort,
50*4882a593Smuzhiyun 	afs_server_trace_put_uuid_rsq,
51*4882a593Smuzhiyun 	afs_server_trace_update,
52*4882a593Smuzhiyun };
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun enum afs_volume_trace {
56*4882a593Smuzhiyun 	afs_volume_trace_alloc,
57*4882a593Smuzhiyun 	afs_volume_trace_free,
58*4882a593Smuzhiyun 	afs_volume_trace_get_alloc_sbi,
59*4882a593Smuzhiyun 	afs_volume_trace_get_cell_insert,
60*4882a593Smuzhiyun 	afs_volume_trace_get_new_op,
61*4882a593Smuzhiyun 	afs_volume_trace_get_query_alias,
62*4882a593Smuzhiyun 	afs_volume_trace_put_cell_dup,
63*4882a593Smuzhiyun 	afs_volume_trace_put_cell_root,
64*4882a593Smuzhiyun 	afs_volume_trace_put_destroy_sbi,
65*4882a593Smuzhiyun 	afs_volume_trace_put_free_fc,
66*4882a593Smuzhiyun 	afs_volume_trace_put_put_op,
67*4882a593Smuzhiyun 	afs_volume_trace_put_query_alias,
68*4882a593Smuzhiyun 	afs_volume_trace_put_validate_fc,
69*4882a593Smuzhiyun 	afs_volume_trace_remove,
70*4882a593Smuzhiyun };
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun enum afs_cell_trace {
73*4882a593Smuzhiyun 	afs_cell_trace_alloc,
74*4882a593Smuzhiyun 	afs_cell_trace_free,
75*4882a593Smuzhiyun 	afs_cell_trace_get_queue_dns,
76*4882a593Smuzhiyun 	afs_cell_trace_get_queue_manage,
77*4882a593Smuzhiyun 	afs_cell_trace_get_queue_new,
78*4882a593Smuzhiyun 	afs_cell_trace_get_vol,
79*4882a593Smuzhiyun 	afs_cell_trace_insert,
80*4882a593Smuzhiyun 	afs_cell_trace_manage,
81*4882a593Smuzhiyun 	afs_cell_trace_put_candidate,
82*4882a593Smuzhiyun 	afs_cell_trace_put_destroy,
83*4882a593Smuzhiyun 	afs_cell_trace_put_queue_fail,
84*4882a593Smuzhiyun 	afs_cell_trace_put_queue_work,
85*4882a593Smuzhiyun 	afs_cell_trace_put_vol,
86*4882a593Smuzhiyun 	afs_cell_trace_see_source,
87*4882a593Smuzhiyun 	afs_cell_trace_see_ws,
88*4882a593Smuzhiyun 	afs_cell_trace_unuse_alias,
89*4882a593Smuzhiyun 	afs_cell_trace_unuse_check_alias,
90*4882a593Smuzhiyun 	afs_cell_trace_unuse_delete,
91*4882a593Smuzhiyun 	afs_cell_trace_unuse_fc,
92*4882a593Smuzhiyun 	afs_cell_trace_unuse_lookup,
93*4882a593Smuzhiyun 	afs_cell_trace_unuse_mntpt,
94*4882a593Smuzhiyun 	afs_cell_trace_unuse_no_pin,
95*4882a593Smuzhiyun 	afs_cell_trace_unuse_parse,
96*4882a593Smuzhiyun 	afs_cell_trace_unuse_pin,
97*4882a593Smuzhiyun 	afs_cell_trace_unuse_probe,
98*4882a593Smuzhiyun 	afs_cell_trace_unuse_sbi,
99*4882a593Smuzhiyun 	afs_cell_trace_unuse_ws,
100*4882a593Smuzhiyun 	afs_cell_trace_use_alias,
101*4882a593Smuzhiyun 	afs_cell_trace_use_check_alias,
102*4882a593Smuzhiyun 	afs_cell_trace_use_fc,
103*4882a593Smuzhiyun 	afs_cell_trace_use_fc_alias,
104*4882a593Smuzhiyun 	afs_cell_trace_use_lookup,
105*4882a593Smuzhiyun 	afs_cell_trace_use_mntpt,
106*4882a593Smuzhiyun 	afs_cell_trace_use_pin,
107*4882a593Smuzhiyun 	afs_cell_trace_use_probe,
108*4882a593Smuzhiyun 	afs_cell_trace_use_sbi,
109*4882a593Smuzhiyun 	afs_cell_trace_wait,
110*4882a593Smuzhiyun };
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun enum afs_fs_operation {
113*4882a593Smuzhiyun 	afs_FS_FetchData		= 130,	/* AFS Fetch file data */
114*4882a593Smuzhiyun 	afs_FS_FetchACL			= 131,	/* AFS Fetch file ACL */
115*4882a593Smuzhiyun 	afs_FS_FetchStatus		= 132,	/* AFS Fetch file status */
116*4882a593Smuzhiyun 	afs_FS_StoreData		= 133,	/* AFS Store file data */
117*4882a593Smuzhiyun 	afs_FS_StoreACL			= 134,	/* AFS Store file ACL */
118*4882a593Smuzhiyun 	afs_FS_StoreStatus		= 135,	/* AFS Store file status */
119*4882a593Smuzhiyun 	afs_FS_RemoveFile		= 136,	/* AFS Remove a file */
120*4882a593Smuzhiyun 	afs_FS_CreateFile		= 137,	/* AFS Create a file */
121*4882a593Smuzhiyun 	afs_FS_Rename			= 138,	/* AFS Rename or move a file or directory */
122*4882a593Smuzhiyun 	afs_FS_Symlink			= 139,	/* AFS Create a symbolic link */
123*4882a593Smuzhiyun 	afs_FS_Link			= 140,	/* AFS Create a hard link */
124*4882a593Smuzhiyun 	afs_FS_MakeDir			= 141,	/* AFS Create a directory */
125*4882a593Smuzhiyun 	afs_FS_RemoveDir		= 142,	/* AFS Remove a directory */
126*4882a593Smuzhiyun 	afs_FS_GetVolumeInfo		= 148,	/* AFS Get information about a volume */
127*4882a593Smuzhiyun 	afs_FS_GetVolumeStatus		= 149,	/* AFS Get volume status information */
128*4882a593Smuzhiyun 	afs_FS_GetRootVolume		= 151,	/* AFS Get root volume name */
129*4882a593Smuzhiyun 	afs_FS_SetLock			= 156,	/* AFS Request a file lock */
130*4882a593Smuzhiyun 	afs_FS_ExtendLock		= 157,	/* AFS Extend a file lock */
131*4882a593Smuzhiyun 	afs_FS_ReleaseLock		= 158,	/* AFS Release a file lock */
132*4882a593Smuzhiyun 	afs_FS_Lookup			= 161,	/* AFS lookup file in directory */
133*4882a593Smuzhiyun 	afs_FS_InlineBulkStatus		= 65536, /* AFS Fetch multiple file statuses with errors */
134*4882a593Smuzhiyun 	afs_FS_FetchData64		= 65537, /* AFS Fetch file data */
135*4882a593Smuzhiyun 	afs_FS_StoreData64		= 65538, /* AFS Store file data */
136*4882a593Smuzhiyun 	afs_FS_GiveUpAllCallBacks	= 65539, /* AFS Give up all our callbacks on a server */
137*4882a593Smuzhiyun 	afs_FS_GetCapabilities		= 65540, /* AFS Get FS server capabilities */
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun 	yfs_FS_FetchData		= 130,	 /* YFS Fetch file data */
140*4882a593Smuzhiyun 	yfs_FS_FetchACL			= 64131, /* YFS Fetch file ACL */
141*4882a593Smuzhiyun 	yfs_FS_FetchStatus		= 64132, /* YFS Fetch file status */
142*4882a593Smuzhiyun 	yfs_FS_StoreACL			= 64134, /* YFS Store file ACL */
143*4882a593Smuzhiyun 	yfs_FS_StoreStatus		= 64135, /* YFS Store file status */
144*4882a593Smuzhiyun 	yfs_FS_RemoveFile		= 64136, /* YFS Remove a file */
145*4882a593Smuzhiyun 	yfs_FS_CreateFile		= 64137, /* YFS Create a file */
146*4882a593Smuzhiyun 	yfs_FS_Rename			= 64138, /* YFS Rename or move a file or directory */
147*4882a593Smuzhiyun 	yfs_FS_Symlink			= 64139, /* YFS Create a symbolic link */
148*4882a593Smuzhiyun 	yfs_FS_Link			= 64140, /* YFS Create a hard link */
149*4882a593Smuzhiyun 	yfs_FS_MakeDir			= 64141, /* YFS Create a directory */
150*4882a593Smuzhiyun 	yfs_FS_RemoveDir		= 64142, /* YFS Remove a directory */
151*4882a593Smuzhiyun 	yfs_FS_GetVolumeStatus		= 64149, /* YFS Get volume status information */
152*4882a593Smuzhiyun 	yfs_FS_SetVolumeStatus		= 64150, /* YFS Set volume status information */
153*4882a593Smuzhiyun 	yfs_FS_SetLock			= 64156, /* YFS Request a file lock */
154*4882a593Smuzhiyun 	yfs_FS_ExtendLock		= 64157, /* YFS Extend a file lock */
155*4882a593Smuzhiyun 	yfs_FS_ReleaseLock		= 64158, /* YFS Release a file lock */
156*4882a593Smuzhiyun 	yfs_FS_Lookup			= 64161, /* YFS lookup file in directory */
157*4882a593Smuzhiyun 	yfs_FS_FlushCPS			= 64165,
158*4882a593Smuzhiyun 	yfs_FS_FetchOpaqueACL		= 64168,
159*4882a593Smuzhiyun 	yfs_FS_WhoAmI			= 64170,
160*4882a593Smuzhiyun 	yfs_FS_RemoveACL		= 64171,
161*4882a593Smuzhiyun 	yfs_FS_RemoveFile2		= 64173,
162*4882a593Smuzhiyun 	yfs_FS_StoreOpaqueACL2		= 64174,
163*4882a593Smuzhiyun 	yfs_FS_InlineBulkStatus		= 64536, /* YFS Fetch multiple file statuses with errors */
164*4882a593Smuzhiyun 	yfs_FS_FetchData64		= 64537, /* YFS Fetch file data */
165*4882a593Smuzhiyun 	yfs_FS_StoreData64		= 64538, /* YFS Store file data */
166*4882a593Smuzhiyun 	yfs_FS_UpdateSymlink		= 64540,
167*4882a593Smuzhiyun };
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun enum afs_vl_operation {
170*4882a593Smuzhiyun 	afs_VL_GetEntryByNameU	= 527,		/* AFS Get Vol Entry By Name operation ID */
171*4882a593Smuzhiyun 	afs_VL_GetAddrsU	= 533,		/* AFS Get FS server addresses */
172*4882a593Smuzhiyun 	afs_YFSVL_GetEndpoints	= 64002,	/* YFS Get FS & Vol server addresses */
173*4882a593Smuzhiyun 	afs_YFSVL_GetCellName	= 64014,	/* YFS Get actual cell name */
174*4882a593Smuzhiyun 	afs_VL_GetCapabilities	= 65537,	/* AFS Get VL server capabilities */
175*4882a593Smuzhiyun };
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun enum afs_cm_operation {
178*4882a593Smuzhiyun 	afs_CB_CallBack			= 204,	/* AFS break callback promises */
179*4882a593Smuzhiyun 	afs_CB_InitCallBackState	= 205,	/* AFS initialise callback state */
180*4882a593Smuzhiyun 	afs_CB_Probe			= 206,	/* AFS probe client */
181*4882a593Smuzhiyun 	afs_CB_GetLock			= 207,	/* AFS get contents of CM lock table */
182*4882a593Smuzhiyun 	afs_CB_GetCE			= 208,	/* AFS get cache file description */
183*4882a593Smuzhiyun 	afs_CB_GetXStatsVersion		= 209,	/* AFS get version of extended statistics */
184*4882a593Smuzhiyun 	afs_CB_GetXStats		= 210,	/* AFS get contents of extended statistics data */
185*4882a593Smuzhiyun 	afs_CB_InitCallBackState3	= 213,	/* AFS initialise callback state, version 3 */
186*4882a593Smuzhiyun 	afs_CB_ProbeUuid		= 214,	/* AFS check the client hasn't rebooted */
187*4882a593Smuzhiyun };
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun enum yfs_cm_operation {
190*4882a593Smuzhiyun 	yfs_CB_Probe			= 206,	/* YFS probe client */
191*4882a593Smuzhiyun 	yfs_CB_GetLock			= 207,	/* YFS get contents of CM lock table */
192*4882a593Smuzhiyun 	yfs_CB_XStatsVersion		= 209,	/* YFS get version of extended statistics */
193*4882a593Smuzhiyun 	yfs_CB_GetXStats		= 210,	/* YFS get contents of extended statistics data */
194*4882a593Smuzhiyun 	yfs_CB_InitCallBackState3	= 213,	/* YFS initialise callback state, version 3 */
195*4882a593Smuzhiyun 	yfs_CB_ProbeUuid		= 214,	/* YFS check the client hasn't rebooted */
196*4882a593Smuzhiyun 	yfs_CB_GetServerPrefs		= 215,
197*4882a593Smuzhiyun 	yfs_CB_GetCellServDV		= 216,
198*4882a593Smuzhiyun 	yfs_CB_GetLocalCell		= 217,
199*4882a593Smuzhiyun 	yfs_CB_GetCacheConfig		= 218,
200*4882a593Smuzhiyun 	yfs_CB_GetCellByNum		= 65537,
201*4882a593Smuzhiyun 	yfs_CB_TellMeAboutYourself	= 65538, /* get client capabilities */
202*4882a593Smuzhiyun 	yfs_CB_CallBack			= 64204,
203*4882a593Smuzhiyun };
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun enum afs_edit_dir_op {
206*4882a593Smuzhiyun 	afs_edit_dir_create,
207*4882a593Smuzhiyun 	afs_edit_dir_create_error,
208*4882a593Smuzhiyun 	afs_edit_dir_create_inval,
209*4882a593Smuzhiyun 	afs_edit_dir_create_nospc,
210*4882a593Smuzhiyun 	afs_edit_dir_delete,
211*4882a593Smuzhiyun 	afs_edit_dir_delete_error,
212*4882a593Smuzhiyun 	afs_edit_dir_delete_inval,
213*4882a593Smuzhiyun 	afs_edit_dir_delete_noent,
214*4882a593Smuzhiyun };
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun enum afs_edit_dir_reason {
217*4882a593Smuzhiyun 	afs_edit_dir_for_create,
218*4882a593Smuzhiyun 	afs_edit_dir_for_link,
219*4882a593Smuzhiyun 	afs_edit_dir_for_mkdir,
220*4882a593Smuzhiyun 	afs_edit_dir_for_rename_0,
221*4882a593Smuzhiyun 	afs_edit_dir_for_rename_1,
222*4882a593Smuzhiyun 	afs_edit_dir_for_rename_2,
223*4882a593Smuzhiyun 	afs_edit_dir_for_rmdir,
224*4882a593Smuzhiyun 	afs_edit_dir_for_silly_0,
225*4882a593Smuzhiyun 	afs_edit_dir_for_silly_1,
226*4882a593Smuzhiyun 	afs_edit_dir_for_symlink,
227*4882a593Smuzhiyun 	afs_edit_dir_for_unlink,
228*4882a593Smuzhiyun };
229*4882a593Smuzhiyun 
230*4882a593Smuzhiyun enum afs_eproto_cause {
231*4882a593Smuzhiyun 	afs_eproto_bad_status,
232*4882a593Smuzhiyun 	afs_eproto_cb_count,
233*4882a593Smuzhiyun 	afs_eproto_cb_fid_count,
234*4882a593Smuzhiyun 	afs_eproto_cellname_len,
235*4882a593Smuzhiyun 	afs_eproto_file_type,
236*4882a593Smuzhiyun 	afs_eproto_ibulkst_cb_count,
237*4882a593Smuzhiyun 	afs_eproto_ibulkst_count,
238*4882a593Smuzhiyun 	afs_eproto_motd_len,
239*4882a593Smuzhiyun 	afs_eproto_offline_msg_len,
240*4882a593Smuzhiyun 	afs_eproto_volname_len,
241*4882a593Smuzhiyun 	afs_eproto_yvl_fsendpt4_len,
242*4882a593Smuzhiyun 	afs_eproto_yvl_fsendpt6_len,
243*4882a593Smuzhiyun 	afs_eproto_yvl_fsendpt_num,
244*4882a593Smuzhiyun 	afs_eproto_yvl_fsendpt_type,
245*4882a593Smuzhiyun 	afs_eproto_yvl_vlendpt4_len,
246*4882a593Smuzhiyun 	afs_eproto_yvl_vlendpt6_len,
247*4882a593Smuzhiyun 	afs_eproto_yvl_vlendpt_type,
248*4882a593Smuzhiyun };
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun enum afs_io_error {
251*4882a593Smuzhiyun 	afs_io_error_cm_reply,
252*4882a593Smuzhiyun 	afs_io_error_extract,
253*4882a593Smuzhiyun 	afs_io_error_fs_probe_fail,
254*4882a593Smuzhiyun 	afs_io_error_vl_lookup_fail,
255*4882a593Smuzhiyun 	afs_io_error_vl_probe_fail,
256*4882a593Smuzhiyun };
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun enum afs_file_error {
259*4882a593Smuzhiyun 	afs_file_error_dir_bad_magic,
260*4882a593Smuzhiyun 	afs_file_error_dir_big,
261*4882a593Smuzhiyun 	afs_file_error_dir_missing_page,
262*4882a593Smuzhiyun 	afs_file_error_dir_over_end,
263*4882a593Smuzhiyun 	afs_file_error_dir_small,
264*4882a593Smuzhiyun 	afs_file_error_dir_unmarked_ext,
265*4882a593Smuzhiyun 	afs_file_error_mntpt,
266*4882a593Smuzhiyun 	afs_file_error_writeback_fail,
267*4882a593Smuzhiyun };
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun enum afs_flock_event {
270*4882a593Smuzhiyun 	afs_flock_acquired,
271*4882a593Smuzhiyun 	afs_flock_callback_break,
272*4882a593Smuzhiyun 	afs_flock_defer_unlock,
273*4882a593Smuzhiyun 	afs_flock_extend_fail,
274*4882a593Smuzhiyun 	afs_flock_fail_other,
275*4882a593Smuzhiyun 	afs_flock_fail_perm,
276*4882a593Smuzhiyun 	afs_flock_no_lockers,
277*4882a593Smuzhiyun 	afs_flock_release_fail,
278*4882a593Smuzhiyun 	afs_flock_silly_delete,
279*4882a593Smuzhiyun 	afs_flock_timestamp,
280*4882a593Smuzhiyun 	afs_flock_try_to_lock,
281*4882a593Smuzhiyun 	afs_flock_vfs_lock,
282*4882a593Smuzhiyun 	afs_flock_vfs_locking,
283*4882a593Smuzhiyun 	afs_flock_waited,
284*4882a593Smuzhiyun 	afs_flock_waiting,
285*4882a593Smuzhiyun 	afs_flock_work_extending,
286*4882a593Smuzhiyun 	afs_flock_work_retry,
287*4882a593Smuzhiyun 	afs_flock_work_unlocking,
288*4882a593Smuzhiyun 	afs_flock_would_block,
289*4882a593Smuzhiyun };
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun enum afs_flock_operation {
292*4882a593Smuzhiyun 	afs_flock_op_copy_lock,
293*4882a593Smuzhiyun 	afs_flock_op_flock,
294*4882a593Smuzhiyun 	afs_flock_op_grant,
295*4882a593Smuzhiyun 	afs_flock_op_lock,
296*4882a593Smuzhiyun 	afs_flock_op_release_lock,
297*4882a593Smuzhiyun 	afs_flock_op_return_ok,
298*4882a593Smuzhiyun 	afs_flock_op_return_eagain,
299*4882a593Smuzhiyun 	afs_flock_op_return_edeadlk,
300*4882a593Smuzhiyun 	afs_flock_op_return_error,
301*4882a593Smuzhiyun 	afs_flock_op_set_lock,
302*4882a593Smuzhiyun 	afs_flock_op_unlock,
303*4882a593Smuzhiyun 	afs_flock_op_wake,
304*4882a593Smuzhiyun };
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun enum afs_cb_break_reason {
307*4882a593Smuzhiyun 	afs_cb_break_no_break,
308*4882a593Smuzhiyun 	afs_cb_break_for_callback,
309*4882a593Smuzhiyun 	afs_cb_break_for_deleted,
310*4882a593Smuzhiyun 	afs_cb_break_for_lapsed,
311*4882a593Smuzhiyun 	afs_cb_break_for_unlink,
312*4882a593Smuzhiyun 	afs_cb_break_for_vsbreak,
313*4882a593Smuzhiyun 	afs_cb_break_for_volume_callback,
314*4882a593Smuzhiyun 	afs_cb_break_for_zap,
315*4882a593Smuzhiyun };
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun #endif /* end __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY */
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun /*
320*4882a593Smuzhiyun  * Declare tracing information enums and their string mappings for display.
321*4882a593Smuzhiyun  */
322*4882a593Smuzhiyun #define afs_call_traces \
323*4882a593Smuzhiyun 	EM(afs_call_trace_alloc,		"ALLOC") \
324*4882a593Smuzhiyun 	EM(afs_call_trace_free,			"FREE ") \
325*4882a593Smuzhiyun 	EM(afs_call_trace_get,			"GET  ") \
326*4882a593Smuzhiyun 	EM(afs_call_trace_put,			"PUT  ") \
327*4882a593Smuzhiyun 	EM(afs_call_trace_wake,			"WAKE ") \
328*4882a593Smuzhiyun 	E_(afs_call_trace_work,			"QUEUE")
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun #define afs_server_traces \
331*4882a593Smuzhiyun 	EM(afs_server_trace_alloc,		"ALLOC    ") \
332*4882a593Smuzhiyun 	EM(afs_server_trace_callback,		"CALLBACK ") \
333*4882a593Smuzhiyun 	EM(afs_server_trace_destroy,		"DESTROY  ") \
334*4882a593Smuzhiyun 	EM(afs_server_trace_free,		"FREE     ") \
335*4882a593Smuzhiyun 	EM(afs_server_trace_gc,			"GC       ") \
336*4882a593Smuzhiyun 	EM(afs_server_trace_get_by_addr,	"GET addr ") \
337*4882a593Smuzhiyun 	EM(afs_server_trace_get_by_uuid,	"GET uuid ") \
338*4882a593Smuzhiyun 	EM(afs_server_trace_get_caps,		"GET caps ") \
339*4882a593Smuzhiyun 	EM(afs_server_trace_get_install,	"GET inst ") \
340*4882a593Smuzhiyun 	EM(afs_server_trace_get_new_cbi,	"GET cbi  ") \
341*4882a593Smuzhiyun 	EM(afs_server_trace_get_probe,		"GET probe") \
342*4882a593Smuzhiyun 	EM(afs_server_trace_give_up_cb,		"giveup-cb") \
343*4882a593Smuzhiyun 	EM(afs_server_trace_purging,		"PURGE    ") \
344*4882a593Smuzhiyun 	EM(afs_server_trace_put_call,		"PUT call ") \
345*4882a593Smuzhiyun 	EM(afs_server_trace_put_cbi,		"PUT cbi  ") \
346*4882a593Smuzhiyun 	EM(afs_server_trace_put_find_rsq,	"PUT f-rsq") \
347*4882a593Smuzhiyun 	EM(afs_server_trace_put_probe,		"PUT probe") \
348*4882a593Smuzhiyun 	EM(afs_server_trace_put_slist,		"PUT slist") \
349*4882a593Smuzhiyun 	EM(afs_server_trace_put_slist_isort,	"PUT isort") \
350*4882a593Smuzhiyun 	EM(afs_server_trace_put_uuid_rsq,	"PUT u-req") \
351*4882a593Smuzhiyun 	E_(afs_server_trace_update,		"UPDATE")
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun #define afs_volume_traces \
354*4882a593Smuzhiyun 	EM(afs_volume_trace_alloc,		"ALLOC         ") \
355*4882a593Smuzhiyun 	EM(afs_volume_trace_free,		"FREE          ") \
356*4882a593Smuzhiyun 	EM(afs_volume_trace_get_alloc_sbi,	"GET sbi-alloc ") \
357*4882a593Smuzhiyun 	EM(afs_volume_trace_get_cell_insert,	"GET cell-insrt") \
358*4882a593Smuzhiyun 	EM(afs_volume_trace_get_new_op,		"GET op-new    ") \
359*4882a593Smuzhiyun 	EM(afs_volume_trace_get_query_alias,	"GET cell-alias") \
360*4882a593Smuzhiyun 	EM(afs_volume_trace_put_cell_dup,	"PUT cell-dup  ") \
361*4882a593Smuzhiyun 	EM(afs_volume_trace_put_cell_root,	"PUT cell-root ") \
362*4882a593Smuzhiyun 	EM(afs_volume_trace_put_destroy_sbi,	"PUT sbi-destry") \
363*4882a593Smuzhiyun 	EM(afs_volume_trace_put_free_fc,	"PUT fc-free   ") \
364*4882a593Smuzhiyun 	EM(afs_volume_trace_put_put_op,		"PUT op-put    ") \
365*4882a593Smuzhiyun 	EM(afs_volume_trace_put_query_alias,	"PUT cell-alias") \
366*4882a593Smuzhiyun 	EM(afs_volume_trace_put_validate_fc,	"PUT fc-validat") \
367*4882a593Smuzhiyun 	E_(afs_volume_trace_remove,		"REMOVE        ")
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun #define afs_cell_traces \
370*4882a593Smuzhiyun 	EM(afs_cell_trace_alloc,		"ALLOC     ") \
371*4882a593Smuzhiyun 	EM(afs_cell_trace_free,			"FREE      ") \
372*4882a593Smuzhiyun 	EM(afs_cell_trace_get_queue_dns,	"GET q-dns ") \
373*4882a593Smuzhiyun 	EM(afs_cell_trace_get_queue_manage,	"GET q-mng ") \
374*4882a593Smuzhiyun 	EM(afs_cell_trace_get_queue_new,	"GET q-new ") \
375*4882a593Smuzhiyun 	EM(afs_cell_trace_get_vol,		"GET vol   ") \
376*4882a593Smuzhiyun 	EM(afs_cell_trace_insert,		"INSERT    ") \
377*4882a593Smuzhiyun 	EM(afs_cell_trace_manage,		"MANAGE    ") \
378*4882a593Smuzhiyun 	EM(afs_cell_trace_put_candidate,	"PUT candid") \
379*4882a593Smuzhiyun 	EM(afs_cell_trace_put_destroy,		"PUT destry") \
380*4882a593Smuzhiyun 	EM(afs_cell_trace_put_queue_work,	"PUT q-work") \
381*4882a593Smuzhiyun 	EM(afs_cell_trace_put_queue_fail,	"PUT q-fail") \
382*4882a593Smuzhiyun 	EM(afs_cell_trace_put_vol,		"PUT vol   ") \
383*4882a593Smuzhiyun 	EM(afs_cell_trace_see_source,		"SEE source") \
384*4882a593Smuzhiyun 	EM(afs_cell_trace_see_ws,		"SEE ws    ") \
385*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_alias,		"UNU alias ") \
386*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_check_alias,	"UNU chk-al") \
387*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_delete,		"UNU delete") \
388*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_fc,		"UNU fc    ") \
389*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_lookup,		"UNU lookup") \
390*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_mntpt,		"UNU mntpt ") \
391*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_parse,		"UNU parse ") \
392*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_pin,		"UNU pin   ") \
393*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_probe,		"UNU probe ") \
394*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_sbi,		"UNU sbi   ") \
395*4882a593Smuzhiyun 	EM(afs_cell_trace_unuse_ws,		"UNU ws    ") \
396*4882a593Smuzhiyun 	EM(afs_cell_trace_use_alias,		"USE alias ") \
397*4882a593Smuzhiyun 	EM(afs_cell_trace_use_check_alias,	"USE chk-al") \
398*4882a593Smuzhiyun 	EM(afs_cell_trace_use_fc,		"USE fc    ") \
399*4882a593Smuzhiyun 	EM(afs_cell_trace_use_fc_alias,		"USE fc-al ") \
400*4882a593Smuzhiyun 	EM(afs_cell_trace_use_lookup,		"USE lookup") \
401*4882a593Smuzhiyun 	EM(afs_cell_trace_use_mntpt,		"USE mntpt ") \
402*4882a593Smuzhiyun 	EM(afs_cell_trace_use_pin,		"USE pin   ") \
403*4882a593Smuzhiyun 	EM(afs_cell_trace_use_probe,		"USE probe ") \
404*4882a593Smuzhiyun 	EM(afs_cell_trace_use_sbi,		"USE sbi   ") \
405*4882a593Smuzhiyun 	E_(afs_cell_trace_wait,			"WAIT      ")
406*4882a593Smuzhiyun 
407*4882a593Smuzhiyun #define afs_fs_operations \
408*4882a593Smuzhiyun 	EM(afs_FS_FetchData,			"FS.FetchData") \
409*4882a593Smuzhiyun 	EM(afs_FS_FetchStatus,			"FS.FetchStatus") \
410*4882a593Smuzhiyun 	EM(afs_FS_StoreData,			"FS.StoreData") \
411*4882a593Smuzhiyun 	EM(afs_FS_StoreStatus,			"FS.StoreStatus") \
412*4882a593Smuzhiyun 	EM(afs_FS_RemoveFile,			"FS.RemoveFile") \
413*4882a593Smuzhiyun 	EM(afs_FS_CreateFile,			"FS.CreateFile") \
414*4882a593Smuzhiyun 	EM(afs_FS_Rename,			"FS.Rename") \
415*4882a593Smuzhiyun 	EM(afs_FS_Symlink,			"FS.Symlink") \
416*4882a593Smuzhiyun 	EM(afs_FS_Link,				"FS.Link") \
417*4882a593Smuzhiyun 	EM(afs_FS_MakeDir,			"FS.MakeDir") \
418*4882a593Smuzhiyun 	EM(afs_FS_RemoveDir,			"FS.RemoveDir") \
419*4882a593Smuzhiyun 	EM(afs_FS_GetVolumeInfo,		"FS.GetVolumeInfo") \
420*4882a593Smuzhiyun 	EM(afs_FS_GetVolumeStatus,		"FS.GetVolumeStatus") \
421*4882a593Smuzhiyun 	EM(afs_FS_GetRootVolume,		"FS.GetRootVolume") \
422*4882a593Smuzhiyun 	EM(afs_FS_SetLock,			"FS.SetLock") \
423*4882a593Smuzhiyun 	EM(afs_FS_ExtendLock,			"FS.ExtendLock") \
424*4882a593Smuzhiyun 	EM(afs_FS_ReleaseLock,			"FS.ReleaseLock") \
425*4882a593Smuzhiyun 	EM(afs_FS_Lookup,			"FS.Lookup") \
426*4882a593Smuzhiyun 	EM(afs_FS_InlineBulkStatus,		"FS.InlineBulkStatus") \
427*4882a593Smuzhiyun 	EM(afs_FS_FetchData64,			"FS.FetchData64") \
428*4882a593Smuzhiyun 	EM(afs_FS_StoreData64,			"FS.StoreData64") \
429*4882a593Smuzhiyun 	EM(afs_FS_GiveUpAllCallBacks,		"FS.GiveUpAllCallBacks") \
430*4882a593Smuzhiyun 	EM(afs_FS_GetCapabilities,		"FS.GetCapabilities") \
431*4882a593Smuzhiyun 	EM(yfs_FS_FetchACL,			"YFS.FetchACL") \
432*4882a593Smuzhiyun 	EM(yfs_FS_FetchStatus,			"YFS.FetchStatus") \
433*4882a593Smuzhiyun 	EM(yfs_FS_StoreACL,			"YFS.StoreACL") \
434*4882a593Smuzhiyun 	EM(yfs_FS_StoreStatus,			"YFS.StoreStatus") \
435*4882a593Smuzhiyun 	EM(yfs_FS_RemoveFile,			"YFS.RemoveFile") \
436*4882a593Smuzhiyun 	EM(yfs_FS_CreateFile,			"YFS.CreateFile") \
437*4882a593Smuzhiyun 	EM(yfs_FS_Rename,			"YFS.Rename") \
438*4882a593Smuzhiyun 	EM(yfs_FS_Symlink,			"YFS.Symlink") \
439*4882a593Smuzhiyun 	EM(yfs_FS_Link,				"YFS.Link") \
440*4882a593Smuzhiyun 	EM(yfs_FS_MakeDir,			"YFS.MakeDir") \
441*4882a593Smuzhiyun 	EM(yfs_FS_RemoveDir,			"YFS.RemoveDir") \
442*4882a593Smuzhiyun 	EM(yfs_FS_GetVolumeStatus,		"YFS.GetVolumeStatus") \
443*4882a593Smuzhiyun 	EM(yfs_FS_SetVolumeStatus,		"YFS.SetVolumeStatus") \
444*4882a593Smuzhiyun 	EM(yfs_FS_SetLock,			"YFS.SetLock") \
445*4882a593Smuzhiyun 	EM(yfs_FS_ExtendLock,			"YFS.ExtendLock") \
446*4882a593Smuzhiyun 	EM(yfs_FS_ReleaseLock,			"YFS.ReleaseLock") \
447*4882a593Smuzhiyun 	EM(yfs_FS_Lookup,			"YFS.Lookup") \
448*4882a593Smuzhiyun 	EM(yfs_FS_FlushCPS,			"YFS.FlushCPS") \
449*4882a593Smuzhiyun 	EM(yfs_FS_FetchOpaqueACL,		"YFS.FetchOpaqueACL") \
450*4882a593Smuzhiyun 	EM(yfs_FS_WhoAmI,			"YFS.WhoAmI") \
451*4882a593Smuzhiyun 	EM(yfs_FS_RemoveACL,			"YFS.RemoveACL") \
452*4882a593Smuzhiyun 	EM(yfs_FS_RemoveFile2,			"YFS.RemoveFile2") \
453*4882a593Smuzhiyun 	EM(yfs_FS_StoreOpaqueACL2,		"YFS.StoreOpaqueACL2") \
454*4882a593Smuzhiyun 	EM(yfs_FS_InlineBulkStatus,		"YFS.InlineBulkStatus") \
455*4882a593Smuzhiyun 	EM(yfs_FS_FetchData64,			"YFS.FetchData64") \
456*4882a593Smuzhiyun 	EM(yfs_FS_StoreData64,			"YFS.StoreData64") \
457*4882a593Smuzhiyun 	E_(yfs_FS_UpdateSymlink,		"YFS.UpdateSymlink")
458*4882a593Smuzhiyun 
459*4882a593Smuzhiyun #define afs_vl_operations \
460*4882a593Smuzhiyun 	EM(afs_VL_GetEntryByNameU,		"VL.GetEntryByNameU") \
461*4882a593Smuzhiyun 	EM(afs_VL_GetAddrsU,			"VL.GetAddrsU") \
462*4882a593Smuzhiyun 	EM(afs_YFSVL_GetEndpoints,		"YFSVL.GetEndpoints") \
463*4882a593Smuzhiyun 	EM(afs_YFSVL_GetCellName,		"YFSVL.GetCellName") \
464*4882a593Smuzhiyun 	E_(afs_VL_GetCapabilities,		"VL.GetCapabilities")
465*4882a593Smuzhiyun 
466*4882a593Smuzhiyun #define afs_cm_operations \
467*4882a593Smuzhiyun 	EM(afs_CB_CallBack,			"CB.CallBack") \
468*4882a593Smuzhiyun 	EM(afs_CB_InitCallBackState,		"CB.InitCallBackState") \
469*4882a593Smuzhiyun 	EM(afs_CB_Probe,			"CB.Probe") \
470*4882a593Smuzhiyun 	EM(afs_CB_GetLock,			"CB.GetLock") \
471*4882a593Smuzhiyun 	EM(afs_CB_GetCE,			"CB.GetCE") \
472*4882a593Smuzhiyun 	EM(afs_CB_GetXStatsVersion,		"CB.GetXStatsVersion") \
473*4882a593Smuzhiyun 	EM(afs_CB_GetXStats,			"CB.GetXStats") \
474*4882a593Smuzhiyun 	EM(afs_CB_InitCallBackState3,		"CB.InitCallBackState3") \
475*4882a593Smuzhiyun 	E_(afs_CB_ProbeUuid,			"CB.ProbeUuid")
476*4882a593Smuzhiyun 
477*4882a593Smuzhiyun #define yfs_cm_operations \
478*4882a593Smuzhiyun 	EM(yfs_CB_Probe,			"YFSCB.Probe") \
479*4882a593Smuzhiyun 	EM(yfs_CB_GetLock,			"YFSCB.GetLock") \
480*4882a593Smuzhiyun 	EM(yfs_CB_XStatsVersion,		"YFSCB.XStatsVersion") \
481*4882a593Smuzhiyun 	EM(yfs_CB_GetXStats,			"YFSCB.GetXStats") \
482*4882a593Smuzhiyun 	EM(yfs_CB_InitCallBackState3,		"YFSCB.InitCallBackState3") \
483*4882a593Smuzhiyun 	EM(yfs_CB_ProbeUuid,			"YFSCB.ProbeUuid") \
484*4882a593Smuzhiyun 	EM(yfs_CB_GetServerPrefs,		"YFSCB.GetServerPrefs") \
485*4882a593Smuzhiyun 	EM(yfs_CB_GetCellServDV,		"YFSCB.GetCellServDV") \
486*4882a593Smuzhiyun 	EM(yfs_CB_GetLocalCell,			"YFSCB.GetLocalCell") \
487*4882a593Smuzhiyun 	EM(yfs_CB_GetCacheConfig,		"YFSCB.GetCacheConfig") \
488*4882a593Smuzhiyun 	EM(yfs_CB_GetCellByNum,			"YFSCB.GetCellByNum") \
489*4882a593Smuzhiyun 	EM(yfs_CB_TellMeAboutYourself,		"YFSCB.TellMeAboutYourself") \
490*4882a593Smuzhiyun 	E_(yfs_CB_CallBack,			"YFSCB.CallBack")
491*4882a593Smuzhiyun 
492*4882a593Smuzhiyun #define afs_edit_dir_ops				  \
493*4882a593Smuzhiyun 	EM(afs_edit_dir_create,			"create") \
494*4882a593Smuzhiyun 	EM(afs_edit_dir_create_error,		"c_fail") \
495*4882a593Smuzhiyun 	EM(afs_edit_dir_create_inval,		"c_invl") \
496*4882a593Smuzhiyun 	EM(afs_edit_dir_create_nospc,		"c_nspc") \
497*4882a593Smuzhiyun 	EM(afs_edit_dir_delete,			"delete") \
498*4882a593Smuzhiyun 	EM(afs_edit_dir_delete_error,		"d_err ") \
499*4882a593Smuzhiyun 	EM(afs_edit_dir_delete_inval,		"d_invl") \
500*4882a593Smuzhiyun 	E_(afs_edit_dir_delete_noent,		"d_nent")
501*4882a593Smuzhiyun 
502*4882a593Smuzhiyun #define afs_edit_dir_reasons				  \
503*4882a593Smuzhiyun 	EM(afs_edit_dir_for_create,		"Create") \
504*4882a593Smuzhiyun 	EM(afs_edit_dir_for_link,		"Link  ") \
505*4882a593Smuzhiyun 	EM(afs_edit_dir_for_mkdir,		"MkDir ") \
506*4882a593Smuzhiyun 	EM(afs_edit_dir_for_rename_0,		"Renam0") \
507*4882a593Smuzhiyun 	EM(afs_edit_dir_for_rename_1,		"Renam1") \
508*4882a593Smuzhiyun 	EM(afs_edit_dir_for_rename_2,		"Renam2") \
509*4882a593Smuzhiyun 	EM(afs_edit_dir_for_rmdir,		"RmDir ") \
510*4882a593Smuzhiyun 	EM(afs_edit_dir_for_silly_0,		"S_Ren0") \
511*4882a593Smuzhiyun 	EM(afs_edit_dir_for_silly_1,		"S_Ren1") \
512*4882a593Smuzhiyun 	EM(afs_edit_dir_for_symlink,		"Symlnk") \
513*4882a593Smuzhiyun 	E_(afs_edit_dir_for_unlink,		"Unlink")
514*4882a593Smuzhiyun 
515*4882a593Smuzhiyun #define afs_eproto_causes			\
516*4882a593Smuzhiyun 	EM(afs_eproto_bad_status,	"BadStatus") \
517*4882a593Smuzhiyun 	EM(afs_eproto_cb_count,		"CbCount") \
518*4882a593Smuzhiyun 	EM(afs_eproto_cb_fid_count,	"CbFidCount") \
519*4882a593Smuzhiyun 	EM(afs_eproto_cellname_len,	"CellNameLen") \
520*4882a593Smuzhiyun 	EM(afs_eproto_file_type,	"FileTYpe") \
521*4882a593Smuzhiyun 	EM(afs_eproto_ibulkst_cb_count,	"IBS.CbCount") \
522*4882a593Smuzhiyun 	EM(afs_eproto_ibulkst_count,	"IBS.FidCount") \
523*4882a593Smuzhiyun 	EM(afs_eproto_motd_len,		"MotdLen") \
524*4882a593Smuzhiyun 	EM(afs_eproto_offline_msg_len,	"OfflineMsgLen") \
525*4882a593Smuzhiyun 	EM(afs_eproto_volname_len,	"VolNameLen") \
526*4882a593Smuzhiyun 	EM(afs_eproto_yvl_fsendpt4_len,	"YVL.FsEnd4Len") \
527*4882a593Smuzhiyun 	EM(afs_eproto_yvl_fsendpt6_len,	"YVL.FsEnd6Len") \
528*4882a593Smuzhiyun 	EM(afs_eproto_yvl_fsendpt_num,	"YVL.FsEndCount") \
529*4882a593Smuzhiyun 	EM(afs_eproto_yvl_fsendpt_type,	"YVL.FsEndType") \
530*4882a593Smuzhiyun 	EM(afs_eproto_yvl_vlendpt4_len,	"YVL.VlEnd4Len") \
531*4882a593Smuzhiyun 	EM(afs_eproto_yvl_vlendpt6_len,	"YVL.VlEnd6Len") \
532*4882a593Smuzhiyun 	E_(afs_eproto_yvl_vlendpt_type,	"YVL.VlEndType")
533*4882a593Smuzhiyun 
534*4882a593Smuzhiyun #define afs_io_errors							\
535*4882a593Smuzhiyun 	EM(afs_io_error_cm_reply,		"CM_REPLY")		\
536*4882a593Smuzhiyun 	EM(afs_io_error_extract,		"EXTRACT")		\
537*4882a593Smuzhiyun 	EM(afs_io_error_fs_probe_fail,		"FS_PROBE_FAIL")	\
538*4882a593Smuzhiyun 	EM(afs_io_error_vl_lookup_fail,		"VL_LOOKUP_FAIL")	\
539*4882a593Smuzhiyun 	E_(afs_io_error_vl_probe_fail,		"VL_PROBE_FAIL")
540*4882a593Smuzhiyun 
541*4882a593Smuzhiyun #define afs_file_errors							\
542*4882a593Smuzhiyun 	EM(afs_file_error_dir_bad_magic,	"DIR_BAD_MAGIC")	\
543*4882a593Smuzhiyun 	EM(afs_file_error_dir_big,		"DIR_BIG")		\
544*4882a593Smuzhiyun 	EM(afs_file_error_dir_missing_page,	"DIR_MISSING_PAGE")	\
545*4882a593Smuzhiyun 	EM(afs_file_error_dir_over_end,		"DIR_ENT_OVER_END")	\
546*4882a593Smuzhiyun 	EM(afs_file_error_dir_small,		"DIR_SMALL")		\
547*4882a593Smuzhiyun 	EM(afs_file_error_dir_unmarked_ext,	"DIR_UNMARKED_EXT")	\
548*4882a593Smuzhiyun 	EM(afs_file_error_mntpt,		"MNTPT_READ_FAILED")	\
549*4882a593Smuzhiyun 	E_(afs_file_error_writeback_fail,	"WRITEBACK_FAILED")
550*4882a593Smuzhiyun 
551*4882a593Smuzhiyun #define afs_flock_types							\
552*4882a593Smuzhiyun 	EM(F_RDLCK,				"RDLCK")		\
553*4882a593Smuzhiyun 	EM(F_WRLCK,				"WRLCK")		\
554*4882a593Smuzhiyun 	E_(F_UNLCK,				"UNLCK")
555*4882a593Smuzhiyun 
556*4882a593Smuzhiyun #define afs_flock_states						\
557*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_NONE,			"NONE")			\
558*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_WAITING_FOR_CB,	"WAIT_FOR_CB")		\
559*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_SETTING,		"SETTING")		\
560*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_GRANTED,		"GRANTED")		\
561*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_EXTENDING,		"EXTENDING")		\
562*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_NEED_UNLOCK,		"NEED_UNLOCK")		\
563*4882a593Smuzhiyun 	EM(AFS_VNODE_LOCK_UNLOCKING,		"UNLOCKING")		\
564*4882a593Smuzhiyun 	E_(AFS_VNODE_LOCK_DELETED,		"DELETED")
565*4882a593Smuzhiyun 
566*4882a593Smuzhiyun #define afs_flock_events						\
567*4882a593Smuzhiyun 	EM(afs_flock_acquired,			"Acquired")		\
568*4882a593Smuzhiyun 	EM(afs_flock_callback_break,		"Callback")		\
569*4882a593Smuzhiyun 	EM(afs_flock_defer_unlock,		"D-Unlock")		\
570*4882a593Smuzhiyun 	EM(afs_flock_extend_fail,		"Ext_Fail")		\
571*4882a593Smuzhiyun 	EM(afs_flock_fail_other,		"ErrOther")		\
572*4882a593Smuzhiyun 	EM(afs_flock_fail_perm,			"ErrPerm ")		\
573*4882a593Smuzhiyun 	EM(afs_flock_no_lockers,		"NoLocker")		\
574*4882a593Smuzhiyun 	EM(afs_flock_release_fail,		"Rel_Fail")		\
575*4882a593Smuzhiyun 	EM(afs_flock_silly_delete,		"SillyDel")		\
576*4882a593Smuzhiyun 	EM(afs_flock_timestamp,			"Timestmp")		\
577*4882a593Smuzhiyun 	EM(afs_flock_try_to_lock,		"TryToLck")		\
578*4882a593Smuzhiyun 	EM(afs_flock_vfs_lock,			"VFSLock ")		\
579*4882a593Smuzhiyun 	EM(afs_flock_vfs_locking,		"VFSLking")		\
580*4882a593Smuzhiyun 	EM(afs_flock_waited,			"Waited  ")		\
581*4882a593Smuzhiyun 	EM(afs_flock_waiting,			"Waiting ")		\
582*4882a593Smuzhiyun 	EM(afs_flock_work_extending,		"Extendng")		\
583*4882a593Smuzhiyun 	EM(afs_flock_work_retry,		"Retry   ")		\
584*4882a593Smuzhiyun 	EM(afs_flock_work_unlocking,		"Unlcking")		\
585*4882a593Smuzhiyun 	E_(afs_flock_would_block,		"EWOULDBL")
586*4882a593Smuzhiyun 
587*4882a593Smuzhiyun #define afs_flock_operations						\
588*4882a593Smuzhiyun 	EM(afs_flock_op_copy_lock,		"COPY    ")		\
589*4882a593Smuzhiyun 	EM(afs_flock_op_flock,			"->flock ")		\
590*4882a593Smuzhiyun 	EM(afs_flock_op_grant,			"GRANT   ")		\
591*4882a593Smuzhiyun 	EM(afs_flock_op_lock,			"->lock  ")		\
592*4882a593Smuzhiyun 	EM(afs_flock_op_release_lock,		"RELEASE ")		\
593*4882a593Smuzhiyun 	EM(afs_flock_op_return_ok,		"<-OK    ")		\
594*4882a593Smuzhiyun 	EM(afs_flock_op_return_edeadlk,		"<-EDEADL")		\
595*4882a593Smuzhiyun 	EM(afs_flock_op_return_eagain,		"<-EAGAIN")		\
596*4882a593Smuzhiyun 	EM(afs_flock_op_return_error,		"<-ERROR ")		\
597*4882a593Smuzhiyun 	EM(afs_flock_op_set_lock,		"SET     ")		\
598*4882a593Smuzhiyun 	EM(afs_flock_op_unlock,			"UNLOCK  ")		\
599*4882a593Smuzhiyun 	E_(afs_flock_op_wake,			"WAKE    ")
600*4882a593Smuzhiyun 
601*4882a593Smuzhiyun #define afs_cb_break_reasons						\
602*4882a593Smuzhiyun 	EM(afs_cb_break_no_break,		"no-break")		\
603*4882a593Smuzhiyun 	EM(afs_cb_break_for_callback,		"break-cb")		\
604*4882a593Smuzhiyun 	EM(afs_cb_break_for_deleted,		"break-del")		\
605*4882a593Smuzhiyun 	EM(afs_cb_break_for_lapsed,		"break-lapsed")		\
606*4882a593Smuzhiyun 	EM(afs_cb_break_for_unlink,		"break-unlink")		\
607*4882a593Smuzhiyun 	EM(afs_cb_break_for_vsbreak,		"break-vs")		\
608*4882a593Smuzhiyun 	EM(afs_cb_break_for_volume_callback,	"break-v-cb")		\
609*4882a593Smuzhiyun 	E_(afs_cb_break_for_zap,		"break-zap")
610*4882a593Smuzhiyun 
611*4882a593Smuzhiyun /*
612*4882a593Smuzhiyun  * Export enum symbols via userspace.
613*4882a593Smuzhiyun  */
614*4882a593Smuzhiyun #undef EM
615*4882a593Smuzhiyun #undef E_
616*4882a593Smuzhiyun #define EM(a, b) TRACE_DEFINE_ENUM(a);
617*4882a593Smuzhiyun #define E_(a, b) TRACE_DEFINE_ENUM(a);
618*4882a593Smuzhiyun 
619*4882a593Smuzhiyun afs_call_traces;
620*4882a593Smuzhiyun afs_server_traces;
621*4882a593Smuzhiyun afs_cell_traces;
622*4882a593Smuzhiyun afs_fs_operations;
623*4882a593Smuzhiyun afs_vl_operations;
624*4882a593Smuzhiyun afs_cm_operations;
625*4882a593Smuzhiyun yfs_cm_operations;
626*4882a593Smuzhiyun afs_edit_dir_ops;
627*4882a593Smuzhiyun afs_edit_dir_reasons;
628*4882a593Smuzhiyun afs_eproto_causes;
629*4882a593Smuzhiyun afs_io_errors;
630*4882a593Smuzhiyun afs_file_errors;
631*4882a593Smuzhiyun afs_flock_types;
632*4882a593Smuzhiyun afs_flock_operations;
633*4882a593Smuzhiyun afs_cb_break_reasons;
634*4882a593Smuzhiyun 
635*4882a593Smuzhiyun /*
636*4882a593Smuzhiyun  * Now redefine the EM() and E_() macros to map the enums to the strings that
637*4882a593Smuzhiyun  * will be printed in the output.
638*4882a593Smuzhiyun  */
639*4882a593Smuzhiyun #undef EM
640*4882a593Smuzhiyun #undef E_
641*4882a593Smuzhiyun #define EM(a, b)	{ a, b },
642*4882a593Smuzhiyun #define E_(a, b)	{ a, b }
643*4882a593Smuzhiyun 
644*4882a593Smuzhiyun TRACE_EVENT(afs_receive_data,
645*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, struct iov_iter *iter,
646*4882a593Smuzhiyun 		     bool want_more, int ret),
647*4882a593Smuzhiyun 
648*4882a593Smuzhiyun 	    TP_ARGS(call, iter, want_more, ret),
649*4882a593Smuzhiyun 
650*4882a593Smuzhiyun 	    TP_STRUCT__entry(
651*4882a593Smuzhiyun 		    __field(loff_t,			remain		)
652*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
653*4882a593Smuzhiyun 		    __field(enum afs_call_state,	state		)
654*4882a593Smuzhiyun 		    __field(unsigned short,		unmarshall	)
655*4882a593Smuzhiyun 		    __field(bool,			want_more	)
656*4882a593Smuzhiyun 		    __field(int,			ret		)
657*4882a593Smuzhiyun 			     ),
658*4882a593Smuzhiyun 
659*4882a593Smuzhiyun 	    TP_fast_assign(
660*4882a593Smuzhiyun 		    __entry->call	= call->debug_id;
661*4882a593Smuzhiyun 		    __entry->state	= call->state;
662*4882a593Smuzhiyun 		    __entry->unmarshall	= call->unmarshall;
663*4882a593Smuzhiyun 		    __entry->remain	= iov_iter_count(iter);
664*4882a593Smuzhiyun 		    __entry->want_more	= want_more;
665*4882a593Smuzhiyun 		    __entry->ret	= ret;
666*4882a593Smuzhiyun 			   ),
667*4882a593Smuzhiyun 
668*4882a593Smuzhiyun 	    TP_printk("c=%08x r=%llu u=%u w=%u s=%u ret=%d",
669*4882a593Smuzhiyun 		      __entry->call,
670*4882a593Smuzhiyun 		      __entry->remain,
671*4882a593Smuzhiyun 		      __entry->unmarshall,
672*4882a593Smuzhiyun 		      __entry->want_more,
673*4882a593Smuzhiyun 		      __entry->state,
674*4882a593Smuzhiyun 		      __entry->ret)
675*4882a593Smuzhiyun 	    );
676*4882a593Smuzhiyun 
677*4882a593Smuzhiyun TRACE_EVENT(afs_notify_call,
678*4882a593Smuzhiyun 	    TP_PROTO(struct rxrpc_call *rxcall, struct afs_call *call),
679*4882a593Smuzhiyun 
680*4882a593Smuzhiyun 	    TP_ARGS(rxcall, call),
681*4882a593Smuzhiyun 
682*4882a593Smuzhiyun 	    TP_STRUCT__entry(
683*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
684*4882a593Smuzhiyun 		    __field(enum afs_call_state,	state		)
685*4882a593Smuzhiyun 		    __field(unsigned short,		unmarshall	)
686*4882a593Smuzhiyun 			     ),
687*4882a593Smuzhiyun 
688*4882a593Smuzhiyun 	    TP_fast_assign(
689*4882a593Smuzhiyun 		    __entry->call	= call->debug_id;
690*4882a593Smuzhiyun 		    __entry->state	= call->state;
691*4882a593Smuzhiyun 		    __entry->unmarshall	= call->unmarshall;
692*4882a593Smuzhiyun 			   ),
693*4882a593Smuzhiyun 
694*4882a593Smuzhiyun 	    TP_printk("c=%08x s=%u u=%u",
695*4882a593Smuzhiyun 		      __entry->call,
696*4882a593Smuzhiyun 		      __entry->state, __entry->unmarshall)
697*4882a593Smuzhiyun 	    );
698*4882a593Smuzhiyun 
699*4882a593Smuzhiyun TRACE_EVENT(afs_cb_call,
700*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call),
701*4882a593Smuzhiyun 
702*4882a593Smuzhiyun 	    TP_ARGS(call),
703*4882a593Smuzhiyun 
704*4882a593Smuzhiyun 	    TP_STRUCT__entry(
705*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
706*4882a593Smuzhiyun 		    __field(u32,			op		)
707*4882a593Smuzhiyun 		    __field(u16,			service_id	)
708*4882a593Smuzhiyun 			     ),
709*4882a593Smuzhiyun 
710*4882a593Smuzhiyun 	    TP_fast_assign(
711*4882a593Smuzhiyun 		    __entry->call	= call->debug_id;
712*4882a593Smuzhiyun 		    __entry->op		= call->operation_ID;
713*4882a593Smuzhiyun 		    __entry->service_id	= call->service_id;
714*4882a593Smuzhiyun 			   ),
715*4882a593Smuzhiyun 
716*4882a593Smuzhiyun 	    TP_printk("c=%08x %s",
717*4882a593Smuzhiyun 		      __entry->call,
718*4882a593Smuzhiyun 		      __entry->service_id == 2501 ?
719*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, yfs_cm_operations) :
720*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_cm_operations))
721*4882a593Smuzhiyun 	    );
722*4882a593Smuzhiyun 
723*4882a593Smuzhiyun TRACE_EVENT(afs_call,
724*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, enum afs_call_trace op,
725*4882a593Smuzhiyun 		     int usage, int outstanding, const void *where),
726*4882a593Smuzhiyun 
727*4882a593Smuzhiyun 	    TP_ARGS(call, op, usage, outstanding, where),
728*4882a593Smuzhiyun 
729*4882a593Smuzhiyun 	    TP_STRUCT__entry(
730*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
731*4882a593Smuzhiyun 		    __field(int,			op		)
732*4882a593Smuzhiyun 		    __field(int,			usage		)
733*4882a593Smuzhiyun 		    __field(int,			outstanding	)
734*4882a593Smuzhiyun 		    __field(const void *,		where		)
735*4882a593Smuzhiyun 			     ),
736*4882a593Smuzhiyun 
737*4882a593Smuzhiyun 	    TP_fast_assign(
738*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
739*4882a593Smuzhiyun 		    __entry->op = op;
740*4882a593Smuzhiyun 		    __entry->usage = usage;
741*4882a593Smuzhiyun 		    __entry->outstanding = outstanding;
742*4882a593Smuzhiyun 		    __entry->where = where;
743*4882a593Smuzhiyun 			   ),
744*4882a593Smuzhiyun 
745*4882a593Smuzhiyun 	    TP_printk("c=%08x %s u=%d o=%d sp=%pSR",
746*4882a593Smuzhiyun 		      __entry->call,
747*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_call_traces),
748*4882a593Smuzhiyun 		      __entry->usage,
749*4882a593Smuzhiyun 		      __entry->outstanding,
750*4882a593Smuzhiyun 		      __entry->where)
751*4882a593Smuzhiyun 	    );
752*4882a593Smuzhiyun 
753*4882a593Smuzhiyun TRACE_EVENT(afs_make_fs_call,
754*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, const struct afs_fid *fid),
755*4882a593Smuzhiyun 
756*4882a593Smuzhiyun 	    TP_ARGS(call, fid),
757*4882a593Smuzhiyun 
758*4882a593Smuzhiyun 	    TP_STRUCT__entry(
759*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
760*4882a593Smuzhiyun 		    __field(enum afs_fs_operation,	op		)
761*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
762*4882a593Smuzhiyun 			     ),
763*4882a593Smuzhiyun 
764*4882a593Smuzhiyun 	    TP_fast_assign(
765*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
766*4882a593Smuzhiyun 		    __entry->op = call->operation_ID;
767*4882a593Smuzhiyun 		    if (fid) {
768*4882a593Smuzhiyun 			    __entry->fid = *fid;
769*4882a593Smuzhiyun 		    } else {
770*4882a593Smuzhiyun 			    __entry->fid.vid = 0;
771*4882a593Smuzhiyun 			    __entry->fid.vnode = 0;
772*4882a593Smuzhiyun 			    __entry->fid.unique = 0;
773*4882a593Smuzhiyun 		    }
774*4882a593Smuzhiyun 			   ),
775*4882a593Smuzhiyun 
776*4882a593Smuzhiyun 	    TP_printk("c=%08x %06llx:%06llx:%06x %s",
777*4882a593Smuzhiyun 		      __entry->call,
778*4882a593Smuzhiyun 		      __entry->fid.vid,
779*4882a593Smuzhiyun 		      __entry->fid.vnode,
780*4882a593Smuzhiyun 		      __entry->fid.unique,
781*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_fs_operations))
782*4882a593Smuzhiyun 	    );
783*4882a593Smuzhiyun 
784*4882a593Smuzhiyun TRACE_EVENT(afs_make_fs_calli,
785*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, const struct afs_fid *fid,
786*4882a593Smuzhiyun 		     unsigned int i),
787*4882a593Smuzhiyun 
788*4882a593Smuzhiyun 	    TP_ARGS(call, fid, i),
789*4882a593Smuzhiyun 
790*4882a593Smuzhiyun 	    TP_STRUCT__entry(
791*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
792*4882a593Smuzhiyun 		    __field(unsigned int,		i		)
793*4882a593Smuzhiyun 		    __field(enum afs_fs_operation,	op		)
794*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
795*4882a593Smuzhiyun 			     ),
796*4882a593Smuzhiyun 
797*4882a593Smuzhiyun 	    TP_fast_assign(
798*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
799*4882a593Smuzhiyun 		    __entry->i = i;
800*4882a593Smuzhiyun 		    __entry->op = call->operation_ID;
801*4882a593Smuzhiyun 		    if (fid) {
802*4882a593Smuzhiyun 			    __entry->fid = *fid;
803*4882a593Smuzhiyun 		    } else {
804*4882a593Smuzhiyun 			    __entry->fid.vid = 0;
805*4882a593Smuzhiyun 			    __entry->fid.vnode = 0;
806*4882a593Smuzhiyun 			    __entry->fid.unique = 0;
807*4882a593Smuzhiyun 		    }
808*4882a593Smuzhiyun 			   ),
809*4882a593Smuzhiyun 
810*4882a593Smuzhiyun 	    TP_printk("c=%08x %06llx:%06llx:%06x %s i=%u",
811*4882a593Smuzhiyun 		      __entry->call,
812*4882a593Smuzhiyun 		      __entry->fid.vid,
813*4882a593Smuzhiyun 		      __entry->fid.vnode,
814*4882a593Smuzhiyun 		      __entry->fid.unique,
815*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_fs_operations),
816*4882a593Smuzhiyun 		      __entry->i)
817*4882a593Smuzhiyun 	    );
818*4882a593Smuzhiyun 
819*4882a593Smuzhiyun TRACE_EVENT(afs_make_fs_call1,
820*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, const struct afs_fid *fid,
821*4882a593Smuzhiyun 		     const struct qstr *name),
822*4882a593Smuzhiyun 
823*4882a593Smuzhiyun 	    TP_ARGS(call, fid, name),
824*4882a593Smuzhiyun 
825*4882a593Smuzhiyun 	    TP_STRUCT__entry(
826*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
827*4882a593Smuzhiyun 		    __field(enum afs_fs_operation,	op		)
828*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
829*4882a593Smuzhiyun 		    __array(char,			name, 24	)
830*4882a593Smuzhiyun 			     ),
831*4882a593Smuzhiyun 
832*4882a593Smuzhiyun 	    TP_fast_assign(
833*4882a593Smuzhiyun 		    unsigned int __len = min_t(unsigned int, name->len, 23);
834*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
835*4882a593Smuzhiyun 		    __entry->op = call->operation_ID;
836*4882a593Smuzhiyun 		    if (fid) {
837*4882a593Smuzhiyun 			    __entry->fid = *fid;
838*4882a593Smuzhiyun 		    } else {
839*4882a593Smuzhiyun 			    __entry->fid.vid = 0;
840*4882a593Smuzhiyun 			    __entry->fid.vnode = 0;
841*4882a593Smuzhiyun 			    __entry->fid.unique = 0;
842*4882a593Smuzhiyun 		    }
843*4882a593Smuzhiyun 		    memcpy(__entry->name, name->name, __len);
844*4882a593Smuzhiyun 		    __entry->name[__len] = 0;
845*4882a593Smuzhiyun 			   ),
846*4882a593Smuzhiyun 
847*4882a593Smuzhiyun 	    TP_printk("c=%08x %06llx:%06llx:%06x %s \"%s\"",
848*4882a593Smuzhiyun 		      __entry->call,
849*4882a593Smuzhiyun 		      __entry->fid.vid,
850*4882a593Smuzhiyun 		      __entry->fid.vnode,
851*4882a593Smuzhiyun 		      __entry->fid.unique,
852*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_fs_operations),
853*4882a593Smuzhiyun 		      __entry->name)
854*4882a593Smuzhiyun 	    );
855*4882a593Smuzhiyun 
856*4882a593Smuzhiyun TRACE_EVENT(afs_make_fs_call2,
857*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, const struct afs_fid *fid,
858*4882a593Smuzhiyun 		     const struct qstr *name, const struct qstr *name2),
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun 	    TP_ARGS(call, fid, name, name2),
861*4882a593Smuzhiyun 
862*4882a593Smuzhiyun 	    TP_STRUCT__entry(
863*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
864*4882a593Smuzhiyun 		    __field(enum afs_fs_operation,	op		)
865*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
866*4882a593Smuzhiyun 		    __array(char,			name, 24	)
867*4882a593Smuzhiyun 		    __array(char,			name2, 24	)
868*4882a593Smuzhiyun 			     ),
869*4882a593Smuzhiyun 
870*4882a593Smuzhiyun 	    TP_fast_assign(
871*4882a593Smuzhiyun 		    unsigned int __len = min_t(unsigned int, name->len, 23);
872*4882a593Smuzhiyun 		    unsigned int __len2 = min_t(unsigned int, name2->len, 23);
873*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
874*4882a593Smuzhiyun 		    __entry->op = call->operation_ID;
875*4882a593Smuzhiyun 		    if (fid) {
876*4882a593Smuzhiyun 			    __entry->fid = *fid;
877*4882a593Smuzhiyun 		    } else {
878*4882a593Smuzhiyun 			    __entry->fid.vid = 0;
879*4882a593Smuzhiyun 			    __entry->fid.vnode = 0;
880*4882a593Smuzhiyun 			    __entry->fid.unique = 0;
881*4882a593Smuzhiyun 		    }
882*4882a593Smuzhiyun 		    memcpy(__entry->name, name->name, __len);
883*4882a593Smuzhiyun 		    __entry->name[__len] = 0;
884*4882a593Smuzhiyun 		    memcpy(__entry->name2, name2->name, __len2);
885*4882a593Smuzhiyun 		    __entry->name2[__len2] = 0;
886*4882a593Smuzhiyun 			   ),
887*4882a593Smuzhiyun 
888*4882a593Smuzhiyun 	    TP_printk("c=%08x %06llx:%06llx:%06x %s \"%s\" \"%s\"",
889*4882a593Smuzhiyun 		      __entry->call,
890*4882a593Smuzhiyun 		      __entry->fid.vid,
891*4882a593Smuzhiyun 		      __entry->fid.vnode,
892*4882a593Smuzhiyun 		      __entry->fid.unique,
893*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_fs_operations),
894*4882a593Smuzhiyun 		      __entry->name,
895*4882a593Smuzhiyun 		      __entry->name2)
896*4882a593Smuzhiyun 	    );
897*4882a593Smuzhiyun 
898*4882a593Smuzhiyun TRACE_EVENT(afs_make_vl_call,
899*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call),
900*4882a593Smuzhiyun 
901*4882a593Smuzhiyun 	    TP_ARGS(call),
902*4882a593Smuzhiyun 
903*4882a593Smuzhiyun 	    TP_STRUCT__entry(
904*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
905*4882a593Smuzhiyun 		    __field(enum afs_vl_operation,	op		)
906*4882a593Smuzhiyun 			     ),
907*4882a593Smuzhiyun 
908*4882a593Smuzhiyun 	    TP_fast_assign(
909*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
910*4882a593Smuzhiyun 		    __entry->op = call->operation_ID;
911*4882a593Smuzhiyun 			   ),
912*4882a593Smuzhiyun 
913*4882a593Smuzhiyun 	    TP_printk("c=%08x %s",
914*4882a593Smuzhiyun 		      __entry->call,
915*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_vl_operations))
916*4882a593Smuzhiyun 	    );
917*4882a593Smuzhiyun 
918*4882a593Smuzhiyun TRACE_EVENT(afs_call_done,
919*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call),
920*4882a593Smuzhiyun 
921*4882a593Smuzhiyun 	    TP_ARGS(call),
922*4882a593Smuzhiyun 
923*4882a593Smuzhiyun 	    TP_STRUCT__entry(
924*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
925*4882a593Smuzhiyun 		    __field(struct rxrpc_call *,	rx_call		)
926*4882a593Smuzhiyun 		    __field(int,			ret		)
927*4882a593Smuzhiyun 		    __field(u32,			abort_code	)
928*4882a593Smuzhiyun 			     ),
929*4882a593Smuzhiyun 
930*4882a593Smuzhiyun 	    TP_fast_assign(
931*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
932*4882a593Smuzhiyun 		    __entry->rx_call = call->rxcall;
933*4882a593Smuzhiyun 		    __entry->ret = call->error;
934*4882a593Smuzhiyun 		    __entry->abort_code = call->abort_code;
935*4882a593Smuzhiyun 			   ),
936*4882a593Smuzhiyun 
937*4882a593Smuzhiyun 	    TP_printk("   c=%08x ret=%d ab=%d [%p]",
938*4882a593Smuzhiyun 		      __entry->call,
939*4882a593Smuzhiyun 		      __entry->ret,
940*4882a593Smuzhiyun 		      __entry->abort_code,
941*4882a593Smuzhiyun 		      __entry->rx_call)
942*4882a593Smuzhiyun 	    );
943*4882a593Smuzhiyun 
944*4882a593Smuzhiyun TRACE_EVENT(afs_send_pages,
945*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, struct msghdr *msg,
946*4882a593Smuzhiyun 		     pgoff_t first, pgoff_t last, unsigned int offset),
947*4882a593Smuzhiyun 
948*4882a593Smuzhiyun 	    TP_ARGS(call, msg, first, last, offset),
949*4882a593Smuzhiyun 
950*4882a593Smuzhiyun 	    TP_STRUCT__entry(
951*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
952*4882a593Smuzhiyun 		    __field(pgoff_t,			first		)
953*4882a593Smuzhiyun 		    __field(pgoff_t,			last		)
954*4882a593Smuzhiyun 		    __field(unsigned int,		nr		)
955*4882a593Smuzhiyun 		    __field(unsigned int,		bytes		)
956*4882a593Smuzhiyun 		    __field(unsigned int,		offset		)
957*4882a593Smuzhiyun 		    __field(unsigned int,		flags		)
958*4882a593Smuzhiyun 			     ),
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun 	    TP_fast_assign(
961*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
962*4882a593Smuzhiyun 		    __entry->first = first;
963*4882a593Smuzhiyun 		    __entry->last = last;
964*4882a593Smuzhiyun 		    __entry->nr = msg->msg_iter.nr_segs;
965*4882a593Smuzhiyun 		    __entry->bytes = msg->msg_iter.count;
966*4882a593Smuzhiyun 		    __entry->offset = offset;
967*4882a593Smuzhiyun 		    __entry->flags = msg->msg_flags;
968*4882a593Smuzhiyun 			   ),
969*4882a593Smuzhiyun 
970*4882a593Smuzhiyun 	    TP_printk(" c=%08x %lx-%lx-%lx b=%x o=%x f=%x",
971*4882a593Smuzhiyun 		      __entry->call,
972*4882a593Smuzhiyun 		      __entry->first, __entry->first + __entry->nr - 1, __entry->last,
973*4882a593Smuzhiyun 		      __entry->bytes, __entry->offset,
974*4882a593Smuzhiyun 		      __entry->flags)
975*4882a593Smuzhiyun 	    );
976*4882a593Smuzhiyun 
977*4882a593Smuzhiyun TRACE_EVENT(afs_sent_pages,
978*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, pgoff_t first, pgoff_t last,
979*4882a593Smuzhiyun 		     pgoff_t cursor, int ret),
980*4882a593Smuzhiyun 
981*4882a593Smuzhiyun 	    TP_ARGS(call, first, last, cursor, ret),
982*4882a593Smuzhiyun 
983*4882a593Smuzhiyun 	    TP_STRUCT__entry(
984*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
985*4882a593Smuzhiyun 		    __field(pgoff_t,			first		)
986*4882a593Smuzhiyun 		    __field(pgoff_t,			last		)
987*4882a593Smuzhiyun 		    __field(pgoff_t,			cursor		)
988*4882a593Smuzhiyun 		    __field(int,			ret		)
989*4882a593Smuzhiyun 			     ),
990*4882a593Smuzhiyun 
991*4882a593Smuzhiyun 	    TP_fast_assign(
992*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
993*4882a593Smuzhiyun 		    __entry->first = first;
994*4882a593Smuzhiyun 		    __entry->last = last;
995*4882a593Smuzhiyun 		    __entry->cursor = cursor;
996*4882a593Smuzhiyun 		    __entry->ret = ret;
997*4882a593Smuzhiyun 			   ),
998*4882a593Smuzhiyun 
999*4882a593Smuzhiyun 	    TP_printk(" c=%08x %lx-%lx c=%lx r=%d",
1000*4882a593Smuzhiyun 		      __entry->call,
1001*4882a593Smuzhiyun 		      __entry->first, __entry->last,
1002*4882a593Smuzhiyun 		      __entry->cursor, __entry->ret)
1003*4882a593Smuzhiyun 	    );
1004*4882a593Smuzhiyun 
1005*4882a593Smuzhiyun TRACE_EVENT(afs_dir_check_failed,
1006*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, loff_t off, loff_t i_size),
1007*4882a593Smuzhiyun 
1008*4882a593Smuzhiyun 	    TP_ARGS(vnode, off, i_size),
1009*4882a593Smuzhiyun 
1010*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1011*4882a593Smuzhiyun 		    __field(struct afs_vnode *,		vnode		)
1012*4882a593Smuzhiyun 		    __field(loff_t,			off		)
1013*4882a593Smuzhiyun 		    __field(loff_t,			i_size		)
1014*4882a593Smuzhiyun 			     ),
1015*4882a593Smuzhiyun 
1016*4882a593Smuzhiyun 	    TP_fast_assign(
1017*4882a593Smuzhiyun 		    __entry->vnode = vnode;
1018*4882a593Smuzhiyun 		    __entry->off = off;
1019*4882a593Smuzhiyun 		    __entry->i_size = i_size;
1020*4882a593Smuzhiyun 			   ),
1021*4882a593Smuzhiyun 
1022*4882a593Smuzhiyun 	    TP_printk("vn=%p %llx/%llx",
1023*4882a593Smuzhiyun 		      __entry->vnode, __entry->off, __entry->i_size)
1024*4882a593Smuzhiyun 	    );
1025*4882a593Smuzhiyun 
1026*4882a593Smuzhiyun TRACE_EVENT(afs_page_dirty,
1027*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, const char *where,
1028*4882a593Smuzhiyun 		     pgoff_t page, unsigned long priv),
1029*4882a593Smuzhiyun 
1030*4882a593Smuzhiyun 	    TP_ARGS(vnode, where, page, priv),
1031*4882a593Smuzhiyun 
1032*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1033*4882a593Smuzhiyun 		    __field(struct afs_vnode *,		vnode		)
1034*4882a593Smuzhiyun 		    __field(const char *,		where		)
1035*4882a593Smuzhiyun 		    __field(pgoff_t,			page		)
1036*4882a593Smuzhiyun 		    __field(unsigned long,		priv		)
1037*4882a593Smuzhiyun 			     ),
1038*4882a593Smuzhiyun 
1039*4882a593Smuzhiyun 	    TP_fast_assign(
1040*4882a593Smuzhiyun 		    __entry->vnode = vnode;
1041*4882a593Smuzhiyun 		    __entry->where = where;
1042*4882a593Smuzhiyun 		    __entry->page = page;
1043*4882a593Smuzhiyun 		    __entry->priv = priv;
1044*4882a593Smuzhiyun 			   ),
1045*4882a593Smuzhiyun 
1046*4882a593Smuzhiyun 	    TP_printk("vn=%p %lx %s %zx-%zx%s",
1047*4882a593Smuzhiyun 		      __entry->vnode, __entry->page, __entry->where,
1048*4882a593Smuzhiyun 		      afs_page_dirty_from(__entry->priv),
1049*4882a593Smuzhiyun 		      afs_page_dirty_to(__entry->priv),
1050*4882a593Smuzhiyun 		      afs_is_page_dirty_mmapped(__entry->priv) ? " M" : "")
1051*4882a593Smuzhiyun 	    );
1052*4882a593Smuzhiyun 
1053*4882a593Smuzhiyun TRACE_EVENT(afs_call_state,
1054*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call,
1055*4882a593Smuzhiyun 		     enum afs_call_state from,
1056*4882a593Smuzhiyun 		     enum afs_call_state to,
1057*4882a593Smuzhiyun 		     int ret, u32 remote_abort),
1058*4882a593Smuzhiyun 
1059*4882a593Smuzhiyun 	    TP_ARGS(call, from, to, ret, remote_abort),
1060*4882a593Smuzhiyun 
1061*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1062*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
1063*4882a593Smuzhiyun 		    __field(enum afs_call_state,	from		)
1064*4882a593Smuzhiyun 		    __field(enum afs_call_state,	to		)
1065*4882a593Smuzhiyun 		    __field(int,			ret		)
1066*4882a593Smuzhiyun 		    __field(u32,			abort		)
1067*4882a593Smuzhiyun 			     ),
1068*4882a593Smuzhiyun 
1069*4882a593Smuzhiyun 	    TP_fast_assign(
1070*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
1071*4882a593Smuzhiyun 		    __entry->from = from;
1072*4882a593Smuzhiyun 		    __entry->to = to;
1073*4882a593Smuzhiyun 		    __entry->ret = ret;
1074*4882a593Smuzhiyun 		    __entry->abort = remote_abort;
1075*4882a593Smuzhiyun 			   ),
1076*4882a593Smuzhiyun 
1077*4882a593Smuzhiyun 	    TP_printk("c=%08x %u->%u r=%d ab=%d",
1078*4882a593Smuzhiyun 		      __entry->call,
1079*4882a593Smuzhiyun 		      __entry->from, __entry->to,
1080*4882a593Smuzhiyun 		      __entry->ret, __entry->abort)
1081*4882a593Smuzhiyun 	    );
1082*4882a593Smuzhiyun 
1083*4882a593Smuzhiyun TRACE_EVENT(afs_lookup,
1084*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *dvnode, const struct qstr *name,
1085*4882a593Smuzhiyun 		     struct afs_fid *fid),
1086*4882a593Smuzhiyun 
1087*4882a593Smuzhiyun 	    TP_ARGS(dvnode, name, fid),
1088*4882a593Smuzhiyun 
1089*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1090*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	dfid		)
1091*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1092*4882a593Smuzhiyun 		    __array(char,			name, 24	)
1093*4882a593Smuzhiyun 			     ),
1094*4882a593Smuzhiyun 
1095*4882a593Smuzhiyun 	    TP_fast_assign(
1096*4882a593Smuzhiyun 		    int __len = min_t(int, name->len, 23);
1097*4882a593Smuzhiyun 		    __entry->dfid = dvnode->fid;
1098*4882a593Smuzhiyun 		    __entry->fid = *fid;
1099*4882a593Smuzhiyun 		    memcpy(__entry->name, name->name, __len);
1100*4882a593Smuzhiyun 		    __entry->name[__len] = 0;
1101*4882a593Smuzhiyun 			   ),
1102*4882a593Smuzhiyun 
1103*4882a593Smuzhiyun 	    TP_printk("d=%llx:%llx:%x \"%s\" f=%llx:%x",
1104*4882a593Smuzhiyun 		      __entry->dfid.vid, __entry->dfid.vnode, __entry->dfid.unique,
1105*4882a593Smuzhiyun 		      __entry->name,
1106*4882a593Smuzhiyun 		      __entry->fid.vnode, __entry->fid.unique)
1107*4882a593Smuzhiyun 	    );
1108*4882a593Smuzhiyun 
1109*4882a593Smuzhiyun TRACE_EVENT(afs_edit_dir,
1110*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *dvnode,
1111*4882a593Smuzhiyun 		     enum afs_edit_dir_reason why,
1112*4882a593Smuzhiyun 		     enum afs_edit_dir_op op,
1113*4882a593Smuzhiyun 		     unsigned int block,
1114*4882a593Smuzhiyun 		     unsigned int slot,
1115*4882a593Smuzhiyun 		     unsigned int f_vnode,
1116*4882a593Smuzhiyun 		     unsigned int f_unique,
1117*4882a593Smuzhiyun 		     const char *name),
1118*4882a593Smuzhiyun 
1119*4882a593Smuzhiyun 	    TP_ARGS(dvnode, why, op, block, slot, f_vnode, f_unique, name),
1120*4882a593Smuzhiyun 
1121*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1122*4882a593Smuzhiyun 		    __field(unsigned int,		vnode		)
1123*4882a593Smuzhiyun 		    __field(unsigned int,		unique		)
1124*4882a593Smuzhiyun 		    __field(enum afs_edit_dir_reason,	why		)
1125*4882a593Smuzhiyun 		    __field(enum afs_edit_dir_op,	op		)
1126*4882a593Smuzhiyun 		    __field(unsigned int,		block		)
1127*4882a593Smuzhiyun 		    __field(unsigned short,		slot		)
1128*4882a593Smuzhiyun 		    __field(unsigned int,		f_vnode		)
1129*4882a593Smuzhiyun 		    __field(unsigned int,		f_unique	)
1130*4882a593Smuzhiyun 		    __array(char,			name, 24	)
1131*4882a593Smuzhiyun 			     ),
1132*4882a593Smuzhiyun 
1133*4882a593Smuzhiyun 	    TP_fast_assign(
1134*4882a593Smuzhiyun 		    int __len = strlen(name);
1135*4882a593Smuzhiyun 		    __len = min(__len, 23);
1136*4882a593Smuzhiyun 		    __entry->vnode	= dvnode->fid.vnode;
1137*4882a593Smuzhiyun 		    __entry->unique	= dvnode->fid.unique;
1138*4882a593Smuzhiyun 		    __entry->why	= why;
1139*4882a593Smuzhiyun 		    __entry->op		= op;
1140*4882a593Smuzhiyun 		    __entry->block	= block;
1141*4882a593Smuzhiyun 		    __entry->slot	= slot;
1142*4882a593Smuzhiyun 		    __entry->f_vnode	= f_vnode;
1143*4882a593Smuzhiyun 		    __entry->f_unique	= f_unique;
1144*4882a593Smuzhiyun 		    memcpy(__entry->name, name, __len);
1145*4882a593Smuzhiyun 		    __entry->name[__len] = 0;
1146*4882a593Smuzhiyun 			   ),
1147*4882a593Smuzhiyun 
1148*4882a593Smuzhiyun 	    TP_printk("d=%x:%x %s %s %u[%u] f=%x:%x \"%s\"",
1149*4882a593Smuzhiyun 		      __entry->vnode, __entry->unique,
1150*4882a593Smuzhiyun 		      __print_symbolic(__entry->why, afs_edit_dir_reasons),
1151*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_edit_dir_ops),
1152*4882a593Smuzhiyun 		      __entry->block, __entry->slot,
1153*4882a593Smuzhiyun 		      __entry->f_vnode, __entry->f_unique,
1154*4882a593Smuzhiyun 		      __entry->name)
1155*4882a593Smuzhiyun 	    );
1156*4882a593Smuzhiyun 
1157*4882a593Smuzhiyun TRACE_EVENT(afs_protocol_error,
1158*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, enum afs_eproto_cause cause),
1159*4882a593Smuzhiyun 
1160*4882a593Smuzhiyun 	    TP_ARGS(call, cause),
1161*4882a593Smuzhiyun 
1162*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1163*4882a593Smuzhiyun 		    __field(unsigned int,		call		)
1164*4882a593Smuzhiyun 		    __field(enum afs_eproto_cause,	cause		)
1165*4882a593Smuzhiyun 			     ),
1166*4882a593Smuzhiyun 
1167*4882a593Smuzhiyun 	    TP_fast_assign(
1168*4882a593Smuzhiyun 		    __entry->call = call ? call->debug_id : 0;
1169*4882a593Smuzhiyun 		    __entry->cause = cause;
1170*4882a593Smuzhiyun 			   ),
1171*4882a593Smuzhiyun 
1172*4882a593Smuzhiyun 	    TP_printk("c=%08x %s",
1173*4882a593Smuzhiyun 		      __entry->call,
1174*4882a593Smuzhiyun 		      __print_symbolic(__entry->cause, afs_eproto_causes))
1175*4882a593Smuzhiyun 	    );
1176*4882a593Smuzhiyun 
1177*4882a593Smuzhiyun TRACE_EVENT(afs_io_error,
1178*4882a593Smuzhiyun 	    TP_PROTO(unsigned int call, int error, enum afs_io_error where),
1179*4882a593Smuzhiyun 
1180*4882a593Smuzhiyun 	    TP_ARGS(call, error, where),
1181*4882a593Smuzhiyun 
1182*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1183*4882a593Smuzhiyun 		    __field(unsigned int,	call		)
1184*4882a593Smuzhiyun 		    __field(int,		error		)
1185*4882a593Smuzhiyun 		    __field(enum afs_io_error,	where		)
1186*4882a593Smuzhiyun 			     ),
1187*4882a593Smuzhiyun 
1188*4882a593Smuzhiyun 	    TP_fast_assign(
1189*4882a593Smuzhiyun 		    __entry->call = call;
1190*4882a593Smuzhiyun 		    __entry->error = error;
1191*4882a593Smuzhiyun 		    __entry->where = where;
1192*4882a593Smuzhiyun 			   ),
1193*4882a593Smuzhiyun 
1194*4882a593Smuzhiyun 	    TP_printk("c=%08x r=%d %s",
1195*4882a593Smuzhiyun 		      __entry->call, __entry->error,
1196*4882a593Smuzhiyun 		      __print_symbolic(__entry->where, afs_io_errors))
1197*4882a593Smuzhiyun 	    );
1198*4882a593Smuzhiyun 
1199*4882a593Smuzhiyun TRACE_EVENT(afs_file_error,
1200*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, int error, enum afs_file_error where),
1201*4882a593Smuzhiyun 
1202*4882a593Smuzhiyun 	    TP_ARGS(vnode, error, where),
1203*4882a593Smuzhiyun 
1204*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1205*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1206*4882a593Smuzhiyun 		    __field(int,			error		)
1207*4882a593Smuzhiyun 		    __field(enum afs_file_error,	where		)
1208*4882a593Smuzhiyun 			     ),
1209*4882a593Smuzhiyun 
1210*4882a593Smuzhiyun 	    TP_fast_assign(
1211*4882a593Smuzhiyun 		    __entry->fid = vnode->fid;
1212*4882a593Smuzhiyun 		    __entry->error = error;
1213*4882a593Smuzhiyun 		    __entry->where = where;
1214*4882a593Smuzhiyun 			   ),
1215*4882a593Smuzhiyun 
1216*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x r=%d %s",
1217*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1218*4882a593Smuzhiyun 		      __entry->error,
1219*4882a593Smuzhiyun 		      __print_symbolic(__entry->where, afs_file_errors))
1220*4882a593Smuzhiyun 	    );
1221*4882a593Smuzhiyun 
1222*4882a593Smuzhiyun TRACE_EVENT(afs_cm_no_server,
1223*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, struct sockaddr_rxrpc *srx),
1224*4882a593Smuzhiyun 
1225*4882a593Smuzhiyun 	    TP_ARGS(call, srx),
1226*4882a593Smuzhiyun 
1227*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1228*4882a593Smuzhiyun 		    __field(unsigned int,			call	)
1229*4882a593Smuzhiyun 		    __field(unsigned int,			op_id	)
1230*4882a593Smuzhiyun 		    __field_struct(struct sockaddr_rxrpc,	srx	)
1231*4882a593Smuzhiyun 			     ),
1232*4882a593Smuzhiyun 
1233*4882a593Smuzhiyun 	    TP_fast_assign(
1234*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
1235*4882a593Smuzhiyun 		    __entry->op_id = call->operation_ID;
1236*4882a593Smuzhiyun 		    memcpy(&__entry->srx, srx, sizeof(__entry->srx));
1237*4882a593Smuzhiyun 			   ),
1238*4882a593Smuzhiyun 
1239*4882a593Smuzhiyun 	    TP_printk("c=%08x op=%u %pISpc",
1240*4882a593Smuzhiyun 		      __entry->call, __entry->op_id, &__entry->srx.transport)
1241*4882a593Smuzhiyun 	    );
1242*4882a593Smuzhiyun 
1243*4882a593Smuzhiyun TRACE_EVENT(afs_cm_no_server_u,
1244*4882a593Smuzhiyun 	    TP_PROTO(struct afs_call *call, const uuid_t *uuid),
1245*4882a593Smuzhiyun 
1246*4882a593Smuzhiyun 	    TP_ARGS(call, uuid),
1247*4882a593Smuzhiyun 
1248*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1249*4882a593Smuzhiyun 		    __field(unsigned int,			call	)
1250*4882a593Smuzhiyun 		    __field(unsigned int,			op_id	)
1251*4882a593Smuzhiyun 		    __field_struct(uuid_t,			uuid	)
1252*4882a593Smuzhiyun 			     ),
1253*4882a593Smuzhiyun 
1254*4882a593Smuzhiyun 	    TP_fast_assign(
1255*4882a593Smuzhiyun 		    __entry->call = call->debug_id;
1256*4882a593Smuzhiyun 		    __entry->op_id = call->operation_ID;
1257*4882a593Smuzhiyun 		    memcpy(&__entry->uuid, uuid, sizeof(__entry->uuid));
1258*4882a593Smuzhiyun 			   ),
1259*4882a593Smuzhiyun 
1260*4882a593Smuzhiyun 	    TP_printk("c=%08x op=%u %pU",
1261*4882a593Smuzhiyun 		      __entry->call, __entry->op_id, &__entry->uuid)
1262*4882a593Smuzhiyun 	    );
1263*4882a593Smuzhiyun 
1264*4882a593Smuzhiyun TRACE_EVENT(afs_flock_ev,
1265*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl,
1266*4882a593Smuzhiyun 		     enum afs_flock_event event, int error),
1267*4882a593Smuzhiyun 
1268*4882a593Smuzhiyun 	    TP_ARGS(vnode, fl, event, error),
1269*4882a593Smuzhiyun 
1270*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1271*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1272*4882a593Smuzhiyun 		    __field(enum afs_flock_event,	event		)
1273*4882a593Smuzhiyun 		    __field(enum afs_lock_state,	state		)
1274*4882a593Smuzhiyun 		    __field(int,			error		)
1275*4882a593Smuzhiyun 		    __field(unsigned int,		debug_id	)
1276*4882a593Smuzhiyun 			     ),
1277*4882a593Smuzhiyun 
1278*4882a593Smuzhiyun 	    TP_fast_assign(
1279*4882a593Smuzhiyun 		    __entry->fid = vnode->fid;
1280*4882a593Smuzhiyun 		    __entry->event = event;
1281*4882a593Smuzhiyun 		    __entry->state = vnode->lock_state;
1282*4882a593Smuzhiyun 		    __entry->error = error;
1283*4882a593Smuzhiyun 		    __entry->debug_id = fl ? fl->fl_u.afs.debug_id : 0;
1284*4882a593Smuzhiyun 			   ),
1285*4882a593Smuzhiyun 
1286*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x %04x %s s=%s e=%d",
1287*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1288*4882a593Smuzhiyun 		      __entry->debug_id,
1289*4882a593Smuzhiyun 		      __print_symbolic(__entry->event, afs_flock_events),
1290*4882a593Smuzhiyun 		      __print_symbolic(__entry->state, afs_flock_states),
1291*4882a593Smuzhiyun 		      __entry->error)
1292*4882a593Smuzhiyun 	    );
1293*4882a593Smuzhiyun 
1294*4882a593Smuzhiyun TRACE_EVENT(afs_flock_op,
1295*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl,
1296*4882a593Smuzhiyun 		     enum afs_flock_operation op),
1297*4882a593Smuzhiyun 
1298*4882a593Smuzhiyun 	    TP_ARGS(vnode, fl, op),
1299*4882a593Smuzhiyun 
1300*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1301*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1302*4882a593Smuzhiyun 		    __field(loff_t,			from		)
1303*4882a593Smuzhiyun 		    __field(loff_t,			len		)
1304*4882a593Smuzhiyun 		    __field(enum afs_flock_operation,	op		)
1305*4882a593Smuzhiyun 		    __field(unsigned char,		type		)
1306*4882a593Smuzhiyun 		    __field(unsigned int,		flags		)
1307*4882a593Smuzhiyun 		    __field(unsigned int,		debug_id	)
1308*4882a593Smuzhiyun 			     ),
1309*4882a593Smuzhiyun 
1310*4882a593Smuzhiyun 	    TP_fast_assign(
1311*4882a593Smuzhiyun 		    __entry->fid = vnode->fid;
1312*4882a593Smuzhiyun 		    __entry->from = fl->fl_start;
1313*4882a593Smuzhiyun 		    __entry->len = fl->fl_end - fl->fl_start + 1;
1314*4882a593Smuzhiyun 		    __entry->op = op;
1315*4882a593Smuzhiyun 		    __entry->type = fl->fl_type;
1316*4882a593Smuzhiyun 		    __entry->flags = fl->fl_flags;
1317*4882a593Smuzhiyun 		    __entry->debug_id = fl->fl_u.afs.debug_id;
1318*4882a593Smuzhiyun 			   ),
1319*4882a593Smuzhiyun 
1320*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x %04x %s t=%s R=%llx/%llx f=%x",
1321*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1322*4882a593Smuzhiyun 		      __entry->debug_id,
1323*4882a593Smuzhiyun 		      __print_symbolic(__entry->op, afs_flock_operations),
1324*4882a593Smuzhiyun 		      __print_symbolic(__entry->type, afs_flock_types),
1325*4882a593Smuzhiyun 		      __entry->from, __entry->len, __entry->flags)
1326*4882a593Smuzhiyun 	    );
1327*4882a593Smuzhiyun 
1328*4882a593Smuzhiyun TRACE_EVENT(afs_reload_dir,
1329*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode),
1330*4882a593Smuzhiyun 
1331*4882a593Smuzhiyun 	    TP_ARGS(vnode),
1332*4882a593Smuzhiyun 
1333*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1334*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1335*4882a593Smuzhiyun 			     ),
1336*4882a593Smuzhiyun 
1337*4882a593Smuzhiyun 	    TP_fast_assign(
1338*4882a593Smuzhiyun 		    __entry->fid = vnode->fid;
1339*4882a593Smuzhiyun 			   ),
1340*4882a593Smuzhiyun 
1341*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x",
1342*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique)
1343*4882a593Smuzhiyun 	    );
1344*4882a593Smuzhiyun 
1345*4882a593Smuzhiyun TRACE_EVENT(afs_silly_rename,
1346*4882a593Smuzhiyun 	    TP_PROTO(struct afs_vnode *vnode, bool done),
1347*4882a593Smuzhiyun 
1348*4882a593Smuzhiyun 	    TP_ARGS(vnode, done),
1349*4882a593Smuzhiyun 
1350*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1351*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1352*4882a593Smuzhiyun 		    __field(bool,			done		)
1353*4882a593Smuzhiyun 			     ),
1354*4882a593Smuzhiyun 
1355*4882a593Smuzhiyun 	    TP_fast_assign(
1356*4882a593Smuzhiyun 		    __entry->fid = vnode->fid;
1357*4882a593Smuzhiyun 		    __entry->done = done;
1358*4882a593Smuzhiyun 			   ),
1359*4882a593Smuzhiyun 
1360*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x done=%u",
1361*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1362*4882a593Smuzhiyun 		      __entry->done)
1363*4882a593Smuzhiyun 	    );
1364*4882a593Smuzhiyun 
1365*4882a593Smuzhiyun TRACE_EVENT(afs_get_tree,
1366*4882a593Smuzhiyun 	    TP_PROTO(struct afs_cell *cell, struct afs_volume *volume),
1367*4882a593Smuzhiyun 
1368*4882a593Smuzhiyun 	    TP_ARGS(cell, volume),
1369*4882a593Smuzhiyun 
1370*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1371*4882a593Smuzhiyun 		    __field(u64,			vid		)
1372*4882a593Smuzhiyun 		    __array(char,			cell, 24	)
1373*4882a593Smuzhiyun 		    __array(char,			volume, 24	)
1374*4882a593Smuzhiyun 			     ),
1375*4882a593Smuzhiyun 
1376*4882a593Smuzhiyun 	    TP_fast_assign(
1377*4882a593Smuzhiyun 		    int __len;
1378*4882a593Smuzhiyun 		    __entry->vid = volume->vid;
1379*4882a593Smuzhiyun 		    __len = min_t(int, cell->name_len, 23);
1380*4882a593Smuzhiyun 		    memcpy(__entry->cell, cell->name, __len);
1381*4882a593Smuzhiyun 		    __entry->cell[__len] = 0;
1382*4882a593Smuzhiyun 		    __len = min_t(int, volume->name_len, 23);
1383*4882a593Smuzhiyun 		    memcpy(__entry->volume, volume->name, __len);
1384*4882a593Smuzhiyun 		    __entry->volume[__len] = 0;
1385*4882a593Smuzhiyun 			   ),
1386*4882a593Smuzhiyun 
1387*4882a593Smuzhiyun 	    TP_printk("--- MOUNT %s:%s %llx",
1388*4882a593Smuzhiyun 		      __entry->cell, __entry->volume, __entry->vid)
1389*4882a593Smuzhiyun 	    );
1390*4882a593Smuzhiyun 
1391*4882a593Smuzhiyun TRACE_EVENT(afs_cb_break,
1392*4882a593Smuzhiyun 	    TP_PROTO(struct afs_fid *fid, unsigned int cb_break,
1393*4882a593Smuzhiyun 		     enum afs_cb_break_reason reason, bool skipped),
1394*4882a593Smuzhiyun 
1395*4882a593Smuzhiyun 	    TP_ARGS(fid, cb_break, reason, skipped),
1396*4882a593Smuzhiyun 
1397*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1398*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1399*4882a593Smuzhiyun 		    __field(unsigned int,		cb_break	)
1400*4882a593Smuzhiyun 		    __field(enum afs_cb_break_reason,	reason		)
1401*4882a593Smuzhiyun 		    __field(bool,			skipped		)
1402*4882a593Smuzhiyun 			     ),
1403*4882a593Smuzhiyun 
1404*4882a593Smuzhiyun 	    TP_fast_assign(
1405*4882a593Smuzhiyun 		    __entry->fid	= *fid;
1406*4882a593Smuzhiyun 		    __entry->cb_break	= cb_break;
1407*4882a593Smuzhiyun 		    __entry->reason	= reason;
1408*4882a593Smuzhiyun 		    __entry->skipped	= skipped;
1409*4882a593Smuzhiyun 			   ),
1410*4882a593Smuzhiyun 
1411*4882a593Smuzhiyun 	    TP_printk("%llx:%llx:%x b=%x s=%u %s",
1412*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1413*4882a593Smuzhiyun 		      __entry->cb_break,
1414*4882a593Smuzhiyun 		      __entry->skipped,
1415*4882a593Smuzhiyun 		      __print_symbolic(__entry->reason, afs_cb_break_reasons))
1416*4882a593Smuzhiyun 	    );
1417*4882a593Smuzhiyun 
1418*4882a593Smuzhiyun TRACE_EVENT(afs_cb_miss,
1419*4882a593Smuzhiyun 	    TP_PROTO(struct afs_fid *fid, enum afs_cb_break_reason reason),
1420*4882a593Smuzhiyun 
1421*4882a593Smuzhiyun 	    TP_ARGS(fid, reason),
1422*4882a593Smuzhiyun 
1423*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1424*4882a593Smuzhiyun 		    __field_struct(struct afs_fid,	fid		)
1425*4882a593Smuzhiyun 		    __field(enum afs_cb_break_reason,	reason		)
1426*4882a593Smuzhiyun 			     ),
1427*4882a593Smuzhiyun 
1428*4882a593Smuzhiyun 	    TP_fast_assign(
1429*4882a593Smuzhiyun 		    __entry->fid	= *fid;
1430*4882a593Smuzhiyun 		    __entry->reason	= reason;
1431*4882a593Smuzhiyun 			   ),
1432*4882a593Smuzhiyun 
1433*4882a593Smuzhiyun 	    TP_printk(" %llx:%llx:%x %s",
1434*4882a593Smuzhiyun 		      __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
1435*4882a593Smuzhiyun 		      __print_symbolic(__entry->reason, afs_cb_break_reasons))
1436*4882a593Smuzhiyun 	    );
1437*4882a593Smuzhiyun 
1438*4882a593Smuzhiyun TRACE_EVENT(afs_server,
1439*4882a593Smuzhiyun 	    TP_PROTO(struct afs_server *server, int ref, int active,
1440*4882a593Smuzhiyun 		     enum afs_server_trace reason),
1441*4882a593Smuzhiyun 
1442*4882a593Smuzhiyun 	    TP_ARGS(server, ref, active, reason),
1443*4882a593Smuzhiyun 
1444*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1445*4882a593Smuzhiyun 		    __field(unsigned int,		server		)
1446*4882a593Smuzhiyun 		    __field(int,			ref		)
1447*4882a593Smuzhiyun 		    __field(int,			active		)
1448*4882a593Smuzhiyun 		    __field(int,			reason		)
1449*4882a593Smuzhiyun 			     ),
1450*4882a593Smuzhiyun 
1451*4882a593Smuzhiyun 	    TP_fast_assign(
1452*4882a593Smuzhiyun 		    __entry->server = server->debug_id;
1453*4882a593Smuzhiyun 		    __entry->ref = ref;
1454*4882a593Smuzhiyun 		    __entry->active = active;
1455*4882a593Smuzhiyun 		    __entry->reason = reason;
1456*4882a593Smuzhiyun 			   ),
1457*4882a593Smuzhiyun 
1458*4882a593Smuzhiyun 	    TP_printk("s=%08x %s u=%d a=%d",
1459*4882a593Smuzhiyun 		      __entry->server,
1460*4882a593Smuzhiyun 		      __print_symbolic(__entry->reason, afs_server_traces),
1461*4882a593Smuzhiyun 		      __entry->ref,
1462*4882a593Smuzhiyun 		      __entry->active)
1463*4882a593Smuzhiyun 	    );
1464*4882a593Smuzhiyun 
1465*4882a593Smuzhiyun TRACE_EVENT(afs_volume,
1466*4882a593Smuzhiyun 	    TP_PROTO(afs_volid_t vid, int ref, enum afs_volume_trace reason),
1467*4882a593Smuzhiyun 
1468*4882a593Smuzhiyun 	    TP_ARGS(vid, ref, reason),
1469*4882a593Smuzhiyun 
1470*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1471*4882a593Smuzhiyun 		    __field(afs_volid_t,		vid		)
1472*4882a593Smuzhiyun 		    __field(int,			ref		)
1473*4882a593Smuzhiyun 		    __field(enum afs_volume_trace,	reason		)
1474*4882a593Smuzhiyun 			     ),
1475*4882a593Smuzhiyun 
1476*4882a593Smuzhiyun 	    TP_fast_assign(
1477*4882a593Smuzhiyun 		    __entry->vid = vid;
1478*4882a593Smuzhiyun 		    __entry->ref = ref;
1479*4882a593Smuzhiyun 		    __entry->reason = reason;
1480*4882a593Smuzhiyun 			   ),
1481*4882a593Smuzhiyun 
1482*4882a593Smuzhiyun 	    TP_printk("V=%llx %s u=%d",
1483*4882a593Smuzhiyun 		      __entry->vid,
1484*4882a593Smuzhiyun 		      __print_symbolic(__entry->reason, afs_volume_traces),
1485*4882a593Smuzhiyun 		      __entry->ref)
1486*4882a593Smuzhiyun 	    );
1487*4882a593Smuzhiyun 
1488*4882a593Smuzhiyun TRACE_EVENT(afs_cell,
1489*4882a593Smuzhiyun 	    TP_PROTO(unsigned int cell_debug_id, int usage, int active,
1490*4882a593Smuzhiyun 		     enum afs_cell_trace reason),
1491*4882a593Smuzhiyun 
1492*4882a593Smuzhiyun 	    TP_ARGS(cell_debug_id, usage, active, reason),
1493*4882a593Smuzhiyun 
1494*4882a593Smuzhiyun 	    TP_STRUCT__entry(
1495*4882a593Smuzhiyun 		    __field(unsigned int,		cell		)
1496*4882a593Smuzhiyun 		    __field(int,			usage		)
1497*4882a593Smuzhiyun 		    __field(int,			active		)
1498*4882a593Smuzhiyun 		    __field(int,			reason		)
1499*4882a593Smuzhiyun 			     ),
1500*4882a593Smuzhiyun 
1501*4882a593Smuzhiyun 	    TP_fast_assign(
1502*4882a593Smuzhiyun 		    __entry->cell = cell_debug_id;
1503*4882a593Smuzhiyun 		    __entry->usage = usage;
1504*4882a593Smuzhiyun 		    __entry->active = active;
1505*4882a593Smuzhiyun 		    __entry->reason = reason;
1506*4882a593Smuzhiyun 			   ),
1507*4882a593Smuzhiyun 
1508*4882a593Smuzhiyun 	    TP_printk("L=%08x %s u=%d a=%d",
1509*4882a593Smuzhiyun 		      __entry->cell,
1510*4882a593Smuzhiyun 		      __print_symbolic(__entry->reason, afs_cell_traces),
1511*4882a593Smuzhiyun 		      __entry->usage,
1512*4882a593Smuzhiyun 		      __entry->active)
1513*4882a593Smuzhiyun 	    );
1514*4882a593Smuzhiyun 
1515*4882a593Smuzhiyun #endif /* _TRACE_AFS_H */
1516*4882a593Smuzhiyun 
1517*4882a593Smuzhiyun /* This part must be outside protection */
1518*4882a593Smuzhiyun #include <trace/define_trace.h>
1519