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