brintos

brintos / linux-shallow public Read only

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