| 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| 2 | /* AFS tracepoints |
| 3 | * |
| 4 | * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. |
| 5 | * Written by David Howells (dhowells@redhat.com) |
| 6 | */ |
| 7 | #undef TRACE_SYSTEM |
| 8 | #define TRACE_SYSTEM afs |
| 9 | |
| 10 | #if !defined(_TRACE_AFS_H) || defined(TRACE_HEADER_MULTI_READ) |
| 11 | #define _TRACE_AFS_H |
| 12 | |
| 13 | #include <linux/tracepoint.h> |
| 14 | |
| 15 | /* |
| 16 | * Define enums for tracing information. |
| 17 | */ |
| 18 | #ifndef __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY |
| 19 | #define __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY |
| 20 | |
| 21 | enum 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 | |
| 78 | enum 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 | |
| 86 | enum 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 | |
| 98 | enum 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_async_abort, "ASYAB") \ |
| 122 | EM(afs_call_trace_async_kill, "ASYKL") \ |
| 123 | EM(afs_call_trace_free, "FREE ") \ |
| 124 | EM(afs_call_trace_get, "GET ") \ |
| 125 | EM(afs_call_trace_put, "PUT ") \ |
| 126 | EM(afs_call_trace_wake, "WAKE ") \ |
| 127 | E_(afs_call_trace_work, "QUEUE") |
| 128 | |
| 129 | #define afs_server_traces \ |
| 130 | EM(afs_server_trace_callback, "CALLBACK ") \ |
| 131 | EM(afs_server_trace_destroy, "DESTROY ") \ |
| 132 | EM(afs_server_trace_free, "FREE ") \ |
| 133 | EM(afs_server_trace_gc, "GC ") \ |
| 134 | EM(afs_server_trace_get_probe, "GET probe") \ |
| 135 | EM(afs_server_trace_purging, "PURGE ") \ |
| 136 | EM(afs_server_trace_put_cbi, "PUT cbi ") \ |
| 137 | EM(afs_server_trace_put_probe, "PUT probe") \ |
| 138 | EM(afs_server_trace_see_destroyer, "SEE destr") \ |
| 139 | EM(afs_server_trace_see_expired, "SEE expd ") \ |
| 140 | EM(afs_server_trace_see_purge, "SEE purge") \ |
| 141 | EM(afs_server_trace_see_timer, "SEE timer") \ |
| 142 | EM(afs_server_trace_unuse_call, "UNU call ") \ |
| 143 | EM(afs_server_trace_unuse_create_fail, "UNU cfail") \ |
| 144 | EM(afs_server_trace_unuse_slist, "UNU slist") \ |
| 145 | EM(afs_server_trace_unuse_slist_isort, "UNU isort") \ |
| 146 | EM(afs_server_trace_update, "UPDATE ") \ |
| 147 | EM(afs_server_trace_use_by_uuid, "USE uuid ") \ |
| 148 | EM(afs_server_trace_use_cm_call, "USE cm-cl") \ |
| 149 | EM(afs_server_trace_use_get_caps, "USE gcaps") \ |
| 150 | EM(afs_server_trace_use_give_up_cb, "USE gvupc") \ |
| 151 | EM(afs_server_trace_use_install, "USE inst ") \ |
| 152 | E_(afs_server_trace_wait_create, "WAIT crt ") |
| 153 | |
| 154 | #define afs_volume_traces \ |
| 155 | EM(afs_volume_trace_alloc, "ALLOC ") \ |
| 156 | EM(afs_volume_trace_free, "FREE ") \ |
| 157 | EM(afs_volume_trace_get_alloc_sbi, "GET sbi-alloc ") \ |
| 158 | EM(afs_volume_trace_get_callback, "GET callback ") \ |
| 159 | EM(afs_volume_trace_get_cell_insert, "GET cell-insrt") \ |
| 160 | EM(afs_volume_trace_get_new_op, "GET op-new ") \ |
| 161 | EM(afs_volume_trace_get_query_alias, "GET cell-alias") \ |
| 162 | EM(afs_volume_trace_put_callback, "PUT callback ") \ |
| 163 | EM(afs_volume_trace_put_cell_dup, "PUT cell-dup ") \ |
| 164 | EM(afs_volume_trace_put_cell_root, "PUT cell-root ") \ |
| 165 | EM(afs_volume_trace_put_destroy_sbi, "PUT sbi-destry") \ |
| 166 | EM(afs_volume_trace_put_free_fc, "PUT fc-free ") \ |
| 167 | EM(afs_volume_trace_put_put_op, "PUT op-put ") \ |
| 168 | EM(afs_volume_trace_put_query_alias, "PUT cell-alias") \ |
| 169 | EM(afs_volume_trace_put_validate_fc, "PUT fc-validat") \ |
| 170 | E_(afs_volume_trace_remove, "REMOVE ") |
| 171 | |
| 172 | #define afs_cell_traces \ |
| 173 | EM(afs_cell_trace_alloc, "ALLOC ") \ |
| 174 | EM(afs_cell_trace_destroy, "DESTROY ") \ |
| 175 | EM(afs_cell_trace_free, "FREE ") \ |
| 176 | EM(afs_cell_trace_get_atcell, "GET atcell") \ |
| 177 | EM(afs_cell_trace_get_server, "GET server") \ |
| 178 | EM(afs_cell_trace_get_vol, "GET vol ") \ |
| 179 | EM(afs_cell_trace_purge, "PURGE ") \ |
| 180 | EM(afs_cell_trace_put_atcell, "PUT atcell") \ |
| 181 | EM(afs_cell_trace_put_candidate, "PUT candid") \ |
| 182 | EM(afs_cell_trace_put_final, "PUT final ") \ |
| 183 | EM(afs_cell_trace_put_server, "PUT server") \ |
| 184 | EM(afs_cell_trace_put_vol, "PUT vol ") \ |
| 185 | EM(afs_cell_trace_queue_again, "QUE again ") \ |
| 186 | EM(afs_cell_trace_queue_dns, "QUE dns ") \ |
| 187 | EM(afs_cell_trace_queue_new, "QUE new ") \ |
| 188 | EM(afs_cell_trace_queue_purge, "QUE purge ") \ |
| 189 | EM(afs_cell_trace_manage, "MANAGE ") \ |
| 190 | EM(afs_cell_trace_managed, "MANAGED ") \ |
| 191 | EM(afs_cell_trace_see_source, "SEE source") \ |
| 192 | EM(afs_cell_trace_see_mgmt_timer, "SEE mtimer") \ |
| 193 | EM(afs_cell_trace_unuse_alias, "UNU alias ") \ |
| 194 | EM(afs_cell_trace_unuse_check_alias, "UNU chk-al") \ |
| 195 | EM(afs_cell_trace_unuse_delete, "UNU delete") \ |
| 196 | EM(afs_cell_trace_unuse_dynroot_mntpt, "UNU dyn-mp") \ |
| 197 | EM(afs_cell_trace_unuse_fc, "UNU fc ") \ |
| 198 | EM(afs_cell_trace_unuse_lookup_dynroot, "UNU lu-dyn") \ |
| 199 | EM(afs_cell_trace_unuse_lookup_error, "UNU lu-err") \ |
| 200 | EM(afs_cell_trace_unuse_mntpt, "UNU mntpt ") \ |
| 201 | EM(afs_cell_trace_unuse_no_pin, "UNU no-pin") \ |
| 202 | EM(afs_cell_trace_unuse_parse, "UNU parse ") \ |
| 203 | EM(afs_cell_trace_unuse_pin, "UNU pin ") \ |
| 204 | EM(afs_cell_trace_unuse_sbi, "UNU sbi ") \ |
| 205 | EM(afs_cell_trace_unuse_ws, "UNU ws ") \ |
| 206 | EM(afs_cell_trace_use_alias, "USE alias ") \ |
| 207 | EM(afs_cell_trace_use_check_alias, "USE chk-al") \ |
| 208 | EM(afs_cell_trace_use_fc, "USE fc ") \ |
| 209 | EM(afs_cell_trace_use_fc_alias, "USE fc-al ") \ |
| 210 | EM(afs_cell_trace_use_lookup_add, "USE lu-add") \ |
| 211 | EM(afs_cell_trace_use_lookup_canonical, "USE lu-can") \ |
| 212 | EM(afs_cell_trace_use_lookup_dynroot, "USE lu-dyn") \ |
| 213 | EM(afs_cell_trace_use_lookup_mntpt, "USE lu-mpt") \ |
| 214 | EM(afs_cell_trace_use_lookup_mount, "USE lu-mnt") \ |
| 215 | EM(afs_cell_trace_use_lookup_ws, "USE lu-ws ") \ |
| 216 | EM(afs_cell_trace_use_mntpt, "USE mntpt ") \ |
| 217 | EM(afs_cell_trace_use_pin, "USE pin ") \ |
| 218 | EM(afs_cell_trace_use_probe, "USE probe ") \ |
| 219 | EM(afs_cell_trace_use_sbi, "USE sbi ") \ |
| 220 | E_(afs_cell_trace_wait, "WAIT ") |
| 221 | |
| 222 | #define afs_alist_traces \ |
| 223 | EM(afs_alist_trace_alloc, "ALLOC ") \ |
| 224 | EM(afs_alist_trace_get_estate, "GET estate") \ |
| 225 | EM(afs_alist_trace_get_vlgetcaps, "GET vgtcap") \ |
| 226 | EM(afs_alist_trace_get_vlprobe, "GET vprobe") \ |
| 227 | EM(afs_alist_trace_get_vlrotate_set, "GET vl-rot") \ |
| 228 | EM(afs_alist_trace_put_estate, "PUT estate") \ |
| 229 | EM(afs_alist_trace_put_getaddru, "PUT GtAdrU") \ |
| 230 | EM(afs_alist_trace_put_parse_empty, "PUT p-empt") \ |
| 231 | EM(afs_alist_trace_put_parse_error, "PUT p-err ") \ |
| 232 | EM(afs_alist_trace_put_server_create, "PUT sv-crt") \ |
| 233 | EM(afs_alist_trace_put_server_oom, "PUT sv-oom") \ |
| 234 | EM(afs_alist_trace_put_server_update, "PUT sv-upd") \ |
| 235 | EM(afs_alist_trace_put_vlgetcaps, "PUT vgtcap") \ |
| 236 | EM(afs_alist_trace_put_vlprobe, "PUT vprobe") \ |
| 237 | EM(afs_alist_trace_put_vlrotate_end, "PUT vr-end") \ |
| 238 | EM(afs_alist_trace_put_vlrotate_fail, "PUT vr-fai") \ |
| 239 | EM(afs_alist_trace_put_vlrotate_next, "PUT vr-nxt") \ |
| 240 | EM(afs_alist_trace_put_vlrotate_restart,"PUT vr-rst") \ |
| 241 | EM(afs_alist_trace_put_vlserver, "PUT vlsrvr") \ |
| 242 | EM(afs_alist_trace_put_vlserver_old, "PUT vs-old") \ |
| 243 | E_(afs_alist_trace_free, "FREE ") |
| 244 | |
| 245 | #define afs_estate_traces \ |
| 246 | EM(afs_estate_trace_alloc_probe, "ALLOC prob") \ |
| 247 | EM(afs_estate_trace_alloc_server, "ALLOC srvr") \ |
| 248 | EM(afs_estate_trace_get_server_state, "GET srv-st") \ |
| 249 | EM(afs_estate_trace_get_getcaps, "GET getcap") \ |
| 250 | EM(afs_estate_trace_put_getcaps, "PUT getcap") \ |
| 251 | EM(afs_estate_trace_put_probe, "PUT probe ") \ |
| 252 | EM(afs_estate_trace_put_server, "PUT server") \ |
| 253 | EM(afs_estate_trace_put_server_state, "PUT srv-st") \ |
| 254 | E_(afs_estate_trace_free, "FREE ") |
| 255 | |
| 256 | #define afs_fs_operations \ |
| 257 | EM(afs_FS_FetchData, "FS.FetchData") \ |
| 258 | EM(afs_FS_FetchStatus, "FS.FetchStatus") \ |
| 259 | EM(afs_FS_StoreData, "FS.StoreData") \ |
| 260 | EM(afs_FS_StoreStatus, "FS.StoreStatus") \ |
| 261 | EM(afs_FS_RemoveFile, "FS.RemoveFile") \ |
| 262 | EM(afs_FS_CreateFile, "FS.CreateFile") \ |
| 263 | EM(afs_FS_Rename, "FS.Rename") \ |
| 264 | EM(afs_FS_Symlink, "FS.Symlink") \ |
| 265 | EM(afs_FS_Link, "FS.Link") \ |
| 266 | EM(afs_FS_MakeDir, "FS.MakeDir") \ |
| 267 | EM(afs_FS_RemoveDir, "FS.RemoveDir") \ |
| 268 | EM(afs_FS_GetVolumeInfo, "FS.GetVolumeInfo") \ |
| 269 | EM(afs_FS_GetVolumeStatus, "FS.GetVolumeStatus") \ |
| 270 | EM(afs_FS_GetRootVolume, "FS.GetRootVolume") \ |
| 271 | EM(afs_FS_SetLock, "FS.SetLock") \ |
| 272 | EM(afs_FS_ExtendLock, "FS.ExtendLock") \ |
| 273 | EM(afs_FS_ReleaseLock, "FS.ReleaseLock") \ |
| 274 | EM(afs_FS_Lookup, "FS.Lookup") \ |
| 275 | EM(afs_FS_InlineBulkStatus, "FS.InlineBulkStatus") \ |
| 276 | EM(afs_FS_FetchData64, "FS.FetchData64") \ |
| 277 | EM(afs_FS_StoreData64, "FS.StoreData64") \ |
| 278 | EM(afs_FS_GiveUpAllCallBacks, "FS.GiveUpAllCallBacks") \ |
| 279 | EM(afs_FS_GetCapabilities, "FS.GetCapabilities") \ |
| 280 | EM(yfs_FS_FetchACL, "YFS.FetchACL") \ |
| 281 | EM(yfs_FS_FetchStatus, "YFS.FetchStatus") \ |
| 282 | EM(yfs_FS_StoreACL, "YFS.StoreACL") \ |
| 283 | EM(yfs_FS_StoreStatus, "YFS.StoreStatus") \ |
| 284 | EM(yfs_FS_RemoveFile, "YFS.RemoveFile") \ |
| 285 | EM(yfs_FS_CreateFile, "YFS.CreateFile") \ |
| 286 | EM(yfs_FS_Rename, "YFS.Rename") \ |
| 287 | EM(yfs_FS_Symlink, "YFS.Symlink") \ |
| 288 | EM(yfs_FS_Link, "YFS.Link") \ |
| 289 | EM(yfs_FS_MakeDir, "YFS.MakeDir") \ |
| 290 | EM(yfs_FS_RemoveDir, "YFS.RemoveDir") \ |
| 291 | EM(yfs_FS_GetVolumeStatus, "YFS.GetVolumeStatus") \ |
| 292 | EM(yfs_FS_SetVolumeStatus, "YFS.SetVolumeStatus") \ |
| 293 | EM(yfs_FS_SetLock, "YFS.SetLock") \ |
| 294 | EM(yfs_FS_ExtendLock, "YFS.ExtendLock") \ |
| 295 | EM(yfs_FS_ReleaseLock, "YFS.ReleaseLock") \ |
| 296 | EM(yfs_FS_Lookup, "YFS.Lookup") \ |
| 297 | EM(yfs_FS_FlushCPS, "YFS.FlushCPS") \ |
| 298 | EM(yfs_FS_FetchOpaqueACL, "YFS.FetchOpaqueACL") \ |
| 299 | EM(yfs_FS_WhoAmI, "YFS.WhoAmI") \ |
| 300 | EM(yfs_FS_RemoveACL, "YFS.RemoveACL") \ |
| 301 | EM(yfs_FS_RemoveFile2, "YFS.RemoveFile2") \ |
| 302 | EM(yfs_FS_StoreOpaqueACL2, "YFS.StoreOpaqueACL2") \ |
| 303 | EM(yfs_FS_InlineBulkStatus, "YFS.InlineBulkStatus") \ |
| 304 | EM(yfs_FS_FetchData64, "YFS.FetchData64") \ |
| 305 | EM(yfs_FS_StoreData64, "YFS.StoreData64") \ |
| 306 | E_(yfs_FS_UpdateSymlink, "YFS.UpdateSymlink") |
| 307 | |
| 308 | #define afs_vl_operations \ |
| 309 | EM(afs_VL_GetEntryByNameU, "VL.GetEntryByNameU") \ |
| 310 | EM(afs_VL_GetAddrsU, "VL.GetAddrsU") \ |
| 311 | EM(afs_YFSVL_GetEndpoints, "YFSVL.GetEndpoints") \ |
| 312 | EM(afs_YFSVL_GetCellName, "YFSVL.GetCellName") \ |
| 313 | E_(afs_VL_GetCapabilities, "VL.GetCapabilities") |
| 314 | |
| 315 | #define afs_cm_operations \ |
| 316 | EM(afs_CB_CallBack, "CB.CallBack") \ |
| 317 | EM(afs_CB_InitCallBackState, "CB.InitCallBackState") \ |
| 318 | EM(afs_CB_Probe, "CB.Probe") \ |
| 319 | EM(afs_CB_GetLock, "CB.GetLock") \ |
| 320 | EM(afs_CB_GetCE, "CB.GetCE") \ |
| 321 | EM(afs_CB_GetXStatsVersion, "CB.GetXStatsVersion") \ |
| 322 | EM(afs_CB_GetXStats, "CB.GetXStats") \ |
| 323 | EM(afs_CB_InitCallBackState3, "CB.InitCallBackState3") \ |
| 324 | E_(afs_CB_ProbeUuid, "CB.ProbeUuid") |
| 325 | |
| 326 | #define yfs_cm_operations \ |
| 327 | EM(yfs_CB_Probe, "YFSCB.Probe") \ |
| 328 | EM(yfs_CB_GetLock, "YFSCB.GetLock") \ |
| 329 | EM(yfs_CB_XStatsVersion, "YFSCB.XStatsVersion") \ |
| 330 | EM(yfs_CB_GetXStats, "YFSCB.GetXStats") \ |
| 331 | EM(yfs_CB_InitCallBackState3, "YFSCB.InitCallBackState3") \ |
| 332 | EM(yfs_CB_ProbeUuid, "YFSCB.ProbeUuid") \ |
| 333 | EM(yfs_CB_GetServerPrefs, "YFSCB.GetServerPrefs") \ |
| 334 | EM(yfs_CB_GetCellServDV, "YFSCB.GetCellServDV") \ |
| 335 | EM(yfs_CB_GetLocalCell, "YFSCB.GetLocalCell") \ |
| 336 | EM(yfs_CB_GetCacheConfig, "YFSCB.GetCacheConfig") \ |
| 337 | EM(yfs_CB_GetCellByNum, "YFSCB.GetCellByNum") \ |
| 338 | EM(yfs_CB_TellMeAboutYourself, "YFSCB.TellMeAboutYourself") \ |
| 339 | E_(yfs_CB_CallBack, "YFSCB.CallBack") |
| 340 | |
| 341 | #define afs_cb_promise_traces \ |
| 342 | EM(afs_cb_promise_clear_cb_break, "CLEAR cb-break") \ |
| 343 | EM(afs_cb_promise_clear_rmdir, "CLEAR rmdir") \ |
| 344 | EM(afs_cb_promise_clear_rotate_server, "CLEAR rot-srv") \ |
| 345 | EM(afs_cb_promise_clear_server_change, "CLEAR srv-chg") \ |
| 346 | EM(afs_cb_promise_clear_vol_init_cb, "CLEAR vol-init-cb") \ |
| 347 | EM(afs_cb_promise_set_apply_cb, "SET apply-cb") \ |
| 348 | EM(afs_cb_promise_set_new_inode, "SET new-inode") \ |
| 349 | E_(afs_cb_promise_set_new_symlink, "SET new-symlink") |
| 350 | |
| 351 | #define afs_vnode_invalid_traces \ |
| 352 | EM(afs_vnode_invalid_trace_cb_ro_snapshot, "cb-ro-snapshot") \ |
| 353 | EM(afs_vnode_invalid_trace_cb_scrub, "cb-scrub") \ |
| 354 | EM(afs_vnode_invalid_trace_cb_v_break, "cb-v-break") \ |
| 355 | EM(afs_vnode_invalid_trace_expired, "expired") \ |
| 356 | EM(afs_vnode_invalid_trace_no_cb_promise, "no-cb-promise") \ |
| 357 | EM(afs_vnode_invalid_trace_vol_expired, "vol-expired") \ |
| 358 | EM(afs_vnode_invalid_trace_zap_data, "zap-data") \ |
| 359 | E_(afs_vnode_valid_trace, "valid") |
| 360 | |
| 361 | #define afs_dir_invalid_traces \ |
| 362 | EM(afs_dir_invalid_edit_add_bad_size, "edit-add-bad-size") \ |
| 363 | EM(afs_dir_invalid_edit_add_no_slots, "edit-add-no-slots") \ |
| 364 | EM(afs_dir_invalid_edit_add_too_many_blocks, "edit-add-too-many-blocks") \ |
| 365 | EM(afs_dir_invalid_edit_get_block, "edit-get-block") \ |
| 366 | EM(afs_dir_invalid_edit_mkdir, "edit-mkdir") \ |
| 367 | EM(afs_dir_invalid_edit_rem_bad_size, "edit-rem-bad-size") \ |
| 368 | EM(afs_dir_invalid_edit_rem_wrong_name, "edit-rem-wrong_name") \ |
| 369 | EM(afs_dir_invalid_edit_upd_bad_size, "edit-upd-bad-size") \ |
| 370 | EM(afs_dir_invalid_edit_upd_no_dd, "edit-upd-no-dotdot") \ |
| 371 | EM(afs_dir_invalid_dv_mismatch, "dv-mismatch") \ |
| 372 | EM(afs_dir_invalid_inval_folio, "inv-folio") \ |
| 373 | EM(afs_dir_invalid_iter_stale, "iter-stale") \ |
| 374 | EM(afs_dir_invalid_reclaimed_folio, "reclaimed-folio") \ |
| 375 | EM(afs_dir_invalid_release_folio, "rel-folio") \ |
| 376 | EM(afs_dir_invalid_remote, "remote") \ |
| 377 | E_(afs_dir_invalid_subdir_removed, "subdir-removed") |
| 378 | |
| 379 | #define afs_edit_dir_ops \ |
| 380 | EM(afs_edit_dir_create, "create") \ |
| 381 | EM(afs_edit_dir_create_error, "c_fail") \ |
| 382 | EM(afs_edit_dir_create_inval, "c_invl") \ |
| 383 | EM(afs_edit_dir_create_nospc, "c_nspc") \ |
| 384 | EM(afs_edit_dir_delete, "delete") \ |
| 385 | EM(afs_edit_dir_delete_error, "d_err ") \ |
| 386 | EM(afs_edit_dir_delete_inval, "d_invl") \ |
| 387 | EM(afs_edit_dir_delete_noent, "d_nent") \ |
| 388 | EM(afs_edit_dir_mkdir, "mk_ent") \ |
| 389 | EM(afs_edit_dir_update_dd, "u_ddot") \ |
| 390 | EM(afs_edit_dir_update_error, "u_fail") \ |
| 391 | EM(afs_edit_dir_update_inval, "u_invl") \ |
| 392 | E_(afs_edit_dir_update_nodd, "u_nodd") |
| 393 | |
| 394 | #define afs_edit_dir_reasons \ |
| 395 | EM(afs_edit_dir_for_create, "Create") \ |
| 396 | EM(afs_edit_dir_for_link, "Link ") \ |
| 397 | EM(afs_edit_dir_for_mkdir, "MkDir ") \ |
| 398 | EM(afs_edit_dir_for_rename_0, "Renam0") \ |
| 399 | EM(afs_edit_dir_for_rename_1, "Renam1") \ |
| 400 | EM(afs_edit_dir_for_rename_2, "Renam2") \ |
| 401 | EM(afs_edit_dir_for_rename_sub, "RnmSub") \ |
| 402 | EM(afs_edit_dir_for_rmdir, "RmDir ") \ |
| 403 | EM(afs_edit_dir_for_silly_0, "S_Ren0") \ |
| 404 | EM(afs_edit_dir_for_silly_1, "S_Ren1") \ |
| 405 | EM(afs_edit_dir_for_symlink, "Symlnk") \ |
| 406 | E_(afs_edit_dir_for_unlink, "Unlink") |
| 407 | |
| 408 | #define afs_eproto_causes \ |
| 409 | EM(afs_eproto_bad_status, "BadStatus") \ |
| 410 | EM(afs_eproto_cb_count, "CbCount") \ |
| 411 | EM(afs_eproto_cb_fid_count, "CbFidCount") \ |
| 412 | EM(afs_eproto_cellname_len, "CellNameLen") \ |
| 413 | EM(afs_eproto_file_type, "FileTYpe") \ |
| 414 | EM(afs_eproto_ibulkst_cb_count, "IBS.CbCount") \ |
| 415 | EM(afs_eproto_ibulkst_count, "IBS.FidCount") \ |
| 416 | EM(afs_eproto_motd_len, "MotdLen") \ |
| 417 | EM(afs_eproto_offline_msg_len, "OfflineMsgLen") \ |
| 418 | EM(afs_eproto_volname_len, "VolNameLen") \ |
| 419 | EM(afs_eproto_yvl_fsendpt4_len, "YVL.FsEnd4Len") \ |
| 420 | EM(afs_eproto_yvl_fsendpt6_len, "YVL.FsEnd6Len") \ |
| 421 | EM(afs_eproto_yvl_fsendpt_num, "YVL.FsEndCount") \ |
| 422 | EM(afs_eproto_yvl_fsendpt_type, "YVL.FsEndType") \ |
| 423 | EM(afs_eproto_yvl_vlendpt4_len, "YVL.VlEnd4Len") \ |
| 424 | EM(afs_eproto_yvl_vlendpt6_len, "YVL.VlEnd6Len") \ |
| 425 | E_(afs_eproto_yvl_vlendpt_type, "YVL.VlEndType") |
| 426 | |
| 427 | #define afs_io_errors \ |
| 428 | EM(afs_io_error_cm_reply, "CM_REPLY") \ |
| 429 | EM(afs_io_error_extract, "EXTRACT") \ |
| 430 | EM(afs_io_error_fs_probe_fail, "FS_PROBE_FAIL") \ |
| 431 | EM(afs_io_error_vl_lookup_fail, "VL_LOOKUP_FAIL") \ |
| 432 | E_(afs_io_error_vl_probe_fail, "VL_PROBE_FAIL") |
| 433 | |
| 434 | #define afs_file_errors \ |
| 435 | EM(afs_file_error_dir_bad_magic, "DIR_BAD_MAGIC") \ |
| 436 | EM(afs_file_error_dir_big, "DIR_BIG") \ |
| 437 | EM(afs_file_error_dir_missing_page, "DIR_MISSING_PAGE") \ |
| 438 | EM(afs_file_error_dir_name_too_long, "DIR_NAME_TOO_LONG") \ |
| 439 | EM(afs_file_error_dir_over_end, "DIR_ENT_OVER_END") \ |
| 440 | EM(afs_file_error_dir_small, "DIR_SMALL") \ |
| 441 | EM(afs_file_error_dir_unmarked_ext, "DIR_UNMARKED_EXT") \ |
| 442 | EM(afs_file_error_symlink_big, "SYM_BIG") \ |
| 443 | EM(afs_file_error_mntpt, "MNTPT_READ_FAILED") \ |
| 444 | E_(afs_file_error_writeback_fail, "WRITEBACK_FAILED") |
| 445 | |
| 446 | #define afs_flock_types \ |
| 447 | EM(F_RDLCK, "RDLCK") \ |
| 448 | EM(F_WRLCK, "WRLCK") \ |
| 449 | E_(F_UNLCK, "UNLCK") |
| 450 | |
| 451 | #define afs_flock_states \ |
| 452 | EM(AFS_VNODE_LOCK_NONE, "NONE") \ |
| 453 | EM(AFS_VNODE_LOCK_WAITING_FOR_CB, "WAIT_FOR_CB") \ |
| 454 | EM(AFS_VNODE_LOCK_SETTING, "SETTING") \ |
| 455 | EM(AFS_VNODE_LOCK_GRANTED, "GRANTED") \ |
| 456 | EM(AFS_VNODE_LOCK_EXTENDING, "EXTENDING") \ |
| 457 | EM(AFS_VNODE_LOCK_NEED_UNLOCK, "NEED_UNLOCK") \ |
| 458 | EM(AFS_VNODE_LOCK_UNLOCKING, "UNLOCKING") \ |
| 459 | E_(AFS_VNODE_LOCK_DELETED, "DELETED") |
| 460 | |
| 461 | #define afs_flock_events \ |
| 462 | EM(afs_flock_acquired, "Acquired") \ |
| 463 | EM(afs_flock_callback_break, "Callback") \ |
| 464 | EM(afs_flock_defer_unlock, "D-Unlock") \ |
| 465 | EM(afs_flock_extend_fail, "Ext_Fail") \ |
| 466 | EM(afs_flock_fail_other, "ErrOther") \ |
| 467 | EM(afs_flock_fail_perm, "ErrPerm ") \ |
| 468 | EM(afs_flock_no_lockers, "NoLocker") \ |
| 469 | EM(afs_flock_release_fail, "Rel_Fail") \ |
| 470 | EM(afs_flock_silly_delete, "SillyDel") \ |
| 471 | EM(afs_flock_timestamp, "Timestmp") \ |
| 472 | EM(afs_flock_try_to_lock, "TryToLck") \ |
| 473 | EM(afs_flock_vfs_lock, "VFSLock ") \ |
| 474 | EM(afs_flock_vfs_locking, "VFSLking") \ |
| 475 | EM(afs_flock_waited, "Waited ") \ |
| 476 | EM(afs_flock_waiting, "Waiting ") \ |
| 477 | EM(afs_flock_work_extending, "Extendng") \ |
| 478 | EM(afs_flock_work_retry, "Retry ") \ |
| 479 | EM(afs_flock_work_unlocking, "Unlcking") \ |
| 480 | E_(afs_flock_would_block, "EWOULDBL") |
| 481 | |
| 482 | #define afs_flock_operations \ |
| 483 | EM(afs_flock_op_copy_lock, "COPY ") \ |
| 484 | EM(afs_flock_op_flock, "->flock ") \ |
| 485 | EM(afs_flock_op_grant, "GRANT ") \ |
| 486 | EM(afs_flock_op_lock, "->lock ") \ |
| 487 | EM(afs_flock_op_release_lock, "RELEASE ") \ |
| 488 | EM(afs_flock_op_return_ok, "<-OK ") \ |
| 489 | EM(afs_flock_op_return_edeadlk, "<-EDEADL") \ |
| 490 | EM(afs_flock_op_return_eagain, "<-EAGAIN") \ |
| 491 | EM(afs_flock_op_return_error, "<-ERROR ") \ |
| 492 | EM(afs_flock_op_set_lock, "SET ") \ |
| 493 | EM(afs_flock_op_unlock, "UNLOCK ") \ |
| 494 | E_(afs_flock_op_wake, "WAKE ") |
| 495 | |
| 496 | #define afs_cb_break_reasons \ |
| 497 | EM(afs_cb_break_no_break, "no-break") \ |
| 498 | EM(afs_cb_break_for_callback, "break-cb") \ |
| 499 | EM(afs_cb_break_for_creation_regress, "creation-regress") \ |
| 500 | EM(afs_cb_break_for_deleted, "break-del") \ |
| 501 | EM(afs_cb_break_for_s_reinit, "s-reinit") \ |
| 502 | EM(afs_cb_break_for_unlink, "break-unlink") \ |
| 503 | EM(afs_cb_break_for_update_regress, "update-regress") \ |
| 504 | EM(afs_cb_break_for_volume_callback, "break-v-cb") \ |
| 505 | EM(afs_cb_break_for_vos_release, "break-vos-release") \ |
| 506 | E_(afs_cb_break_volume_excluded, "vol-excluded") |
| 507 | |
| 508 | #define afs_rotate_traces \ |
| 509 | EM(afs_rotate_trace_aborted, "Abortd") \ |
| 510 | EM(afs_rotate_trace_busy_sleep, "BsySlp") \ |
| 511 | EM(afs_rotate_trace_check_vol_status, "VolStt") \ |
| 512 | EM(afs_rotate_trace_failed, "Failed") \ |
| 513 | EM(afs_rotate_trace_iter, "Iter ") \ |
| 514 | EM(afs_rotate_trace_iterate_addr, "ItAddr") \ |
| 515 | EM(afs_rotate_trace_next_server, "NextSv") \ |
| 516 | EM(afs_rotate_trace_no_more_servers, "NoMore") \ |
| 517 | EM(afs_rotate_trace_nomem, "Nomem ") \ |
| 518 | EM(afs_rotate_trace_probe_error, "PrbErr") \ |
| 519 | EM(afs_rotate_trace_probe_fileserver, "PrbFsv") \ |
| 520 | EM(afs_rotate_trace_probe_none, "PrbNon") \ |
| 521 | EM(afs_rotate_trace_probe_response, "PrbRsp") \ |
| 522 | EM(afs_rotate_trace_probe_superseded, "PrbSup") \ |
| 523 | EM(afs_rotate_trace_restart, "Rstart") \ |
| 524 | EM(afs_rotate_trace_retry_server, "RtrySv") \ |
| 525 | EM(afs_rotate_trace_selected_server, "SlctSv") \ |
| 526 | EM(afs_rotate_trace_stale_lock, "StlLck") \ |
| 527 | EM(afs_rotate_trace_start, "Start ") \ |
| 528 | EM(afs_rotate_trace_stop, "Stop ") \ |
| 529 | E_(afs_rotate_trace_stopped, "Stoppd") |
| 530 | |
| 531 | /* |
| 532 | * Generate enums for tracing information. |
| 533 | */ |
| 534 | #ifndef __AFS_GENERATE_TRACE_ENUMS_ONCE_ONLY |
| 535 | #define __AFS_GENERATE_TRACE_ENUMS_ONCE_ONLY |
| 536 | |
| 537 | #undef EM |
| 538 | #undef E_ |
| 539 | #define EM(a, b) a, |
| 540 | #define E_(a, b) a |
| 541 | |
| 542 | enum afs_alist_trace { afs_alist_traces } __mode(byte); |
| 543 | enum afs_call_trace { afs_call_traces } __mode(byte); |
| 544 | enum afs_cb_break_reason { afs_cb_break_reasons } __mode(byte); |
| 545 | enum afs_cb_promise_trace { afs_cb_promise_traces } __mode(byte); |
| 546 | enum afs_cell_trace { afs_cell_traces } __mode(byte); |
| 547 | enum afs_dir_invalid_trace { afs_dir_invalid_traces} __mode(byte); |
| 548 | enum afs_edit_dir_op { afs_edit_dir_ops } __mode(byte); |
| 549 | enum afs_edit_dir_reason { afs_edit_dir_reasons } __mode(byte); |
| 550 | enum afs_eproto_cause { afs_eproto_causes } __mode(byte); |
| 551 | enum afs_estate_trace { afs_estate_traces } __mode(byte); |
| 552 | enum afs_file_error { afs_file_errors } __mode(byte); |
| 553 | enum afs_flock_event { afs_flock_events } __mode(byte); |
| 554 | enum afs_flock_operation { afs_flock_operations } __mode(byte); |
| 555 | enum afs_io_error { afs_io_errors } __mode(byte); |
| 556 | enum afs_rotate_trace { afs_rotate_traces } __mode(byte); |
| 557 | enum afs_server_trace { afs_server_traces } __mode(byte); |
| 558 | enum afs_vnode_invalid_trace { afs_vnode_invalid_traces} __mode(byte); |
| 559 | enum afs_volume_trace { afs_volume_traces } __mode(byte); |
| 560 | |
| 561 | #endif /* end __AFS_GENERATE_TRACE_ENUMS_ONCE_ONLY */ |
| 562 | |
| 563 | /* |
| 564 | * Export enum symbols via userspace. |
| 565 | */ |
| 566 | #undef EM |
| 567 | #undef E_ |
| 568 | #define EM(a, b) TRACE_DEFINE_ENUM(a); |
| 569 | #define E_(a, b) TRACE_DEFINE_ENUM(a); |
| 570 | |
| 571 | afs_alist_traces; |
| 572 | afs_call_traces; |
| 573 | afs_cb_break_reasons; |
| 574 | afs_cb_promise_traces; |
| 575 | afs_cell_traces; |
| 576 | afs_cm_operations; |
| 577 | afs_dir_invalid_traces; |
| 578 | afs_edit_dir_ops; |
| 579 | afs_edit_dir_reasons; |
| 580 | afs_eproto_causes; |
| 581 | afs_estate_traces; |
| 582 | afs_file_errors; |
| 583 | afs_flock_operations; |
| 584 | afs_flock_types; |
| 585 | afs_fs_operations; |
| 586 | afs_io_errors; |
| 587 | afs_rotate_traces; |
| 588 | afs_server_traces; |
| 589 | afs_vnode_invalid_traces; |
| 590 | afs_vl_operations; |
| 591 | yfs_cm_operations; |
| 592 | |
| 593 | /* |
| 594 | * Now redefine the EM() and E_() macros to map the enums to the strings that |
| 595 | * will be printed in the output. |
| 596 | */ |
| 597 | #undef EM |
| 598 | #undef E_ |
| 599 | #define EM(a, b) { a, b }, |
| 600 | #define E_(a, b) { a, b } |
| 601 | |
| 602 | TRACE_EVENT(afs_receive_data, |
| 603 | TP_PROTO(struct afs_call *call, struct iov_iter *iter, |
| 604 | bool want_more, int ret), |
| 605 | |
| 606 | TP_ARGS(call, iter, want_more, ret), |
| 607 | |
| 608 | TP_STRUCT__entry( |
| 609 | __field(loff_t, remain) |
| 610 | __field(unsigned int, call) |
| 611 | __field(enum afs_call_state, state) |
| 612 | __field(unsigned short, unmarshall) |
| 613 | __field(bool, want_more) |
| 614 | __field(int, ret) |
| 615 | ), |
| 616 | |
| 617 | TP_fast_assign( |
| 618 | __entry->call = call->debug_id; |
| 619 | __entry->state = call->state; |
| 620 | __entry->unmarshall = call->unmarshall; |
| 621 | __entry->remain = iov_iter_count(iter); |
| 622 | __entry->want_more = want_more; |
| 623 | __entry->ret = ret; |
| 624 | ), |
| 625 | |
| 626 | TP_printk("c=%08x r=%llu u=%u w=%u s=%u ret=%d", |
| 627 | __entry->call, |
| 628 | __entry->remain, |
| 629 | __entry->unmarshall, |
| 630 | __entry->want_more, |
| 631 | __entry->state, |
| 632 | __entry->ret) |
| 633 | ); |
| 634 | |
| 635 | TRACE_EVENT(afs_notify_call, |
| 636 | TP_PROTO(struct rxrpc_call *rxcall, struct afs_call *call), |
| 637 | |
| 638 | TP_ARGS(rxcall, call), |
| 639 | |
| 640 | TP_STRUCT__entry( |
| 641 | __field(unsigned int, call) |
| 642 | __field(enum afs_call_state, state) |
| 643 | __field(unsigned short, unmarshall) |
| 644 | ), |
| 645 | |
| 646 | TP_fast_assign( |
| 647 | __entry->call = call->debug_id; |
| 648 | __entry->state = call->state; |
| 649 | __entry->unmarshall = call->unmarshall; |
| 650 | ), |
| 651 | |
| 652 | TP_printk("c=%08x s=%u u=%u", |
| 653 | __entry->call, |
| 654 | __entry->state, __entry->unmarshall) |
| 655 | ); |
| 656 | |
| 657 | TRACE_EVENT(afs_cb_call, |
| 658 | TP_PROTO(struct afs_call *call), |
| 659 | |
| 660 | TP_ARGS(call), |
| 661 | |
| 662 | TP_STRUCT__entry( |
| 663 | __field(unsigned int, call) |
| 664 | __field(u32, op) |
| 665 | __field(u16, service_id) |
| 666 | __field(u8, security_ix) |
| 667 | __field(u32, enctype) |
| 668 | ), |
| 669 | |
| 670 | TP_fast_assign( |
| 671 | __entry->call = call->debug_id; |
| 672 | __entry->op = call->operation_ID; |
| 673 | __entry->service_id = call->service_id; |
| 674 | __entry->security_ix = call->security_ix; |
| 675 | __entry->enctype = call->enctype; |
| 676 | ), |
| 677 | |
| 678 | TP_printk("c=%08x %s sv=%u sx=%u en=%u", |
| 679 | __entry->call, |
| 680 | __entry->service_id == 2501 ? |
| 681 | __print_symbolic(__entry->op, yfs_cm_operations) : |
| 682 | __print_symbolic(__entry->op, afs_cm_operations), |
| 683 | __entry->service_id, |
| 684 | __entry->security_ix, |
| 685 | __entry->enctype) |
| 686 | ); |
| 687 | |
| 688 | TRACE_EVENT(afs_call, |
| 689 | TP_PROTO(unsigned int call_debug_id, enum afs_call_trace op, |
| 690 | int ref, int outstanding, const void *where), |
| 691 | |
| 692 | TP_ARGS(call_debug_id, op, ref, outstanding, where), |
| 693 | |
| 694 | TP_STRUCT__entry( |
| 695 | __field(unsigned int, call) |
| 696 | __field(int, op) |
| 697 | __field(int, ref) |
| 698 | __field(int, outstanding) |
| 699 | __field(const void *, where) |
| 700 | ), |
| 701 | |
| 702 | TP_fast_assign( |
| 703 | __entry->call = call_debug_id; |
| 704 | __entry->op = op; |
| 705 | __entry->ref = ref; |
| 706 | __entry->outstanding = outstanding; |
| 707 | __entry->where = where; |
| 708 | ), |
| 709 | |
| 710 | TP_printk("c=%08x %s r=%d o=%d sp=%pSR", |
| 711 | __entry->call, |
| 712 | __print_symbolic(__entry->op, afs_call_traces), |
| 713 | __entry->ref, |
| 714 | __entry->outstanding, |
| 715 | __entry->where) |
| 716 | ); |
| 717 | |
| 718 | TRACE_EVENT(afs_make_fs_call, |
| 719 | TP_PROTO(struct afs_call *call, const struct afs_fid *fid), |
| 720 | |
| 721 | TP_ARGS(call, fid), |
| 722 | |
| 723 | TP_STRUCT__entry( |
| 724 | __field(unsigned int, call) |
| 725 | __field(enum afs_fs_operation, op) |
| 726 | __field_struct(struct afs_fid, fid) |
| 727 | ), |
| 728 | |
| 729 | TP_fast_assign( |
| 730 | __entry->call = call->debug_id; |
| 731 | __entry->op = call->operation_ID; |
| 732 | if (fid) { |
| 733 | __entry->fid = *fid; |
| 734 | } else { |
| 735 | __entry->fid.vid = 0; |
| 736 | __entry->fid.vnode = 0; |
| 737 | __entry->fid.unique = 0; |
| 738 | } |
| 739 | ), |
| 740 | |
| 741 | TP_printk("c=%08x V=%llx i=%llx:%x %s", |
| 742 | __entry->call, |
| 743 | __entry->fid.vid, |
| 744 | __entry->fid.vnode, |
| 745 | __entry->fid.unique, |
| 746 | __print_symbolic(__entry->op, afs_fs_operations)) |
| 747 | ); |
| 748 | |
| 749 | TRACE_EVENT(afs_make_fs_calli, |
| 750 | TP_PROTO(struct afs_call *call, const struct afs_fid *fid, |
| 751 | unsigned int i), |
| 752 | |
| 753 | TP_ARGS(call, fid, i), |
| 754 | |
| 755 | TP_STRUCT__entry( |
| 756 | __field(unsigned int, call) |
| 757 | __field(unsigned int, i) |
| 758 | __field(enum afs_fs_operation, op) |
| 759 | __field_struct(struct afs_fid, fid) |
| 760 | ), |
| 761 | |
| 762 | TP_fast_assign( |
| 763 | __entry->call = call->debug_id; |
| 764 | __entry->i = i; |
| 765 | __entry->op = call->operation_ID; |
| 766 | if (fid) { |
| 767 | __entry->fid = *fid; |
| 768 | } else { |
| 769 | __entry->fid.vid = 0; |
| 770 | __entry->fid.vnode = 0; |
| 771 | __entry->fid.unique = 0; |
| 772 | } |
| 773 | ), |
| 774 | |
| 775 | TP_printk("c=%08x V=%llx i=%llx:%x %s i=%u", |
| 776 | __entry->call, |
| 777 | __entry->fid.vid, |
| 778 | __entry->fid.vnode, |
| 779 | __entry->fid.unique, |
| 780 | __print_symbolic(__entry->op, afs_fs_operations), |
| 781 | __entry->i) |
| 782 | ); |
| 783 | |
| 784 | TRACE_EVENT(afs_make_fs_call1, |
| 785 | TP_PROTO(struct afs_call *call, const struct afs_fid *fid, |
| 786 | const struct qstr *name), |
| 787 | |
| 788 | TP_ARGS(call, fid, name), |
| 789 | |
| 790 | TP_STRUCT__entry( |
| 791 | __field(unsigned int, call) |
| 792 | __field(enum afs_fs_operation, op) |
| 793 | __field_struct(struct afs_fid, fid) |
| 794 | __array(char, name, 24) |
| 795 | ), |
| 796 | |
| 797 | TP_fast_assign( |
| 798 | unsigned int __len = min_t(unsigned int, name->len, 23); |
| 799 | __entry->call = call->debug_id; |
| 800 | __entry->op = call->operation_ID; |
| 801 | if (fid) { |
| 802 | __entry->fid = *fid; |
| 803 | } else { |
| 804 | __entry->fid.vid = 0; |
| 805 | __entry->fid.vnode = 0; |
| 806 | __entry->fid.unique = 0; |
| 807 | } |
| 808 | memcpy(__entry->name, name->name, __len); |
| 809 | __entry->name[__len] = 0; |
| 810 | ), |
| 811 | |
| 812 | TP_printk("c=%08x V=%llx i=%llx:%x %s \"%s\"", |
| 813 | __entry->call, |
| 814 | __entry->fid.vid, |
| 815 | __entry->fid.vnode, |
| 816 | __entry->fid.unique, |
| 817 | __print_symbolic(__entry->op, afs_fs_operations), |
| 818 | __entry->name) |
| 819 | ); |
| 820 | |
| 821 | TRACE_EVENT(afs_make_fs_call2, |
| 822 | TP_PROTO(struct afs_call *call, const struct afs_fid *fid, |
| 823 | const struct qstr *name, const struct qstr *name2), |
| 824 | |
| 825 | TP_ARGS(call, fid, name, name2), |
| 826 | |
| 827 | TP_STRUCT__entry( |
| 828 | __field(unsigned int, call) |
| 829 | __field(enum afs_fs_operation, op) |
| 830 | __field_struct(struct afs_fid, fid) |
| 831 | __array(char, name, 24) |
| 832 | __array(char, name2, 24) |
| 833 | ), |
| 834 | |
| 835 | TP_fast_assign( |
| 836 | unsigned int __len = min_t(unsigned int, name->len, 23); |
| 837 | unsigned int __len2 = min_t(unsigned int, name2->len, 23); |
| 838 | __entry->call = call->debug_id; |
| 839 | __entry->op = call->operation_ID; |
| 840 | if (fid) { |
| 841 | __entry->fid = *fid; |
| 842 | } else { |
| 843 | __entry->fid.vid = 0; |
| 844 | __entry->fid.vnode = 0; |
| 845 | __entry->fid.unique = 0; |
| 846 | } |
| 847 | memcpy(__entry->name, name->name, __len); |
| 848 | __entry->name[__len] = 0; |
| 849 | memcpy(__entry->name2, name2->name, __len2); |
| 850 | __entry->name2[__len2] = 0; |
| 851 | ), |
| 852 | |
| 853 | TP_printk("c=%08x V=%llx i=%llx:%x %s \"%s\" \"%s\"", |
| 854 | __entry->call, |
| 855 | __entry->fid.vid, |
| 856 | __entry->fid.vnode, |
| 857 | __entry->fid.unique, |
| 858 | __print_symbolic(__entry->op, afs_fs_operations), |
| 859 | __entry->name, |
| 860 | __entry->name2) |
| 861 | ); |
| 862 | |
| 863 | TRACE_EVENT(afs_make_vl_call, |
| 864 | TP_PROTO(struct afs_call *call), |
| 865 | |
| 866 | TP_ARGS(call), |
| 867 | |
| 868 | TP_STRUCT__entry( |
| 869 | __field(unsigned int, call) |
| 870 | __field(enum afs_vl_operation, op) |
| 871 | ), |
| 872 | |
| 873 | TP_fast_assign( |
| 874 | __entry->call = call->debug_id; |
| 875 | __entry->op = call->operation_ID; |
| 876 | ), |
| 877 | |
| 878 | TP_printk("c=%08x %s", |
| 879 | __entry->call, |
| 880 | __print_symbolic(__entry->op, afs_vl_operations)) |
| 881 | ); |
| 882 | |
| 883 | TRACE_EVENT(afs_call_done, |
| 884 | TP_PROTO(struct afs_call *call), |
| 885 | |
| 886 | TP_ARGS(call), |
| 887 | |
| 888 | TP_STRUCT__entry( |
| 889 | __field(unsigned int, call) |
| 890 | __field(struct rxrpc_call *, rx_call) |
| 891 | __field(int, ret) |
| 892 | __field(u32, abort_code) |
| 893 | ), |
| 894 | |
| 895 | TP_fast_assign( |
| 896 | __entry->call = call->debug_id; |
| 897 | __entry->rx_call = call->rxcall; |
| 898 | __entry->ret = call->error; |
| 899 | __entry->abort_code = call->abort_code; |
| 900 | ), |
| 901 | |
| 902 | TP_printk(" c=%08x ret=%d ab=%d [%p]", |
| 903 | __entry->call, |
| 904 | __entry->ret, |
| 905 | __entry->abort_code, |
| 906 | __entry->rx_call) |
| 907 | ); |
| 908 | |
| 909 | TRACE_EVENT(afs_send_data, |
| 910 | TP_PROTO(struct afs_call *call, struct msghdr *msg), |
| 911 | |
| 912 | TP_ARGS(call, msg), |
| 913 | |
| 914 | TP_STRUCT__entry( |
| 915 | __field(unsigned int, call) |
| 916 | __field(unsigned int, flags) |
| 917 | __field(loff_t, offset) |
| 918 | __field(loff_t, count) |
| 919 | ), |
| 920 | |
| 921 | TP_fast_assign( |
| 922 | __entry->call = call->debug_id; |
| 923 | __entry->flags = msg->msg_flags; |
| 924 | __entry->offset = msg->msg_iter.xarray_start + msg->msg_iter.iov_offset; |
| 925 | __entry->count = iov_iter_count(&msg->msg_iter); |
| 926 | ), |
| 927 | |
| 928 | TP_printk(" c=%08x o=%llx n=%llx f=%x", |
| 929 | __entry->call, __entry->offset, __entry->count, |
| 930 | __entry->flags) |
| 931 | ); |
| 932 | |
| 933 | TRACE_EVENT(afs_sent_data, |
| 934 | TP_PROTO(struct afs_call *call, struct msghdr *msg, int ret), |
| 935 | |
| 936 | TP_ARGS(call, msg, ret), |
| 937 | |
| 938 | TP_STRUCT__entry( |
| 939 | __field(unsigned int, call) |
| 940 | __field(int, ret) |
| 941 | __field(loff_t, offset) |
| 942 | __field(loff_t, count) |
| 943 | ), |
| 944 | |
| 945 | TP_fast_assign( |
| 946 | __entry->call = call->debug_id; |
| 947 | __entry->ret = ret; |
| 948 | __entry->offset = msg->msg_iter.xarray_start + msg->msg_iter.iov_offset; |
| 949 | __entry->count = iov_iter_count(&msg->msg_iter); |
| 950 | ), |
| 951 | |
| 952 | TP_printk(" c=%08x o=%llx n=%llx r=%x", |
| 953 | __entry->call, __entry->offset, __entry->count, |
| 954 | __entry->ret) |
| 955 | ); |
| 956 | |
| 957 | TRACE_EVENT(afs_dir_check_failed, |
| 958 | TP_PROTO(struct afs_vnode *vnode, loff_t off), |
| 959 | |
| 960 | TP_ARGS(vnode, off), |
| 961 | |
| 962 | TP_STRUCT__entry( |
| 963 | __field(struct afs_vnode *, vnode) |
| 964 | __field(loff_t, off) |
| 965 | __field(loff_t, i_size) |
| 966 | ), |
| 967 | |
| 968 | TP_fast_assign( |
| 969 | __entry->vnode = vnode; |
| 970 | __entry->off = off; |
| 971 | __entry->i_size = i_size_read(&vnode->netfs.inode); |
| 972 | ), |
| 973 | |
| 974 | TP_printk("vn=%p %llx/%llx", |
| 975 | __entry->vnode, __entry->off, __entry->i_size) |
| 976 | ); |
| 977 | |
| 978 | TRACE_EVENT(afs_call_state, |
| 979 | TP_PROTO(struct afs_call *call, |
| 980 | enum afs_call_state from, |
| 981 | enum afs_call_state to, |
| 982 | int ret, u32 remote_abort), |
| 983 | |
| 984 | TP_ARGS(call, from, to, ret, remote_abort), |
| 985 | |
| 986 | TP_STRUCT__entry( |
| 987 | __field(unsigned int, call) |
| 988 | __field(enum afs_call_state, from) |
| 989 | __field(enum afs_call_state, to) |
| 990 | __field(int, ret) |
| 991 | __field(u32, abort) |
| 992 | ), |
| 993 | |
| 994 | TP_fast_assign( |
| 995 | __entry->call = call->debug_id; |
| 996 | __entry->from = from; |
| 997 | __entry->to = to; |
| 998 | __entry->ret = ret; |
| 999 | __entry->abort = remote_abort; |
| 1000 | ), |
| 1001 | |
| 1002 | TP_printk("c=%08x %u->%u r=%d ab=%d", |
| 1003 | __entry->call, |
| 1004 | __entry->from, __entry->to, |
| 1005 | __entry->ret, __entry->abort) |
| 1006 | ); |
| 1007 | |
| 1008 | TRACE_EVENT(afs_lookup, |
| 1009 | TP_PROTO(struct afs_vnode *dvnode, const struct qstr *name, |
| 1010 | struct afs_fid *fid), |
| 1011 | |
| 1012 | TP_ARGS(dvnode, name, fid), |
| 1013 | |
| 1014 | TP_STRUCT__entry( |
| 1015 | __field_struct(struct afs_fid, dfid) |
| 1016 | __field_struct(struct afs_fid, fid) |
| 1017 | __array(char, name, 24) |
| 1018 | ), |
| 1019 | |
| 1020 | TP_fast_assign( |
| 1021 | int __len = min_t(int, name->len, 23); |
| 1022 | __entry->dfid = dvnode->fid; |
| 1023 | __entry->fid = *fid; |
| 1024 | memcpy(__entry->name, name->name, __len); |
| 1025 | __entry->name[__len] = 0; |
| 1026 | ), |
| 1027 | |
| 1028 | TP_printk("d=%llx:%llx:%x \"%s\" f=%llx:%x", |
| 1029 | __entry->dfid.vid, __entry->dfid.vnode, __entry->dfid.unique, |
| 1030 | __entry->name, |
| 1031 | __entry->fid.vnode, __entry->fid.unique) |
| 1032 | ); |
| 1033 | |
| 1034 | TRACE_EVENT(afs_edit_dir, |
| 1035 | TP_PROTO(struct afs_vnode *dvnode, |
| 1036 | enum afs_edit_dir_reason why, |
| 1037 | enum afs_edit_dir_op op, |
| 1038 | unsigned int block, |
| 1039 | unsigned int slot, |
| 1040 | unsigned int f_vnode, |
| 1041 | unsigned int f_unique, |
| 1042 | const char *name), |
| 1043 | |
| 1044 | TP_ARGS(dvnode, why, op, block, slot, f_vnode, f_unique, name), |
| 1045 | |
| 1046 | TP_STRUCT__entry( |
| 1047 | __field(unsigned int, vnode) |
| 1048 | __field(unsigned int, unique) |
| 1049 | __field(enum afs_edit_dir_reason, why) |
| 1050 | __field(enum afs_edit_dir_op, op) |
| 1051 | __field(unsigned int, block) |
| 1052 | __field(unsigned short, slot) |
| 1053 | __field(unsigned int, f_vnode) |
| 1054 | __field(unsigned int, f_unique) |
| 1055 | __array(char, name, 24) |
| 1056 | ), |
| 1057 | |
| 1058 | TP_fast_assign( |
| 1059 | int __len = strlen(name); |
| 1060 | __len = min(__len, 23); |
| 1061 | __entry->vnode = dvnode->fid.vnode; |
| 1062 | __entry->unique = dvnode->fid.unique; |
| 1063 | __entry->why = why; |
| 1064 | __entry->op = op; |
| 1065 | __entry->block = block; |
| 1066 | __entry->slot = slot; |
| 1067 | __entry->f_vnode = f_vnode; |
| 1068 | __entry->f_unique = f_unique; |
| 1069 | memcpy(__entry->name, name, __len); |
| 1070 | __entry->name[__len] = 0; |
| 1071 | ), |
| 1072 | |
| 1073 | TP_printk("di=%x:%x %s %s %u[%u] fi=%x:%x \"%s\"", |
| 1074 | __entry->vnode, __entry->unique, |
| 1075 | __print_symbolic(__entry->why, afs_edit_dir_reasons), |
| 1076 | __print_symbolic(__entry->op, afs_edit_dir_ops), |
| 1077 | __entry->block, __entry->slot, |
| 1078 | __entry->f_vnode, __entry->f_unique, |
| 1079 | __entry->name) |
| 1080 | ); |
| 1081 | |
| 1082 | TRACE_EVENT(afs_dir_invalid, |
| 1083 | TP_PROTO(const struct afs_vnode *dvnode, enum afs_dir_invalid_trace trace), |
| 1084 | |
| 1085 | TP_ARGS(dvnode, trace), |
| 1086 | |
| 1087 | TP_STRUCT__entry( |
| 1088 | __field(unsigned int, vnode) |
| 1089 | __field(unsigned int, unique) |
| 1090 | __field(enum afs_dir_invalid_trace, trace) |
| 1091 | ), |
| 1092 | |
| 1093 | TP_fast_assign( |
| 1094 | __entry->vnode = dvnode->fid.vnode; |
| 1095 | __entry->unique = dvnode->fid.unique; |
| 1096 | __entry->trace = trace; |
| 1097 | ), |
| 1098 | |
| 1099 | TP_printk("di=%x:%x %s", |
| 1100 | __entry->vnode, __entry->unique, |
| 1101 | __print_symbolic(__entry->trace, afs_dir_invalid_traces)) |
| 1102 | ); |
| 1103 | |
| 1104 | TRACE_EVENT(afs_cb_promise, |
| 1105 | TP_PROTO(const struct afs_vnode *vnode, enum afs_cb_promise_trace trace), |
| 1106 | |
| 1107 | TP_ARGS(vnode, trace), |
| 1108 | |
| 1109 | TP_STRUCT__entry( |
| 1110 | __field(unsigned int, vnode) |
| 1111 | __field(unsigned int, unique) |
| 1112 | __field(enum afs_cb_promise_trace, trace) |
| 1113 | ), |
| 1114 | |
| 1115 | TP_fast_assign( |
| 1116 | __entry->vnode = vnode->fid.vnode; |
| 1117 | __entry->unique = vnode->fid.unique; |
| 1118 | __entry->trace = trace; |
| 1119 | ), |
| 1120 | |
| 1121 | TP_printk("di=%x:%x %s", |
| 1122 | __entry->vnode, __entry->unique, |
| 1123 | __print_symbolic(__entry->trace, afs_cb_promise_traces)) |
| 1124 | ); |
| 1125 | |
| 1126 | TRACE_EVENT(afs_vnode_invalid, |
| 1127 | TP_PROTO(const struct afs_vnode *vnode, enum afs_vnode_invalid_trace trace), |
| 1128 | |
| 1129 | TP_ARGS(vnode, trace), |
| 1130 | |
| 1131 | TP_STRUCT__entry( |
| 1132 | __field(unsigned int, vnode) |
| 1133 | __field(unsigned int, unique) |
| 1134 | __field(enum afs_vnode_invalid_trace, trace) |
| 1135 | ), |
| 1136 | |
| 1137 | TP_fast_assign( |
| 1138 | __entry->vnode = vnode->fid.vnode; |
| 1139 | __entry->unique = vnode->fid.unique; |
| 1140 | __entry->trace = trace; |
| 1141 | ), |
| 1142 | |
| 1143 | TP_printk("di=%x:%x %s", |
| 1144 | __entry->vnode, __entry->unique, |
| 1145 | __print_symbolic(__entry->trace, afs_vnode_invalid_traces)) |
| 1146 | ); |
| 1147 | |
| 1148 | TRACE_EVENT(afs_set_dv, |
| 1149 | TP_PROTO(const struct afs_vnode *dvnode, u64 new_dv), |
| 1150 | |
| 1151 | TP_ARGS(dvnode, new_dv), |
| 1152 | |
| 1153 | TP_STRUCT__entry( |
| 1154 | __field(unsigned int, vnode) |
| 1155 | __field(unsigned int, unique) |
| 1156 | __field(u64, old_dv) |
| 1157 | __field(u64, new_dv) |
| 1158 | ), |
| 1159 | |
| 1160 | TP_fast_assign( |
| 1161 | __entry->vnode = dvnode->fid.vnode; |
| 1162 | __entry->unique = dvnode->fid.unique; |
| 1163 | __entry->old_dv = dvnode->status.data_version; |
| 1164 | __entry->new_dv = new_dv; |
| 1165 | ), |
| 1166 | |
| 1167 | TP_printk("di=%x:%x dv=%llx -> dv=%llx", |
| 1168 | __entry->vnode, __entry->unique, |
| 1169 | __entry->old_dv, __entry->new_dv) |
| 1170 | ); |
| 1171 | |
| 1172 | TRACE_EVENT(afs_dv_mismatch, |
| 1173 | TP_PROTO(const struct afs_vnode *dvnode, u64 before_dv, int delta, u64 new_dv), |
| 1174 | |
| 1175 | TP_ARGS(dvnode, before_dv, delta, new_dv), |
| 1176 | |
| 1177 | TP_STRUCT__entry( |
| 1178 | __field(unsigned int, vnode) |
| 1179 | __field(unsigned int, unique) |
| 1180 | __field(int, delta) |
| 1181 | __field(u64, before_dv) |
| 1182 | __field(u64, new_dv) |
| 1183 | ), |
| 1184 | |
| 1185 | TP_fast_assign( |
| 1186 | __entry->vnode = dvnode->fid.vnode; |
| 1187 | __entry->unique = dvnode->fid.unique; |
| 1188 | __entry->delta = delta; |
| 1189 | __entry->before_dv = before_dv; |
| 1190 | __entry->new_dv = new_dv; |
| 1191 | ), |
| 1192 | |
| 1193 | TP_printk("di=%x:%x xdv=%llx+%d dv=%llx", |
| 1194 | __entry->vnode, __entry->unique, |
| 1195 | __entry->before_dv, __entry->delta, __entry->new_dv) |
| 1196 | ); |
| 1197 | |
| 1198 | TRACE_EVENT(afs_protocol_error, |
| 1199 | TP_PROTO(struct afs_call *call, enum afs_eproto_cause cause), |
| 1200 | |
| 1201 | TP_ARGS(call, cause), |
| 1202 | |
| 1203 | TP_STRUCT__entry( |
| 1204 | __field(unsigned int, call) |
| 1205 | __field(enum afs_eproto_cause, cause) |
| 1206 | ), |
| 1207 | |
| 1208 | TP_fast_assign( |
| 1209 | __entry->call = call ? call->debug_id : 0; |
| 1210 | __entry->cause = cause; |
| 1211 | ), |
| 1212 | |
| 1213 | TP_printk("c=%08x %s", |
| 1214 | __entry->call, |
| 1215 | __print_symbolic(__entry->cause, afs_eproto_causes)) |
| 1216 | ); |
| 1217 | |
| 1218 | TRACE_EVENT(afs_io_error, |
| 1219 | TP_PROTO(unsigned int call, int error, enum afs_io_error where), |
| 1220 | |
| 1221 | TP_ARGS(call, error, where), |
| 1222 | |
| 1223 | TP_STRUCT__entry( |
| 1224 | __field(unsigned int, call) |
| 1225 | __field(int, error) |
| 1226 | __field(enum afs_io_error, where) |
| 1227 | ), |
| 1228 | |
| 1229 | TP_fast_assign( |
| 1230 | __entry->call = call; |
| 1231 | __entry->error = error; |
| 1232 | __entry->where = where; |
| 1233 | ), |
| 1234 | |
| 1235 | TP_printk("c=%08x r=%d %s", |
| 1236 | __entry->call, __entry->error, |
| 1237 | __print_symbolic(__entry->where, afs_io_errors)) |
| 1238 | ); |
| 1239 | |
| 1240 | TRACE_EVENT(afs_file_error, |
| 1241 | TP_PROTO(struct afs_vnode *vnode, int error, enum afs_file_error where), |
| 1242 | |
| 1243 | TP_ARGS(vnode, error, where), |
| 1244 | |
| 1245 | TP_STRUCT__entry( |
| 1246 | __field_struct(struct afs_fid, fid) |
| 1247 | __field(int, error) |
| 1248 | __field(enum afs_file_error, where) |
| 1249 | ), |
| 1250 | |
| 1251 | TP_fast_assign( |
| 1252 | __entry->fid = vnode->fid; |
| 1253 | __entry->error = error; |
| 1254 | __entry->where = where; |
| 1255 | ), |
| 1256 | |
| 1257 | TP_printk("%llx:%llx:%x r=%d %s", |
| 1258 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1259 | __entry->error, |
| 1260 | __print_symbolic(__entry->where, afs_file_errors)) |
| 1261 | ); |
| 1262 | |
| 1263 | TRACE_EVENT(afs_bulkstat_error, |
| 1264 | TP_PROTO(struct afs_operation *op, struct afs_fid *fid, unsigned int index, s32 abort), |
| 1265 | |
| 1266 | TP_ARGS(op, fid, index, abort), |
| 1267 | |
| 1268 | TP_STRUCT__entry( |
| 1269 | __field_struct(struct afs_fid, fid) |
| 1270 | __field(unsigned int, op) |
| 1271 | __field(unsigned int, index) |
| 1272 | __field(s32, abort) |
| 1273 | ), |
| 1274 | |
| 1275 | TP_fast_assign( |
| 1276 | __entry->op = op->debug_id; |
| 1277 | __entry->fid = *fid; |
| 1278 | __entry->index = index; |
| 1279 | __entry->abort = abort; |
| 1280 | ), |
| 1281 | |
| 1282 | TP_printk("OP=%08x[%02x] %llx:%llx:%x a=%d", |
| 1283 | __entry->op, __entry->index, |
| 1284 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1285 | __entry->abort) |
| 1286 | ); |
| 1287 | |
| 1288 | TRACE_EVENT(afs_cm_no_server, |
| 1289 | TP_PROTO(struct afs_call *call, const struct sockaddr_rxrpc *srx), |
| 1290 | |
| 1291 | TP_ARGS(call, srx), |
| 1292 | |
| 1293 | TP_STRUCT__entry( |
| 1294 | __field(unsigned int, call) |
| 1295 | __field(unsigned int, op_id) |
| 1296 | __field_struct(struct sockaddr_rxrpc, srx) |
| 1297 | ), |
| 1298 | |
| 1299 | TP_fast_assign( |
| 1300 | __entry->call = call->debug_id; |
| 1301 | __entry->op_id = call->operation_ID; |
| 1302 | memcpy(&__entry->srx, srx, sizeof(__entry->srx)); |
| 1303 | ), |
| 1304 | |
| 1305 | TP_printk("c=%08x op=%u %pISpc", |
| 1306 | __entry->call, __entry->op_id, &__entry->srx.transport) |
| 1307 | ); |
| 1308 | |
| 1309 | TRACE_EVENT(afs_cm_no_server_u, |
| 1310 | TP_PROTO(struct afs_call *call, const uuid_t *uuid), |
| 1311 | |
| 1312 | TP_ARGS(call, uuid), |
| 1313 | |
| 1314 | TP_STRUCT__entry( |
| 1315 | __field(unsigned int, call) |
| 1316 | __field(unsigned int, op_id) |
| 1317 | __field_struct(uuid_t, uuid) |
| 1318 | ), |
| 1319 | |
| 1320 | TP_fast_assign( |
| 1321 | __entry->call = call->debug_id; |
| 1322 | __entry->op_id = call->operation_ID; |
| 1323 | memcpy(&__entry->uuid, uuid, sizeof(__entry->uuid)); |
| 1324 | ), |
| 1325 | |
| 1326 | TP_printk("c=%08x op=%u %pU", |
| 1327 | __entry->call, __entry->op_id, &__entry->uuid) |
| 1328 | ); |
| 1329 | |
| 1330 | TRACE_EVENT(afs_flock_ev, |
| 1331 | TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl, |
| 1332 | enum afs_flock_event event, int error), |
| 1333 | |
| 1334 | TP_ARGS(vnode, fl, event, error), |
| 1335 | |
| 1336 | TP_STRUCT__entry( |
| 1337 | __field_struct(struct afs_fid, fid) |
| 1338 | __field(enum afs_flock_event, event) |
| 1339 | __field(enum afs_lock_state, state) |
| 1340 | __field(int, error) |
| 1341 | __field(unsigned int, debug_id) |
| 1342 | ), |
| 1343 | |
| 1344 | TP_fast_assign( |
| 1345 | __entry->fid = vnode->fid; |
| 1346 | __entry->event = event; |
| 1347 | __entry->state = vnode->lock_state; |
| 1348 | __entry->error = error; |
| 1349 | __entry->debug_id = fl ? fl->fl_u.afs.debug_id : 0; |
| 1350 | ), |
| 1351 | |
| 1352 | TP_printk("%llx:%llx:%x %04x %s s=%s e=%d", |
| 1353 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1354 | __entry->debug_id, |
| 1355 | __print_symbolic(__entry->event, afs_flock_events), |
| 1356 | __print_symbolic(__entry->state, afs_flock_states), |
| 1357 | __entry->error) |
| 1358 | ); |
| 1359 | |
| 1360 | TRACE_EVENT(afs_flock_op, |
| 1361 | TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl, |
| 1362 | enum afs_flock_operation op), |
| 1363 | |
| 1364 | TP_ARGS(vnode, fl, op), |
| 1365 | |
| 1366 | TP_STRUCT__entry( |
| 1367 | __field_struct(struct afs_fid, fid) |
| 1368 | __field(loff_t, from) |
| 1369 | __field(loff_t, len) |
| 1370 | __field(enum afs_flock_operation, op) |
| 1371 | __field(unsigned char, type) |
| 1372 | __field(unsigned int, flags) |
| 1373 | __field(unsigned int, debug_id) |
| 1374 | ), |
| 1375 | |
| 1376 | TP_fast_assign( |
| 1377 | __entry->fid = vnode->fid; |
| 1378 | __entry->from = fl->fl_start; |
| 1379 | __entry->len = fl->fl_end - fl->fl_start + 1; |
| 1380 | __entry->op = op; |
| 1381 | __entry->type = fl->c.flc_type; |
| 1382 | __entry->flags = fl->c.flc_flags; |
| 1383 | __entry->debug_id = fl->fl_u.afs.debug_id; |
| 1384 | ), |
| 1385 | |
| 1386 | TP_printk("%llx:%llx:%x %04x %s t=%s R=%llx/%llx f=%x", |
| 1387 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1388 | __entry->debug_id, |
| 1389 | __print_symbolic(__entry->op, afs_flock_operations), |
| 1390 | __print_symbolic(__entry->type, afs_flock_types), |
| 1391 | __entry->from, __entry->len, __entry->flags) |
| 1392 | ); |
| 1393 | |
| 1394 | TRACE_EVENT(afs_reload_dir, |
| 1395 | TP_PROTO(struct afs_vnode *vnode), |
| 1396 | |
| 1397 | TP_ARGS(vnode), |
| 1398 | |
| 1399 | TP_STRUCT__entry( |
| 1400 | __field_struct(struct afs_fid, fid) |
| 1401 | ), |
| 1402 | |
| 1403 | TP_fast_assign( |
| 1404 | __entry->fid = vnode->fid; |
| 1405 | ), |
| 1406 | |
| 1407 | TP_printk("%llx:%llx:%x", |
| 1408 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique) |
| 1409 | ); |
| 1410 | |
| 1411 | TRACE_EVENT(afs_silly_rename, |
| 1412 | TP_PROTO(struct afs_vnode *vnode, bool done), |
| 1413 | |
| 1414 | TP_ARGS(vnode, done), |
| 1415 | |
| 1416 | TP_STRUCT__entry( |
| 1417 | __field_struct(struct afs_fid, fid) |
| 1418 | __field(bool, done) |
| 1419 | ), |
| 1420 | |
| 1421 | TP_fast_assign( |
| 1422 | __entry->fid = vnode->fid; |
| 1423 | __entry->done = done; |
| 1424 | ), |
| 1425 | |
| 1426 | TP_printk("%llx:%llx:%x done=%u", |
| 1427 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1428 | __entry->done) |
| 1429 | ); |
| 1430 | |
| 1431 | TRACE_EVENT(afs_get_tree, |
| 1432 | TP_PROTO(struct afs_cell *cell, struct afs_volume *volume), |
| 1433 | |
| 1434 | TP_ARGS(cell, volume), |
| 1435 | |
| 1436 | TP_STRUCT__entry( |
| 1437 | __field(u64, vid) |
| 1438 | __array(char, cell, 24) |
| 1439 | __array(char, volume, 24) |
| 1440 | ), |
| 1441 | |
| 1442 | TP_fast_assign( |
| 1443 | int __len; |
| 1444 | __entry->vid = volume->vid; |
| 1445 | __len = min_t(int, cell->name_len, 23); |
| 1446 | memcpy(__entry->cell, cell->name, __len); |
| 1447 | __entry->cell[__len] = 0; |
| 1448 | __len = min_t(int, volume->name_len, 23); |
| 1449 | memcpy(__entry->volume, volume->name, __len); |
| 1450 | __entry->volume[__len] = 0; |
| 1451 | ), |
| 1452 | |
| 1453 | TP_printk("--- MOUNT %s:%s %llx", |
| 1454 | __entry->cell, __entry->volume, __entry->vid) |
| 1455 | ); |
| 1456 | |
| 1457 | TRACE_EVENT(afs_cb_v_break, |
| 1458 | TP_PROTO(afs_volid_t vid, unsigned int cb_v_break, |
| 1459 | enum afs_cb_break_reason reason), |
| 1460 | |
| 1461 | TP_ARGS(vid, cb_v_break, reason), |
| 1462 | |
| 1463 | TP_STRUCT__entry( |
| 1464 | __field(afs_volid_t, vid) |
| 1465 | __field(unsigned int, cb_v_break) |
| 1466 | __field(enum afs_cb_break_reason, reason) |
| 1467 | ), |
| 1468 | |
| 1469 | TP_fast_assign( |
| 1470 | __entry->vid = vid; |
| 1471 | __entry->cb_v_break = cb_v_break; |
| 1472 | __entry->reason = reason; |
| 1473 | ), |
| 1474 | |
| 1475 | TP_printk("%llx vb=%x %s", |
| 1476 | __entry->vid, |
| 1477 | __entry->cb_v_break, |
| 1478 | __print_symbolic(__entry->reason, afs_cb_break_reasons)) |
| 1479 | ); |
| 1480 | |
| 1481 | TRACE_EVENT(afs_cb_break, |
| 1482 | TP_PROTO(struct afs_fid *fid, unsigned int cb_break, |
| 1483 | enum afs_cb_break_reason reason, bool skipped), |
| 1484 | |
| 1485 | TP_ARGS(fid, cb_break, reason, skipped), |
| 1486 | |
| 1487 | TP_STRUCT__entry( |
| 1488 | __field_struct(struct afs_fid, fid) |
| 1489 | __field(unsigned int, cb_break) |
| 1490 | __field(enum afs_cb_break_reason, reason) |
| 1491 | __field(bool, skipped) |
| 1492 | ), |
| 1493 | |
| 1494 | TP_fast_assign( |
| 1495 | __entry->fid = *fid; |
| 1496 | __entry->cb_break = cb_break; |
| 1497 | __entry->reason = reason; |
| 1498 | __entry->skipped = skipped; |
| 1499 | ), |
| 1500 | |
| 1501 | TP_printk("%llx:%llx:%x b=%x s=%u %s", |
| 1502 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1503 | __entry->cb_break, |
| 1504 | __entry->skipped, |
| 1505 | __print_symbolic(__entry->reason, afs_cb_break_reasons)) |
| 1506 | ); |
| 1507 | |
| 1508 | TRACE_EVENT(afs_cb_miss, |
| 1509 | TP_PROTO(struct afs_fid *fid, enum afs_cb_break_reason reason), |
| 1510 | |
| 1511 | TP_ARGS(fid, reason), |
| 1512 | |
| 1513 | TP_STRUCT__entry( |
| 1514 | __field_struct(struct afs_fid, fid) |
| 1515 | __field(enum afs_cb_break_reason, reason) |
| 1516 | ), |
| 1517 | |
| 1518 | TP_fast_assign( |
| 1519 | __entry->fid = *fid; |
| 1520 | __entry->reason = reason; |
| 1521 | ), |
| 1522 | |
| 1523 | TP_printk(" %llx:%llx:%x %s", |
| 1524 | __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, |
| 1525 | __print_symbolic(__entry->reason, afs_cb_break_reasons)) |
| 1526 | ); |
| 1527 | |
| 1528 | TRACE_EVENT(afs_server, |
| 1529 | TP_PROTO(unsigned int server_debug_id, int ref, int active, |
| 1530 | enum afs_server_trace reason), |
| 1531 | |
| 1532 | TP_ARGS(server_debug_id, ref, active, reason), |
| 1533 | |
| 1534 | TP_STRUCT__entry( |
| 1535 | __field(unsigned int, server) |
| 1536 | __field(int, ref) |
| 1537 | __field(int, active) |
| 1538 | __field(int, reason) |
| 1539 | ), |
| 1540 | |
| 1541 | TP_fast_assign( |
| 1542 | __entry->server = server_debug_id; |
| 1543 | __entry->ref = ref; |
| 1544 | __entry->active = active; |
| 1545 | __entry->reason = reason; |
| 1546 | ), |
| 1547 | |
| 1548 | TP_printk("s=%08x %s r=%d a=%d", |
| 1549 | __entry->server, |
| 1550 | __print_symbolic(__entry->reason, afs_server_traces), |
| 1551 | __entry->ref, |
| 1552 | __entry->active) |
| 1553 | ); |
| 1554 | |
| 1555 | TRACE_EVENT(afs_volume, |
| 1556 | TP_PROTO(unsigned int debug_id, afs_volid_t vid, int ref, |
| 1557 | enum afs_volume_trace reason), |
| 1558 | |
| 1559 | TP_ARGS(debug_id, vid, ref, reason), |
| 1560 | |
| 1561 | TP_STRUCT__entry( |
| 1562 | __field(unsigned int, debug_id) |
| 1563 | __field(afs_volid_t, vid) |
| 1564 | __field(int, ref) |
| 1565 | __field(enum afs_volume_trace, reason) |
| 1566 | ), |
| 1567 | |
| 1568 | TP_fast_assign( |
| 1569 | __entry->debug_id = debug_id; |
| 1570 | __entry->vid = vid; |
| 1571 | __entry->ref = ref; |
| 1572 | __entry->reason = reason; |
| 1573 | ), |
| 1574 | |
| 1575 | TP_printk("V=%08x %s vid=%llx r=%d", |
| 1576 | __entry->debug_id, |
| 1577 | __print_symbolic(__entry->reason, afs_volume_traces), |
| 1578 | __entry->vid, |
| 1579 | __entry->ref) |
| 1580 | ); |
| 1581 | |
| 1582 | TRACE_EVENT(afs_cell, |
| 1583 | TP_PROTO(unsigned int cell_debug_id, int ref, int active, |
| 1584 | enum afs_cell_trace reason), |
| 1585 | |
| 1586 | TP_ARGS(cell_debug_id, ref, active, reason), |
| 1587 | |
| 1588 | TP_STRUCT__entry( |
| 1589 | __field(unsigned int, cell) |
| 1590 | __field(int, ref) |
| 1591 | __field(int, active) |
| 1592 | __field(int, reason) |
| 1593 | ), |
| 1594 | |
| 1595 | TP_fast_assign( |
| 1596 | __entry->cell = cell_debug_id; |
| 1597 | __entry->ref = ref; |
| 1598 | __entry->active = active; |
| 1599 | __entry->reason = reason; |
| 1600 | ), |
| 1601 | |
| 1602 | TP_printk("L=%08x %s r=%d a=%d", |
| 1603 | __entry->cell, |
| 1604 | __print_symbolic(__entry->reason, afs_cell_traces), |
| 1605 | __entry->ref, |
| 1606 | __entry->active) |
| 1607 | ); |
| 1608 | |
| 1609 | TRACE_EVENT(afs_alist, |
| 1610 | TP_PROTO(unsigned int alist_debug_id, int ref, enum afs_alist_trace reason), |
| 1611 | |
| 1612 | TP_ARGS(alist_debug_id, ref, reason), |
| 1613 | |
| 1614 | TP_STRUCT__entry( |
| 1615 | __field(unsigned int, alist) |
| 1616 | __field(int, ref) |
| 1617 | __field(int, active) |
| 1618 | __field(int, reason) |
| 1619 | ), |
| 1620 | |
| 1621 | TP_fast_assign( |
| 1622 | __entry->alist = alist_debug_id; |
| 1623 | __entry->ref = ref; |
| 1624 | __entry->reason = reason; |
| 1625 | ), |
| 1626 | |
| 1627 | TP_printk("AL=%08x %s r=%d", |
| 1628 | __entry->alist, |
| 1629 | __print_symbolic(__entry->reason, afs_alist_traces), |
| 1630 | __entry->ref) |
| 1631 | ); |
| 1632 | |
| 1633 | TRACE_EVENT(afs_estate, |
| 1634 | TP_PROTO(unsigned int server_debug_id, unsigned int estate_debug_id, |
| 1635 | int ref, enum afs_estate_trace reason), |
| 1636 | |
| 1637 | TP_ARGS(server_debug_id, estate_debug_id, ref, reason), |
| 1638 | |
| 1639 | TP_STRUCT__entry( |
| 1640 | __field(unsigned int, server) |
| 1641 | __field(unsigned int, estate) |
| 1642 | __field(int, ref) |
| 1643 | __field(int, active) |
| 1644 | __field(int, reason) |
| 1645 | ), |
| 1646 | |
| 1647 | TP_fast_assign( |
| 1648 | __entry->server = server_debug_id; |
| 1649 | __entry->estate = estate_debug_id; |
| 1650 | __entry->ref = ref; |
| 1651 | __entry->reason = reason; |
| 1652 | ), |
| 1653 | |
| 1654 | TP_printk("ES=%08x[%x] %s r=%d", |
| 1655 | __entry->server, |
| 1656 | __entry->estate, |
| 1657 | __print_symbolic(__entry->reason, afs_estate_traces), |
| 1658 | __entry->ref) |
| 1659 | ); |
| 1660 | |
| 1661 | TRACE_EVENT(afs_fs_probe, |
| 1662 | TP_PROTO(struct afs_server *server, bool tx, struct afs_endpoint_state *estate, |
| 1663 | unsigned int addr_index, int error, s32 abort_code, unsigned int rtt_us), |
| 1664 | |
| 1665 | TP_ARGS(server, tx, estate, addr_index, error, abort_code, rtt_us), |
| 1666 | |
| 1667 | TP_STRUCT__entry( |
| 1668 | __field(unsigned int, server) |
| 1669 | __field(unsigned int, estate) |
| 1670 | __field(bool, tx) |
| 1671 | __field(u16, addr_index) |
| 1672 | __field(short, error) |
| 1673 | __field(s32, abort_code) |
| 1674 | __field(unsigned int, rtt_us) |
| 1675 | __field_struct(struct sockaddr_rxrpc, srx) |
| 1676 | ), |
| 1677 | |
| 1678 | TP_fast_assign( |
| 1679 | struct afs_addr_list *alist = estate->addresses; |
| 1680 | __entry->server = server->debug_id; |
| 1681 | __entry->estate = estate->probe_seq; |
| 1682 | __entry->tx = tx; |
| 1683 | __entry->addr_index = addr_index; |
| 1684 | __entry->error = error; |
| 1685 | __entry->abort_code = abort_code; |
| 1686 | __entry->rtt_us = rtt_us; |
| 1687 | memcpy(&__entry->srx, rxrpc_kernel_remote_srx(alist->addrs[addr_index].peer), |
| 1688 | sizeof(__entry->srx)); |
| 1689 | ), |
| 1690 | |
| 1691 | TP_printk("s=%08x %s pq=%x ax=%u e=%d ac=%d rtt=%d %pISpc", |
| 1692 | __entry->server, __entry->tx ? "tx" : "rx", __entry->estate, |
| 1693 | __entry->addr_index, __entry->error, __entry->abort_code, __entry->rtt_us, |
| 1694 | &__entry->srx.transport) |
| 1695 | ); |
| 1696 | |
| 1697 | TRACE_EVENT(afs_vl_probe, |
| 1698 | TP_PROTO(struct afs_vlserver *server, bool tx, struct afs_addr_list *alist, |
| 1699 | unsigned int addr_index, int error, s32 abort_code, unsigned int rtt_us), |
| 1700 | |
| 1701 | TP_ARGS(server, tx, alist, addr_index, error, abort_code, rtt_us), |
| 1702 | |
| 1703 | TP_STRUCT__entry( |
| 1704 | __field(unsigned int, server) |
| 1705 | __field(bool, tx) |
| 1706 | __field(unsigned short, flags) |
| 1707 | __field(u16, addr_index) |
| 1708 | __field(short, error) |
| 1709 | __field(s32, abort_code) |
| 1710 | __field(unsigned int, rtt_us) |
| 1711 | __field_struct(struct sockaddr_rxrpc, srx) |
| 1712 | ), |
| 1713 | |
| 1714 | TP_fast_assign( |
| 1715 | __entry->server = server->debug_id; |
| 1716 | __entry->tx = tx; |
| 1717 | __entry->addr_index = addr_index; |
| 1718 | __entry->error = error; |
| 1719 | __entry->abort_code = abort_code; |
| 1720 | __entry->rtt_us = rtt_us; |
| 1721 | memcpy(&__entry->srx, rxrpc_kernel_remote_srx(alist->addrs[addr_index].peer), |
| 1722 | sizeof(__entry->srx)); |
| 1723 | ), |
| 1724 | |
| 1725 | TP_printk("vl=%08x %s ax=%u e=%d ac=%d rtt=%d %pISpc", |
| 1726 | __entry->server, __entry->tx ? "tx" : "rx", __entry->addr_index, |
| 1727 | __entry->error, __entry->abort_code, __entry->rtt_us, |
| 1728 | &__entry->srx.transport) |
| 1729 | ); |
| 1730 | |
| 1731 | TRACE_EVENT(afs_rotate, |
| 1732 | TP_PROTO(struct afs_operation *op, enum afs_rotate_trace reason, unsigned int extra), |
| 1733 | |
| 1734 | TP_ARGS(op, reason, extra), |
| 1735 | |
| 1736 | TP_STRUCT__entry( |
| 1737 | __field(unsigned int, op) |
| 1738 | __field(unsigned int, flags) |
| 1739 | __field(unsigned int, extra) |
| 1740 | __field(unsigned short, iteration) |
| 1741 | __field(short, server_index) |
| 1742 | __field(short, addr_index) |
| 1743 | __field(enum afs_rotate_trace, reason) |
| 1744 | ), |
| 1745 | |
| 1746 | TP_fast_assign( |
| 1747 | __entry->op = op->debug_id; |
| 1748 | __entry->flags = op->flags; |
| 1749 | __entry->iteration = op->nr_iterations; |
| 1750 | __entry->server_index = op->server_index; |
| 1751 | __entry->addr_index = op->addr_index; |
| 1752 | __entry->reason = reason; |
| 1753 | __entry->extra = extra; |
| 1754 | ), |
| 1755 | |
| 1756 | TP_printk("OP=%08x it=%02x %s fl=%x sx=%d ax=%d ext=%d", |
| 1757 | __entry->op, |
| 1758 | __entry->iteration, |
| 1759 | __print_symbolic(__entry->reason, afs_rotate_traces), |
| 1760 | __entry->flags, |
| 1761 | __entry->server_index, |
| 1762 | __entry->addr_index, |
| 1763 | __entry->extra) |
| 1764 | ); |
| 1765 | |
| 1766 | TRACE_EVENT(afs_make_call, |
| 1767 | TP_PROTO(struct afs_call *call), |
| 1768 | |
| 1769 | TP_ARGS(call), |
| 1770 | |
| 1771 | TP_STRUCT__entry( |
| 1772 | __field(unsigned int, call) |
| 1773 | __field(bool, is_vl) |
| 1774 | __field(enum afs_fs_operation, op) |
| 1775 | __field_struct(struct afs_fid, fid) |
| 1776 | __field_struct(struct sockaddr_rxrpc, srx) |
| 1777 | ), |
| 1778 | |
| 1779 | TP_fast_assign( |
| 1780 | __entry->call = call->debug_id; |
| 1781 | __entry->op = call->operation_ID; |
| 1782 | __entry->fid = call->fid; |
| 1783 | memcpy(&__entry->srx, rxrpc_kernel_remote_srx(call->peer), |
| 1784 | sizeof(__entry->srx)); |
| 1785 | __entry->srx.srx_service = call->service_id; |
| 1786 | __entry->is_vl = (__entry->srx.srx_service == VL_SERVICE || |
| 1787 | __entry->srx.srx_service == YFS_VL_SERVICE); |
| 1788 | ), |
| 1789 | |
| 1790 | TP_printk("c=%08x %pISpc+%u %s %llx:%llx:%x", |
| 1791 | __entry->call, |
| 1792 | &__entry->srx.transport, |
| 1793 | __entry->srx.srx_service, |
| 1794 | __entry->is_vl ? |
| 1795 | __print_symbolic(__entry->op, afs_vl_operations) : |
| 1796 | __print_symbolic(__entry->op, afs_fs_operations), |
| 1797 | __entry->fid.vid, |
| 1798 | __entry->fid.vnode, |
| 1799 | __entry->fid.unique) |
| 1800 | ); |
| 1801 | |
| 1802 | TRACE_EVENT(afs_read_recv, |
| 1803 | TP_PROTO(const struct afs_operation *op, const struct afs_call *call), |
| 1804 | |
| 1805 | TP_ARGS(op, call), |
| 1806 | |
| 1807 | TP_STRUCT__entry( |
| 1808 | __field(unsigned int, rreq) |
| 1809 | __field(unsigned int, sreq) |
| 1810 | __field(unsigned int, op) |
| 1811 | __field(unsigned int, op_flags) |
| 1812 | __field(unsigned int, call) |
| 1813 | __field(enum afs_call_state, call_state) |
| 1814 | ), |
| 1815 | |
| 1816 | TP_fast_assign( |
| 1817 | __entry->op = op->debug_id; |
| 1818 | __entry->sreq = op->fetch.subreq->debug_index; |
| 1819 | __entry->rreq = op->fetch.subreq->rreq->debug_id; |
| 1820 | __entry->op_flags = op->flags; |
| 1821 | __entry->call = call->debug_id; |
| 1822 | __entry->call_state = call->state; |
| 1823 | ), |
| 1824 | |
| 1825 | TP_printk("R=%08x[%x] OP=%08x c=%08x cs=%x of=%x", |
| 1826 | __entry->rreq, __entry->sreq, |
| 1827 | __entry->op, |
| 1828 | __entry->call, __entry->call_state, |
| 1829 | __entry->op_flags) |
| 1830 | ); |
| 1831 | |
| 1832 | #endif /* _TRACE_AFS_H */ |
| 1833 | |
| 1834 | /* This part must be outside protection */ |
| 1835 | #include <trace/define_trace.h> |