1b4d0d230SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 28e8d7f13SDavid Howells /* AFS tracepoints 38e8d7f13SDavid Howells * 48e8d7f13SDavid Howells * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. 58e8d7f13SDavid Howells * Written by David Howells (dhowells@redhat.com) 68e8d7f13SDavid Howells */ 78e8d7f13SDavid Howells #undef TRACE_SYSTEM 88e8d7f13SDavid Howells #define TRACE_SYSTEM afs 98e8d7f13SDavid Howells 108e8d7f13SDavid Howells #if !defined(_TRACE_AFS_H) || defined(TRACE_HEADER_MULTI_READ) 118e8d7f13SDavid Howells #define _TRACE_AFS_H 128e8d7f13SDavid Howells 138e8d7f13SDavid Howells #include <linux/tracepoint.h> 148e8d7f13SDavid Howells 15341f741fSDavid Howells /* 16341f741fSDavid Howells * Define enums for tracing information. 17341f741fSDavid Howells */ 18341f741fSDavid Howells #ifndef __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 19341f741fSDavid Howells #define __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 20341f741fSDavid Howells 21341f741fSDavid Howells enum afs_call_trace { 22341f741fSDavid Howells afs_call_trace_alloc, 23341f741fSDavid Howells afs_call_trace_free, 2434fa4761SDavid Howells afs_call_trace_get, 25341f741fSDavid Howells afs_call_trace_put, 26341f741fSDavid Howells afs_call_trace_wake, 27341f741fSDavid Howells afs_call_trace_work, 28341f741fSDavid Howells }; 29341f741fSDavid Howells 3045218193SDavid Howells enum afs_server_trace { 3145218193SDavid Howells afs_server_trace_alloc, 3245218193SDavid Howells afs_server_trace_callback, 3345218193SDavid Howells afs_server_trace_destroy, 3445218193SDavid Howells afs_server_trace_free, 3545218193SDavid Howells afs_server_trace_gc, 36977e5f8eSDavid Howells afs_server_trace_get_by_addr, 3745218193SDavid Howells afs_server_trace_get_by_uuid, 3845218193SDavid Howells afs_server_trace_get_caps, 3945218193SDavid Howells afs_server_trace_get_install, 4045218193SDavid Howells afs_server_trace_get_new_cbi, 41f6cbb368SDavid Howells afs_server_trace_get_probe, 4245218193SDavid Howells afs_server_trace_give_up_cb, 4345218193SDavid Howells afs_server_trace_put_call, 4445218193SDavid Howells afs_server_trace_put_cbi, 4545218193SDavid Howells afs_server_trace_put_find_rsq, 46f6cbb368SDavid Howells afs_server_trace_put_probe, 4745218193SDavid Howells afs_server_trace_put_slist, 4845218193SDavid Howells afs_server_trace_put_slist_isort, 4945218193SDavid Howells afs_server_trace_put_uuid_rsq, 5045218193SDavid Howells afs_server_trace_update, 5145218193SDavid Howells }; 5245218193SDavid Howells 53*cca37d45SDavid Howells enum afs_volume_trace { 54*cca37d45SDavid Howells afs_volume_trace_alloc, 55*cca37d45SDavid Howells afs_volume_trace_free, 56*cca37d45SDavid Howells afs_volume_trace_get_alloc_sbi, 57*cca37d45SDavid Howells afs_volume_trace_get_cell_insert, 58*cca37d45SDavid Howells afs_volume_trace_get_new_op, 59*cca37d45SDavid Howells afs_volume_trace_get_query_alias, 60*cca37d45SDavid Howells afs_volume_trace_put_cell_dup, 61*cca37d45SDavid Howells afs_volume_trace_put_cell_root, 62*cca37d45SDavid Howells afs_volume_trace_put_destroy_sbi, 63*cca37d45SDavid Howells afs_volume_trace_put_free_fc, 64*cca37d45SDavid Howells afs_volume_trace_put_put_op, 65*cca37d45SDavid Howells afs_volume_trace_put_query_alias, 66*cca37d45SDavid Howells afs_volume_trace_put_validate_fc, 67*cca37d45SDavid Howells afs_volume_trace_remove, 68*cca37d45SDavid Howells }; 69*cca37d45SDavid Howells 70025db80cSDavid Howells enum afs_fs_operation { 71025db80cSDavid Howells afs_FS_FetchData = 130, /* AFS Fetch file data */ 72260f082bSDavid Howells afs_FS_FetchACL = 131, /* AFS Fetch file ACL */ 73025db80cSDavid Howells afs_FS_FetchStatus = 132, /* AFS Fetch file status */ 74025db80cSDavid Howells afs_FS_StoreData = 133, /* AFS Store file data */ 75b10494afSJoe Gorse afs_FS_StoreACL = 134, /* AFS Store file ACL */ 76025db80cSDavid Howells afs_FS_StoreStatus = 135, /* AFS Store file status */ 77025db80cSDavid Howells afs_FS_RemoveFile = 136, /* AFS Remove a file */ 78025db80cSDavid Howells afs_FS_CreateFile = 137, /* AFS Create a file */ 79025db80cSDavid Howells afs_FS_Rename = 138, /* AFS Rename or move a file or directory */ 80025db80cSDavid Howells afs_FS_Symlink = 139, /* AFS Create a symbolic link */ 81025db80cSDavid Howells afs_FS_Link = 140, /* AFS Create a hard link */ 82025db80cSDavid Howells afs_FS_MakeDir = 141, /* AFS Create a directory */ 83025db80cSDavid Howells afs_FS_RemoveDir = 142, /* AFS Remove a directory */ 84025db80cSDavid Howells afs_FS_GetVolumeInfo = 148, /* AFS Get information about a volume */ 85025db80cSDavid Howells afs_FS_GetVolumeStatus = 149, /* AFS Get volume status information */ 86025db80cSDavid Howells afs_FS_GetRootVolume = 151, /* AFS Get root volume name */ 87025db80cSDavid Howells afs_FS_SetLock = 156, /* AFS Request a file lock */ 88025db80cSDavid Howells afs_FS_ExtendLock = 157, /* AFS Extend a file lock */ 89025db80cSDavid Howells afs_FS_ReleaseLock = 158, /* AFS Release a file lock */ 90025db80cSDavid Howells afs_FS_Lookup = 161, /* AFS lookup file in directory */ 915cf9dd55SDavid Howells afs_FS_InlineBulkStatus = 65536, /* AFS Fetch multiple file statuses with errors */ 92025db80cSDavid Howells afs_FS_FetchData64 = 65537, /* AFS Fetch file data */ 93025db80cSDavid Howells afs_FS_StoreData64 = 65538, /* AFS Store file data */ 94025db80cSDavid Howells afs_FS_GiveUpAllCallBacks = 65539, /* AFS Give up all our callbacks on a server */ 95025db80cSDavid Howells afs_FS_GetCapabilities = 65540, /* AFS Get FS server capabilities */ 9630062bd1SDavid Howells 9730062bd1SDavid Howells yfs_FS_FetchData = 130, /* YFS Fetch file data */ 9830062bd1SDavid Howells yfs_FS_FetchACL = 64131, /* YFS Fetch file ACL */ 9930062bd1SDavid Howells yfs_FS_FetchStatus = 64132, /* YFS Fetch file status */ 10030062bd1SDavid Howells yfs_FS_StoreACL = 64134, /* YFS Store file ACL */ 10130062bd1SDavid Howells yfs_FS_StoreStatus = 64135, /* YFS Store file status */ 10230062bd1SDavid Howells yfs_FS_RemoveFile = 64136, /* YFS Remove a file */ 10330062bd1SDavid Howells yfs_FS_CreateFile = 64137, /* YFS Create a file */ 10430062bd1SDavid Howells yfs_FS_Rename = 64138, /* YFS Rename or move a file or directory */ 10530062bd1SDavid Howells yfs_FS_Symlink = 64139, /* YFS Create a symbolic link */ 10630062bd1SDavid Howells yfs_FS_Link = 64140, /* YFS Create a hard link */ 10730062bd1SDavid Howells yfs_FS_MakeDir = 64141, /* YFS Create a directory */ 10830062bd1SDavid Howells yfs_FS_RemoveDir = 64142, /* YFS Remove a directory */ 10930062bd1SDavid Howells yfs_FS_GetVolumeStatus = 64149, /* YFS Get volume status information */ 11030062bd1SDavid Howells yfs_FS_SetVolumeStatus = 64150, /* YFS Set volume status information */ 11130062bd1SDavid Howells yfs_FS_SetLock = 64156, /* YFS Request a file lock */ 11230062bd1SDavid Howells yfs_FS_ExtendLock = 64157, /* YFS Extend a file lock */ 11330062bd1SDavid Howells yfs_FS_ReleaseLock = 64158, /* YFS Release a file lock */ 11430062bd1SDavid Howells yfs_FS_Lookup = 64161, /* YFS lookup file in directory */ 11530062bd1SDavid Howells yfs_FS_FlushCPS = 64165, 11630062bd1SDavid Howells yfs_FS_FetchOpaqueACL = 64168, 11730062bd1SDavid Howells yfs_FS_WhoAmI = 64170, 11830062bd1SDavid Howells yfs_FS_RemoveACL = 64171, 11930062bd1SDavid Howells yfs_FS_RemoveFile2 = 64173, 12030062bd1SDavid Howells yfs_FS_StoreOpaqueACL2 = 64174, 12130062bd1SDavid Howells yfs_FS_InlineBulkStatus = 64536, /* YFS Fetch multiple file statuses with errors */ 12230062bd1SDavid Howells yfs_FS_FetchData64 = 64537, /* YFS Fetch file data */ 12330062bd1SDavid Howells yfs_FS_StoreData64 = 64538, /* YFS Store file data */ 12430062bd1SDavid Howells yfs_FS_UpdateSymlink = 64540, 125025db80cSDavid Howells }; 126025db80cSDavid Howells 127025db80cSDavid Howells enum afs_vl_operation { 128025db80cSDavid Howells afs_VL_GetEntryByNameU = 527, /* AFS Get Vol Entry By Name operation ID */ 129025db80cSDavid Howells afs_VL_GetAddrsU = 533, /* AFS Get FS server addresses */ 130025db80cSDavid Howells afs_YFSVL_GetEndpoints = 64002, /* YFS Get FS & Vol server addresses */ 131c3e9f888SDavid Howells afs_YFSVL_GetCellName = 64014, /* YFS Get actual cell name */ 132025db80cSDavid Howells afs_VL_GetCapabilities = 65537, /* AFS Get VL server capabilities */ 133025db80cSDavid Howells }; 134025db80cSDavid Howells 13563a4681fSDavid Howells enum afs_edit_dir_op { 13663a4681fSDavid Howells afs_edit_dir_create, 13763a4681fSDavid Howells afs_edit_dir_create_error, 13863a4681fSDavid Howells afs_edit_dir_create_inval, 13963a4681fSDavid Howells afs_edit_dir_create_nospc, 14063a4681fSDavid Howells afs_edit_dir_delete, 14163a4681fSDavid Howells afs_edit_dir_delete_error, 14263a4681fSDavid Howells afs_edit_dir_delete_inval, 14363a4681fSDavid Howells afs_edit_dir_delete_noent, 14463a4681fSDavid Howells }; 14563a4681fSDavid Howells 14663a4681fSDavid Howells enum afs_edit_dir_reason { 14763a4681fSDavid Howells afs_edit_dir_for_create, 14863a4681fSDavid Howells afs_edit_dir_for_link, 14963a4681fSDavid Howells afs_edit_dir_for_mkdir, 15079ddbfa5SDavid Howells afs_edit_dir_for_rename_0, 15179ddbfa5SDavid Howells afs_edit_dir_for_rename_1, 15279ddbfa5SDavid Howells afs_edit_dir_for_rename_2, 15363a4681fSDavid Howells afs_edit_dir_for_rmdir, 15479ddbfa5SDavid Howells afs_edit_dir_for_silly_0, 15579ddbfa5SDavid Howells afs_edit_dir_for_silly_1, 15663a4681fSDavid Howells afs_edit_dir_for_symlink, 15763a4681fSDavid Howells afs_edit_dir_for_unlink, 15863a4681fSDavid Howells }; 15963a4681fSDavid Howells 160160cb957SDavid Howells enum afs_eproto_cause { 161160cb957SDavid Howells afs_eproto_bad_status, 162160cb957SDavid Howells afs_eproto_cb_count, 163160cb957SDavid Howells afs_eproto_cb_fid_count, 164c3e9f888SDavid Howells afs_eproto_cellname_len, 165160cb957SDavid Howells afs_eproto_file_type, 166160cb957SDavid Howells afs_eproto_ibulkst_cb_count, 167160cb957SDavid Howells afs_eproto_ibulkst_count, 168160cb957SDavid Howells afs_eproto_motd_len, 169160cb957SDavid Howells afs_eproto_offline_msg_len, 170160cb957SDavid Howells afs_eproto_volname_len, 171160cb957SDavid Howells afs_eproto_yvl_fsendpt4_len, 172160cb957SDavid Howells afs_eproto_yvl_fsendpt6_len, 173160cb957SDavid Howells afs_eproto_yvl_fsendpt_num, 174160cb957SDavid Howells afs_eproto_yvl_fsendpt_type, 175160cb957SDavid Howells afs_eproto_yvl_vlendpt4_len, 176160cb957SDavid Howells afs_eproto_yvl_vlendpt6_len, 177160cb957SDavid Howells afs_eproto_yvl_vlendpt_type, 178160cb957SDavid Howells }; 179160cb957SDavid Howells 180f51375cdSDavid Howells enum afs_io_error { 181f51375cdSDavid Howells afs_io_error_cm_reply, 182f51375cdSDavid Howells afs_io_error_extract, 183f51375cdSDavid Howells afs_io_error_fs_probe_fail, 184f51375cdSDavid Howells afs_io_error_vl_lookup_fail, 1853bf0fb6fSDavid Howells afs_io_error_vl_probe_fail, 186f51375cdSDavid Howells }; 187f51375cdSDavid Howells 188f51375cdSDavid Howells enum afs_file_error { 189f51375cdSDavid Howells afs_file_error_dir_bad_magic, 190f51375cdSDavid Howells afs_file_error_dir_big, 191f51375cdSDavid Howells afs_file_error_dir_missing_page, 192f51375cdSDavid Howells afs_file_error_dir_over_end, 193f51375cdSDavid Howells afs_file_error_dir_small, 194f51375cdSDavid Howells afs_file_error_dir_unmarked_ext, 195f51375cdSDavid Howells afs_file_error_mntpt, 196f51375cdSDavid Howells afs_file_error_writeback_fail, 197f51375cdSDavid Howells }; 198f51375cdSDavid Howells 199d4696601SDavid Howells enum afs_flock_event { 200d4696601SDavid Howells afs_flock_acquired, 201d4696601SDavid Howells afs_flock_callback_break, 202d4696601SDavid Howells afs_flock_defer_unlock, 203cdfb26b4SDavid Howells afs_flock_extend_fail, 204d4696601SDavid Howells afs_flock_fail_other, 205d4696601SDavid Howells afs_flock_fail_perm, 206d4696601SDavid Howells afs_flock_no_lockers, 207cdfb26b4SDavid Howells afs_flock_release_fail, 20879ddbfa5SDavid Howells afs_flock_silly_delete, 209d4696601SDavid Howells afs_flock_timestamp, 210d4696601SDavid Howells afs_flock_try_to_lock, 211d4696601SDavid Howells afs_flock_vfs_lock, 212d4696601SDavid Howells afs_flock_vfs_locking, 213d4696601SDavid Howells afs_flock_waited, 214d4696601SDavid Howells afs_flock_waiting, 215d4696601SDavid Howells afs_flock_work_extending, 216d4696601SDavid Howells afs_flock_work_retry, 217d4696601SDavid Howells afs_flock_work_unlocking, 218d4696601SDavid Howells afs_flock_would_block, 219d4696601SDavid Howells }; 220d4696601SDavid Howells 221d4696601SDavid Howells enum afs_flock_operation { 222d4696601SDavid Howells afs_flock_op_copy_lock, 223d4696601SDavid Howells afs_flock_op_flock, 224d4696601SDavid Howells afs_flock_op_grant, 225d4696601SDavid Howells afs_flock_op_lock, 226d4696601SDavid Howells afs_flock_op_release_lock, 227d4696601SDavid Howells afs_flock_op_return_ok, 228d4696601SDavid Howells afs_flock_op_return_eagain, 229d4696601SDavid Howells afs_flock_op_return_edeadlk, 230d4696601SDavid Howells afs_flock_op_return_error, 231d4696601SDavid Howells afs_flock_op_set_lock, 232d4696601SDavid Howells afs_flock_op_unlock, 233d4696601SDavid Howells afs_flock_op_wake, 234d4696601SDavid Howells }; 235d4696601SDavid Howells 236051d2525SDavid Howells enum afs_cb_break_reason { 237051d2525SDavid Howells afs_cb_break_no_break, 238051d2525SDavid Howells afs_cb_break_for_callback, 239051d2525SDavid Howells afs_cb_break_for_deleted, 240051d2525SDavid Howells afs_cb_break_for_lapsed, 241051d2525SDavid Howells afs_cb_break_for_unlink, 242051d2525SDavid Howells afs_cb_break_for_vsbreak, 243051d2525SDavid Howells afs_cb_break_for_volume_callback, 244051d2525SDavid Howells afs_cb_break_for_zap, 245051d2525SDavid Howells }; 246051d2525SDavid Howells 247341f741fSDavid Howells #endif /* end __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY */ 248341f741fSDavid Howells 249341f741fSDavid Howells /* 250341f741fSDavid Howells * Declare tracing information enums and their string mappings for display. 251341f741fSDavid Howells */ 252341f741fSDavid Howells #define afs_call_traces \ 253341f741fSDavid Howells EM(afs_call_trace_alloc, "ALLOC") \ 254341f741fSDavid Howells EM(afs_call_trace_free, "FREE ") \ 25534fa4761SDavid Howells EM(afs_call_trace_get, "GET ") \ 256341f741fSDavid Howells EM(afs_call_trace_put, "PUT ") \ 257341f741fSDavid Howells EM(afs_call_trace_wake, "WAKE ") \ 2584636cf18SDavid Howells E_(afs_call_trace_work, "QUEUE") 259341f741fSDavid Howells 26045218193SDavid Howells #define afs_server_traces \ 26145218193SDavid Howells EM(afs_server_trace_alloc, "ALLOC ") \ 26245218193SDavid Howells EM(afs_server_trace_callback, "CALLBACK ") \ 26345218193SDavid Howells EM(afs_server_trace_destroy, "DESTROY ") \ 26445218193SDavid Howells EM(afs_server_trace_free, "FREE ") \ 26545218193SDavid Howells EM(afs_server_trace_gc, "GC ") \ 266977e5f8eSDavid Howells EM(afs_server_trace_get_by_addr, "GET addr ") \ 26745218193SDavid Howells EM(afs_server_trace_get_by_uuid, "GET uuid ") \ 26845218193SDavid Howells EM(afs_server_trace_get_caps, "GET caps ") \ 26945218193SDavid Howells EM(afs_server_trace_get_install, "GET inst ") \ 27045218193SDavid Howells EM(afs_server_trace_get_new_cbi, "GET cbi ") \ 271f6cbb368SDavid Howells EM(afs_server_trace_get_probe, "GET probe") \ 27245218193SDavid Howells EM(afs_server_trace_give_up_cb, "giveup-cb") \ 27345218193SDavid Howells EM(afs_server_trace_put_call, "PUT call ") \ 27445218193SDavid Howells EM(afs_server_trace_put_cbi, "PUT cbi ") \ 27545218193SDavid Howells EM(afs_server_trace_put_find_rsq, "PUT f-rsq") \ 276f6cbb368SDavid Howells EM(afs_server_trace_put_probe, "PUT probe") \ 27745218193SDavid Howells EM(afs_server_trace_put_slist, "PUT slist") \ 27845218193SDavid Howells EM(afs_server_trace_put_slist_isort, "PUT isort") \ 27945218193SDavid Howells EM(afs_server_trace_put_uuid_rsq, "PUT u-req") \ 28045218193SDavid Howells E_(afs_server_trace_update, "UPDATE") 28145218193SDavid Howells 282*cca37d45SDavid Howells #define afs_volume_traces \ 283*cca37d45SDavid Howells EM(afs_volume_trace_alloc, "ALLOC ") \ 284*cca37d45SDavid Howells EM(afs_volume_trace_free, "FREE ") \ 285*cca37d45SDavid Howells EM(afs_volume_trace_get_alloc_sbi, "GET sbi-alloc ") \ 286*cca37d45SDavid Howells EM(afs_volume_trace_get_cell_insert, "GET cell-insrt") \ 287*cca37d45SDavid Howells EM(afs_volume_trace_get_new_op, "GET op-new ") \ 288*cca37d45SDavid Howells EM(afs_volume_trace_get_query_alias, "GET cell-alias") \ 289*cca37d45SDavid Howells EM(afs_volume_trace_put_cell_dup, "PUT cell-dup ") \ 290*cca37d45SDavid Howells EM(afs_volume_trace_put_cell_root, "PUT cell-root ") \ 291*cca37d45SDavid Howells EM(afs_volume_trace_put_destroy_sbi, "PUT sbi-destry") \ 292*cca37d45SDavid Howells EM(afs_volume_trace_put_free_fc, "PUT fc-free ") \ 293*cca37d45SDavid Howells EM(afs_volume_trace_put_put_op, "PUT op-put ") \ 294*cca37d45SDavid Howells EM(afs_volume_trace_put_query_alias, "PUT cell-alias") \ 295*cca37d45SDavid Howells EM(afs_volume_trace_put_validate_fc, "PUT fc-validat") \ 296*cca37d45SDavid Howells E_(afs_volume_trace_remove, "REMOVE ") 297*cca37d45SDavid Howells 298025db80cSDavid Howells #define afs_fs_operations \ 299025db80cSDavid Howells EM(afs_FS_FetchData, "FS.FetchData") \ 300025db80cSDavid Howells EM(afs_FS_FetchStatus, "FS.FetchStatus") \ 301025db80cSDavid Howells EM(afs_FS_StoreData, "FS.StoreData") \ 302025db80cSDavid Howells EM(afs_FS_StoreStatus, "FS.StoreStatus") \ 303025db80cSDavid Howells EM(afs_FS_RemoveFile, "FS.RemoveFile") \ 304025db80cSDavid Howells EM(afs_FS_CreateFile, "FS.CreateFile") \ 305025db80cSDavid Howells EM(afs_FS_Rename, "FS.Rename") \ 306025db80cSDavid Howells EM(afs_FS_Symlink, "FS.Symlink") \ 307025db80cSDavid Howells EM(afs_FS_Link, "FS.Link") \ 308025db80cSDavid Howells EM(afs_FS_MakeDir, "FS.MakeDir") \ 309025db80cSDavid Howells EM(afs_FS_RemoveDir, "FS.RemoveDir") \ 310025db80cSDavid Howells EM(afs_FS_GetVolumeInfo, "FS.GetVolumeInfo") \ 311025db80cSDavid Howells EM(afs_FS_GetVolumeStatus, "FS.GetVolumeStatus") \ 312025db80cSDavid Howells EM(afs_FS_GetRootVolume, "FS.GetRootVolume") \ 313025db80cSDavid Howells EM(afs_FS_SetLock, "FS.SetLock") \ 314025db80cSDavid Howells EM(afs_FS_ExtendLock, "FS.ExtendLock") \ 315025db80cSDavid Howells EM(afs_FS_ReleaseLock, "FS.ReleaseLock") \ 316025db80cSDavid Howells EM(afs_FS_Lookup, "FS.Lookup") \ 3175cf9dd55SDavid Howells EM(afs_FS_InlineBulkStatus, "FS.InlineBulkStatus") \ 318025db80cSDavid Howells EM(afs_FS_FetchData64, "FS.FetchData64") \ 319025db80cSDavid Howells EM(afs_FS_StoreData64, "FS.StoreData64") \ 320025db80cSDavid Howells EM(afs_FS_GiveUpAllCallBacks, "FS.GiveUpAllCallBacks") \ 32130062bd1SDavid Howells EM(afs_FS_GetCapabilities, "FS.GetCapabilities") \ 32230062bd1SDavid Howells EM(yfs_FS_FetchACL, "YFS.FetchACL") \ 32330062bd1SDavid Howells EM(yfs_FS_FetchStatus, "YFS.FetchStatus") \ 32430062bd1SDavid Howells EM(yfs_FS_StoreACL, "YFS.StoreACL") \ 32530062bd1SDavid Howells EM(yfs_FS_StoreStatus, "YFS.StoreStatus") \ 32630062bd1SDavid Howells EM(yfs_FS_RemoveFile, "YFS.RemoveFile") \ 32730062bd1SDavid Howells EM(yfs_FS_CreateFile, "YFS.CreateFile") \ 32830062bd1SDavid Howells EM(yfs_FS_Rename, "YFS.Rename") \ 32930062bd1SDavid Howells EM(yfs_FS_Symlink, "YFS.Symlink") \ 33030062bd1SDavid Howells EM(yfs_FS_Link, "YFS.Link") \ 33130062bd1SDavid Howells EM(yfs_FS_MakeDir, "YFS.MakeDir") \ 33230062bd1SDavid Howells EM(yfs_FS_RemoveDir, "YFS.RemoveDir") \ 33330062bd1SDavid Howells EM(yfs_FS_GetVolumeStatus, "YFS.GetVolumeStatus") \ 33430062bd1SDavid Howells EM(yfs_FS_SetVolumeStatus, "YFS.SetVolumeStatus") \ 33530062bd1SDavid Howells EM(yfs_FS_SetLock, "YFS.SetLock") \ 33630062bd1SDavid Howells EM(yfs_FS_ExtendLock, "YFS.ExtendLock") \ 33730062bd1SDavid Howells EM(yfs_FS_ReleaseLock, "YFS.ReleaseLock") \ 33830062bd1SDavid Howells EM(yfs_FS_Lookup, "YFS.Lookup") \ 33930062bd1SDavid Howells EM(yfs_FS_FlushCPS, "YFS.FlushCPS") \ 34030062bd1SDavid Howells EM(yfs_FS_FetchOpaqueACL, "YFS.FetchOpaqueACL") \ 34130062bd1SDavid Howells EM(yfs_FS_WhoAmI, "YFS.WhoAmI") \ 34230062bd1SDavid Howells EM(yfs_FS_RemoveACL, "YFS.RemoveACL") \ 34330062bd1SDavid Howells EM(yfs_FS_RemoveFile2, "YFS.RemoveFile2") \ 34430062bd1SDavid Howells EM(yfs_FS_StoreOpaqueACL2, "YFS.StoreOpaqueACL2") \ 34530062bd1SDavid Howells EM(yfs_FS_InlineBulkStatus, "YFS.InlineBulkStatus") \ 34630062bd1SDavid Howells EM(yfs_FS_FetchData64, "YFS.FetchData64") \ 34730062bd1SDavid Howells EM(yfs_FS_StoreData64, "YFS.StoreData64") \ 34830062bd1SDavid Howells E_(yfs_FS_UpdateSymlink, "YFS.UpdateSymlink") 349025db80cSDavid Howells 350025db80cSDavid Howells #define afs_vl_operations \ 351025db80cSDavid Howells EM(afs_VL_GetEntryByNameU, "VL.GetEntryByNameU") \ 352025db80cSDavid Howells EM(afs_VL_GetAddrsU, "VL.GetAddrsU") \ 353025db80cSDavid Howells EM(afs_YFSVL_GetEndpoints, "YFSVL.GetEndpoints") \ 354c3e9f888SDavid Howells EM(afs_YFSVL_GetCellName, "YFSVL.GetCellName") \ 355025db80cSDavid Howells E_(afs_VL_GetCapabilities, "VL.GetCapabilities") 356025db80cSDavid Howells 35763a4681fSDavid Howells #define afs_edit_dir_ops \ 35863a4681fSDavid Howells EM(afs_edit_dir_create, "create") \ 35963a4681fSDavid Howells EM(afs_edit_dir_create_error, "c_fail") \ 36063a4681fSDavid Howells EM(afs_edit_dir_create_inval, "c_invl") \ 36163a4681fSDavid Howells EM(afs_edit_dir_create_nospc, "c_nspc") \ 36263a4681fSDavid Howells EM(afs_edit_dir_delete, "delete") \ 36363a4681fSDavid Howells EM(afs_edit_dir_delete_error, "d_err ") \ 36463a4681fSDavid Howells EM(afs_edit_dir_delete_inval, "d_invl") \ 36563a4681fSDavid Howells E_(afs_edit_dir_delete_noent, "d_nent") 36663a4681fSDavid Howells 36763a4681fSDavid Howells #define afs_edit_dir_reasons \ 36863a4681fSDavid Howells EM(afs_edit_dir_for_create, "Create") \ 36963a4681fSDavid Howells EM(afs_edit_dir_for_link, "Link ") \ 37063a4681fSDavid Howells EM(afs_edit_dir_for_mkdir, "MkDir ") \ 37179ddbfa5SDavid Howells EM(afs_edit_dir_for_rename_0, "Renam0") \ 37279ddbfa5SDavid Howells EM(afs_edit_dir_for_rename_1, "Renam1") \ 37379ddbfa5SDavid Howells EM(afs_edit_dir_for_rename_2, "Renam2") \ 37463a4681fSDavid Howells EM(afs_edit_dir_for_rmdir, "RmDir ") \ 37579ddbfa5SDavid Howells EM(afs_edit_dir_for_silly_0, "S_Ren0") \ 37679ddbfa5SDavid Howells EM(afs_edit_dir_for_silly_1, "S_Ren1") \ 37763a4681fSDavid Howells EM(afs_edit_dir_for_symlink, "Symlnk") \ 37863a4681fSDavid Howells E_(afs_edit_dir_for_unlink, "Unlink") 37963a4681fSDavid Howells 380160cb957SDavid Howells #define afs_eproto_causes \ 381160cb957SDavid Howells EM(afs_eproto_bad_status, "BadStatus") \ 382160cb957SDavid Howells EM(afs_eproto_cb_count, "CbCount") \ 383160cb957SDavid Howells EM(afs_eproto_cb_fid_count, "CbFidCount") \ 384c3e9f888SDavid Howells EM(afs_eproto_cellname_len, "CellNameLen") \ 385160cb957SDavid Howells EM(afs_eproto_file_type, "FileTYpe") \ 386160cb957SDavid Howells EM(afs_eproto_ibulkst_cb_count, "IBS.CbCount") \ 387160cb957SDavid Howells EM(afs_eproto_ibulkst_count, "IBS.FidCount") \ 388160cb957SDavid Howells EM(afs_eproto_motd_len, "MotdLen") \ 389160cb957SDavid Howells EM(afs_eproto_offline_msg_len, "OfflineMsgLen") \ 390160cb957SDavid Howells EM(afs_eproto_volname_len, "VolNameLen") \ 391160cb957SDavid Howells EM(afs_eproto_yvl_fsendpt4_len, "YVL.FsEnd4Len") \ 392160cb957SDavid Howells EM(afs_eproto_yvl_fsendpt6_len, "YVL.FsEnd6Len") \ 393160cb957SDavid Howells EM(afs_eproto_yvl_fsendpt_num, "YVL.FsEndCount") \ 394160cb957SDavid Howells EM(afs_eproto_yvl_fsendpt_type, "YVL.FsEndType") \ 395160cb957SDavid Howells EM(afs_eproto_yvl_vlendpt4_len, "YVL.VlEnd4Len") \ 396160cb957SDavid Howells EM(afs_eproto_yvl_vlendpt6_len, "YVL.VlEnd6Len") \ 397160cb957SDavid Howells E_(afs_eproto_yvl_vlendpt_type, "YVL.VlEndType") 398160cb957SDavid Howells 399f51375cdSDavid Howells #define afs_io_errors \ 400f51375cdSDavid Howells EM(afs_io_error_cm_reply, "CM_REPLY") \ 401f51375cdSDavid Howells EM(afs_io_error_extract, "EXTRACT") \ 402f51375cdSDavid Howells EM(afs_io_error_fs_probe_fail, "FS_PROBE_FAIL") \ 4033bf0fb6fSDavid Howells EM(afs_io_error_vl_lookup_fail, "VL_LOOKUP_FAIL") \ 4043bf0fb6fSDavid Howells E_(afs_io_error_vl_probe_fail, "VL_PROBE_FAIL") 405f51375cdSDavid Howells 406f51375cdSDavid Howells #define afs_file_errors \ 407f51375cdSDavid Howells EM(afs_file_error_dir_bad_magic, "DIR_BAD_MAGIC") \ 408f51375cdSDavid Howells EM(afs_file_error_dir_big, "DIR_BIG") \ 409f51375cdSDavid Howells EM(afs_file_error_dir_missing_page, "DIR_MISSING_PAGE") \ 410f51375cdSDavid Howells EM(afs_file_error_dir_over_end, "DIR_ENT_OVER_END") \ 411f51375cdSDavid Howells EM(afs_file_error_dir_small, "DIR_SMALL") \ 412f51375cdSDavid Howells EM(afs_file_error_dir_unmarked_ext, "DIR_UNMARKED_EXT") \ 413f51375cdSDavid Howells EM(afs_file_error_mntpt, "MNTPT_READ_FAILED") \ 414f51375cdSDavid Howells E_(afs_file_error_writeback_fail, "WRITEBACK_FAILED") 415025db80cSDavid Howells 416d4696601SDavid Howells #define afs_flock_types \ 417d4696601SDavid Howells EM(F_RDLCK, "RDLCK") \ 418d4696601SDavid Howells EM(F_WRLCK, "WRLCK") \ 419d4696601SDavid Howells E_(F_UNLCK, "UNLCK") 420d4696601SDavid Howells 421d4696601SDavid Howells #define afs_flock_states \ 422d4696601SDavid Howells EM(AFS_VNODE_LOCK_NONE, "NONE") \ 423d4696601SDavid Howells EM(AFS_VNODE_LOCK_WAITING_FOR_CB, "WAIT_FOR_CB") \ 424d4696601SDavid Howells EM(AFS_VNODE_LOCK_SETTING, "SETTING") \ 425d4696601SDavid Howells EM(AFS_VNODE_LOCK_GRANTED, "GRANTED") \ 426d4696601SDavid Howells EM(AFS_VNODE_LOCK_EXTENDING, "EXTENDING") \ 427d4696601SDavid Howells EM(AFS_VNODE_LOCK_NEED_UNLOCK, "NEED_UNLOCK") \ 428cdfb26b4SDavid Howells EM(AFS_VNODE_LOCK_UNLOCKING, "UNLOCKING") \ 429cdfb26b4SDavid Howells E_(AFS_VNODE_LOCK_DELETED, "DELETED") 430d4696601SDavid Howells 431d4696601SDavid Howells #define afs_flock_events \ 432d4696601SDavid Howells EM(afs_flock_acquired, "Acquired") \ 433d4696601SDavid Howells EM(afs_flock_callback_break, "Callback") \ 434d4696601SDavid Howells EM(afs_flock_defer_unlock, "D-Unlock") \ 435cdfb26b4SDavid Howells EM(afs_flock_extend_fail, "Ext_Fail") \ 436d4696601SDavid Howells EM(afs_flock_fail_other, "ErrOther") \ 437d4696601SDavid Howells EM(afs_flock_fail_perm, "ErrPerm ") \ 438d4696601SDavid Howells EM(afs_flock_no_lockers, "NoLocker") \ 439cdfb26b4SDavid Howells EM(afs_flock_release_fail, "Rel_Fail") \ 44079ddbfa5SDavid Howells EM(afs_flock_silly_delete, "SillyDel") \ 441d4696601SDavid Howells EM(afs_flock_timestamp, "Timestmp") \ 442d4696601SDavid Howells EM(afs_flock_try_to_lock, "TryToLck") \ 443d4696601SDavid Howells EM(afs_flock_vfs_lock, "VFSLock ") \ 444d4696601SDavid Howells EM(afs_flock_vfs_locking, "VFSLking") \ 445d4696601SDavid Howells EM(afs_flock_waited, "Waited ") \ 446d4696601SDavid Howells EM(afs_flock_waiting, "Waiting ") \ 447d4696601SDavid Howells EM(afs_flock_work_extending, "Extendng") \ 448d4696601SDavid Howells EM(afs_flock_work_retry, "Retry ") \ 449d4696601SDavid Howells EM(afs_flock_work_unlocking, "Unlcking") \ 450d4696601SDavid Howells E_(afs_flock_would_block, "EWOULDBL") 451d4696601SDavid Howells 452d4696601SDavid Howells #define afs_flock_operations \ 453d4696601SDavid Howells EM(afs_flock_op_copy_lock, "COPY ") \ 454d4696601SDavid Howells EM(afs_flock_op_flock, "->flock ") \ 455d4696601SDavid Howells EM(afs_flock_op_grant, "GRANT ") \ 456d4696601SDavid Howells EM(afs_flock_op_lock, "->lock ") \ 457d4696601SDavid Howells EM(afs_flock_op_release_lock, "RELEASE ") \ 458d4696601SDavid Howells EM(afs_flock_op_return_ok, "<-OK ") \ 459d4696601SDavid Howells EM(afs_flock_op_return_edeadlk, "<-EDEADL") \ 460d4696601SDavid Howells EM(afs_flock_op_return_eagain, "<-EAGAIN") \ 461d4696601SDavid Howells EM(afs_flock_op_return_error, "<-ERROR ") \ 462d4696601SDavid Howells EM(afs_flock_op_set_lock, "SET ") \ 463d4696601SDavid Howells EM(afs_flock_op_unlock, "UNLOCK ") \ 464d4696601SDavid Howells E_(afs_flock_op_wake, "WAKE ") 465d4696601SDavid Howells 466051d2525SDavid Howells #define afs_cb_break_reasons \ 467051d2525SDavid Howells EM(afs_cb_break_no_break, "no-break") \ 468051d2525SDavid Howells EM(afs_cb_break_for_callback, "break-cb") \ 469051d2525SDavid Howells EM(afs_cb_break_for_deleted, "break-del") \ 470051d2525SDavid Howells EM(afs_cb_break_for_lapsed, "break-lapsed") \ 471051d2525SDavid Howells EM(afs_cb_break_for_unlink, "break-unlink") \ 472051d2525SDavid Howells EM(afs_cb_break_for_vsbreak, "break-vs") \ 473051d2525SDavid Howells EM(afs_cb_break_for_volume_callback, "break-v-cb") \ 474051d2525SDavid Howells E_(afs_cb_break_for_zap, "break-zap") 475051d2525SDavid Howells 476341f741fSDavid Howells /* 477341f741fSDavid Howells * Export enum symbols via userspace. 478341f741fSDavid Howells */ 479341f741fSDavid Howells #undef EM 480341f741fSDavid Howells #undef E_ 481341f741fSDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a); 482341f741fSDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a); 483341f741fSDavid Howells 484341f741fSDavid Howells afs_call_traces; 48545218193SDavid Howells afs_server_traces; 486025db80cSDavid Howells afs_fs_operations; 487025db80cSDavid Howells afs_vl_operations; 48863a4681fSDavid Howells afs_edit_dir_ops; 48963a4681fSDavid Howells afs_edit_dir_reasons; 490f51375cdSDavid Howells afs_eproto_causes; 491f51375cdSDavid Howells afs_io_errors; 492f51375cdSDavid Howells afs_file_errors; 493d4696601SDavid Howells afs_flock_types; 494d4696601SDavid Howells afs_flock_operations; 495051d2525SDavid Howells afs_cb_break_reasons; 496341f741fSDavid Howells 497341f741fSDavid Howells /* 498341f741fSDavid Howells * Now redefine the EM() and E_() macros to map the enums to the strings that 499341f741fSDavid Howells * will be printed in the output. 500341f741fSDavid Howells */ 501341f741fSDavid Howells #undef EM 502341f741fSDavid Howells #undef E_ 503341f741fSDavid Howells #define EM(a, b) { a, b }, 504341f741fSDavid Howells #define E_(a, b) { a, b } 505341f741fSDavid Howells 50612bdcf33SDavid Howells TRACE_EVENT(afs_receive_data, 50712bdcf33SDavid Howells TP_PROTO(struct afs_call *call, struct iov_iter *iter, 5088e8d7f13SDavid Howells bool want_more, int ret), 5098e8d7f13SDavid Howells 51012bdcf33SDavid Howells TP_ARGS(call, iter, want_more, ret), 5118e8d7f13SDavid Howells 5128e8d7f13SDavid Howells TP_STRUCT__entry( 51312bdcf33SDavid Howells __field(loff_t, remain ) 514a25e21f0SDavid Howells __field(unsigned int, call ) 5158e8d7f13SDavid Howells __field(enum afs_call_state, state ) 5168e8d7f13SDavid Howells __field(unsigned short, unmarshall ) 5178e8d7f13SDavid Howells __field(bool, want_more ) 5188e8d7f13SDavid Howells __field(int, ret ) 5198e8d7f13SDavid Howells ), 5208e8d7f13SDavid Howells 5218e8d7f13SDavid Howells TP_fast_assign( 522a25e21f0SDavid Howells __entry->call = call->debug_id; 5238e8d7f13SDavid Howells __entry->state = call->state; 5248e8d7f13SDavid Howells __entry->unmarshall = call->unmarshall; 52512bdcf33SDavid Howells __entry->remain = iov_iter_count(iter); 5268e8d7f13SDavid Howells __entry->want_more = want_more; 5278e8d7f13SDavid Howells __entry->ret = ret; 5288e8d7f13SDavid Howells ), 5298e8d7f13SDavid Howells 53012bdcf33SDavid Howells TP_printk("c=%08x r=%llu u=%u w=%u s=%u ret=%d", 5318e8d7f13SDavid Howells __entry->call, 53212bdcf33SDavid Howells __entry->remain, 53312bdcf33SDavid Howells __entry->unmarshall, 53412bdcf33SDavid Howells __entry->want_more, 53512bdcf33SDavid Howells __entry->state, 53612bdcf33SDavid Howells __entry->ret) 5378e8d7f13SDavid Howells ); 5388e8d7f13SDavid Howells 5398e8d7f13SDavid Howells TRACE_EVENT(afs_notify_call, 5408e8d7f13SDavid Howells TP_PROTO(struct rxrpc_call *rxcall, struct afs_call *call), 5418e8d7f13SDavid Howells 5428e8d7f13SDavid Howells TP_ARGS(rxcall, call), 5438e8d7f13SDavid Howells 5448e8d7f13SDavid Howells TP_STRUCT__entry( 545a25e21f0SDavid Howells __field(unsigned int, call ) 5468e8d7f13SDavid Howells __field(enum afs_call_state, state ) 5478e8d7f13SDavid Howells __field(unsigned short, unmarshall ) 5488e8d7f13SDavid Howells ), 5498e8d7f13SDavid Howells 5508e8d7f13SDavid Howells TP_fast_assign( 551a25e21f0SDavid Howells __entry->call = call->debug_id; 5528e8d7f13SDavid Howells __entry->state = call->state; 5538e8d7f13SDavid Howells __entry->unmarshall = call->unmarshall; 5548e8d7f13SDavid Howells ), 5558e8d7f13SDavid Howells 556a25e21f0SDavid Howells TP_printk("c=%08x s=%u u=%u", 5578e8d7f13SDavid Howells __entry->call, 5588e8d7f13SDavid Howells __entry->state, __entry->unmarshall) 5598e8d7f13SDavid Howells ); 5608e8d7f13SDavid Howells 5618e8d7f13SDavid Howells TRACE_EVENT(afs_cb_call, 5628e8d7f13SDavid Howells TP_PROTO(struct afs_call *call), 5638e8d7f13SDavid Howells 5648e8d7f13SDavid Howells TP_ARGS(call), 5658e8d7f13SDavid Howells 5668e8d7f13SDavid Howells TP_STRUCT__entry( 567a25e21f0SDavid Howells __field(unsigned int, call ) 5688e8d7f13SDavid Howells __field(const char *, name ) 5698e8d7f13SDavid Howells __field(u32, op ) 5708e8d7f13SDavid Howells ), 5718e8d7f13SDavid Howells 5728e8d7f13SDavid Howells TP_fast_assign( 573a25e21f0SDavid Howells __entry->call = call->debug_id; 5748e8d7f13SDavid Howells __entry->name = call->type->name; 5758e8d7f13SDavid Howells __entry->op = call->operation_ID; 5768e8d7f13SDavid Howells ), 5778e8d7f13SDavid Howells 578a25e21f0SDavid Howells TP_printk("c=%08x %s o=%u", 5798e8d7f13SDavid Howells __entry->call, 5808e8d7f13SDavid Howells __entry->name, 5818e8d7f13SDavid Howells __entry->op) 5828e8d7f13SDavid Howells ); 5838e8d7f13SDavid Howells 584341f741fSDavid Howells TRACE_EVENT(afs_call, 585341f741fSDavid Howells TP_PROTO(struct afs_call *call, enum afs_call_trace op, 586341f741fSDavid Howells int usage, int outstanding, const void *where), 587341f741fSDavid Howells 588341f741fSDavid Howells TP_ARGS(call, op, usage, outstanding, where), 589341f741fSDavid Howells 590341f741fSDavid Howells TP_STRUCT__entry( 591a25e21f0SDavid Howells __field(unsigned int, call ) 592341f741fSDavid Howells __field(int, op ) 593341f741fSDavid Howells __field(int, usage ) 594341f741fSDavid Howells __field(int, outstanding ) 595341f741fSDavid Howells __field(const void *, where ) 596341f741fSDavid Howells ), 597341f741fSDavid Howells 598341f741fSDavid Howells TP_fast_assign( 599a25e21f0SDavid Howells __entry->call = call->debug_id; 600341f741fSDavid Howells __entry->op = op; 601341f741fSDavid Howells __entry->usage = usage; 602341f741fSDavid Howells __entry->outstanding = outstanding; 603341f741fSDavid Howells __entry->where = where; 604341f741fSDavid Howells ), 605341f741fSDavid Howells 606a25e21f0SDavid Howells TP_printk("c=%08x %s u=%d o=%d sp=%pSR", 607341f741fSDavid Howells __entry->call, 608341f741fSDavid Howells __print_symbolic(__entry->op, afs_call_traces), 609341f741fSDavid Howells __entry->usage, 610341f741fSDavid Howells __entry->outstanding, 611341f741fSDavid Howells __entry->where) 612341f741fSDavid Howells ); 613341f741fSDavid Howells 614025db80cSDavid Howells TRACE_EVENT(afs_make_fs_call, 615025db80cSDavid Howells TP_PROTO(struct afs_call *call, const struct afs_fid *fid), 616025db80cSDavid Howells 617025db80cSDavid Howells TP_ARGS(call, fid), 618025db80cSDavid Howells 619025db80cSDavid Howells TP_STRUCT__entry( 620a25e21f0SDavid Howells __field(unsigned int, call ) 621025db80cSDavid Howells __field(enum afs_fs_operation, op ) 622025db80cSDavid Howells __field_struct(struct afs_fid, fid ) 623025db80cSDavid Howells ), 624025db80cSDavid Howells 625025db80cSDavid Howells TP_fast_assign( 626a25e21f0SDavid Howells __entry->call = call->debug_id; 627025db80cSDavid Howells __entry->op = call->operation_ID; 628025db80cSDavid Howells if (fid) { 629025db80cSDavid Howells __entry->fid = *fid; 630025db80cSDavid Howells } else { 631025db80cSDavid Howells __entry->fid.vid = 0; 632025db80cSDavid Howells __entry->fid.vnode = 0; 633025db80cSDavid Howells __entry->fid.unique = 0; 634025db80cSDavid Howells } 635025db80cSDavid Howells ), 636025db80cSDavid Howells 6373b6492dfSDavid Howells TP_printk("c=%08x %06llx:%06llx:%06x %s", 638025db80cSDavid Howells __entry->call, 639025db80cSDavid Howells __entry->fid.vid, 640025db80cSDavid Howells __entry->fid.vnode, 641025db80cSDavid Howells __entry->fid.unique, 642025db80cSDavid Howells __print_symbolic(__entry->op, afs_fs_operations)) 643025db80cSDavid Howells ); 644025db80cSDavid Howells 6456c6c1d63SDavid Howells TRACE_EVENT(afs_make_fs_calli, 6466c6c1d63SDavid Howells TP_PROTO(struct afs_call *call, const struct afs_fid *fid, 6476c6c1d63SDavid Howells unsigned int i), 6486c6c1d63SDavid Howells 6496c6c1d63SDavid Howells TP_ARGS(call, fid, i), 6506c6c1d63SDavid Howells 6516c6c1d63SDavid Howells TP_STRUCT__entry( 6526c6c1d63SDavid Howells __field(unsigned int, call ) 6536c6c1d63SDavid Howells __field(unsigned int, i ) 6546c6c1d63SDavid Howells __field(enum afs_fs_operation, op ) 6556c6c1d63SDavid Howells __field_struct(struct afs_fid, fid ) 6566c6c1d63SDavid Howells ), 6576c6c1d63SDavid Howells 6586c6c1d63SDavid Howells TP_fast_assign( 6596c6c1d63SDavid Howells __entry->call = call->debug_id; 6606c6c1d63SDavid Howells __entry->i = i; 6616c6c1d63SDavid Howells __entry->op = call->operation_ID; 6626c6c1d63SDavid Howells if (fid) { 6636c6c1d63SDavid Howells __entry->fid = *fid; 6646c6c1d63SDavid Howells } else { 6656c6c1d63SDavid Howells __entry->fid.vid = 0; 6666c6c1d63SDavid Howells __entry->fid.vnode = 0; 6676c6c1d63SDavid Howells __entry->fid.unique = 0; 6686c6c1d63SDavid Howells } 6696c6c1d63SDavid Howells ), 6706c6c1d63SDavid Howells 6716c6c1d63SDavid Howells TP_printk("c=%08x %06llx:%06llx:%06x %s i=%u", 6726c6c1d63SDavid Howells __entry->call, 6736c6c1d63SDavid Howells __entry->fid.vid, 6746c6c1d63SDavid Howells __entry->fid.vnode, 6756c6c1d63SDavid Howells __entry->fid.unique, 6766c6c1d63SDavid Howells __print_symbolic(__entry->op, afs_fs_operations), 6776c6c1d63SDavid Howells __entry->i) 6786c6c1d63SDavid Howells ); 6796c6c1d63SDavid Howells 68080548b03SDavid Howells TRACE_EVENT(afs_make_fs_call1, 68180548b03SDavid Howells TP_PROTO(struct afs_call *call, const struct afs_fid *fid, 682e49c7b2fSDavid Howells const struct qstr *name), 68380548b03SDavid Howells 68480548b03SDavid Howells TP_ARGS(call, fid, name), 68580548b03SDavid Howells 68680548b03SDavid Howells TP_STRUCT__entry( 68780548b03SDavid Howells __field(unsigned int, call ) 68880548b03SDavid Howells __field(enum afs_fs_operation, op ) 68980548b03SDavid Howells __field_struct(struct afs_fid, fid ) 69080548b03SDavid Howells __array(char, name, 24 ) 69180548b03SDavid Howells ), 69280548b03SDavid Howells 69380548b03SDavid Howells TP_fast_assign( 694e49c7b2fSDavid Howells unsigned int __len = min_t(unsigned int, name->len, 23); 69580548b03SDavid Howells __entry->call = call->debug_id; 69680548b03SDavid Howells __entry->op = call->operation_ID; 69780548b03SDavid Howells if (fid) { 69880548b03SDavid Howells __entry->fid = *fid; 69980548b03SDavid Howells } else { 70080548b03SDavid Howells __entry->fid.vid = 0; 70180548b03SDavid Howells __entry->fid.vnode = 0; 70280548b03SDavid Howells __entry->fid.unique = 0; 70380548b03SDavid Howells } 704e49c7b2fSDavid Howells memcpy(__entry->name, name->name, __len); 70580548b03SDavid Howells __entry->name[__len] = 0; 70680548b03SDavid Howells ), 70780548b03SDavid Howells 70880548b03SDavid Howells TP_printk("c=%08x %06llx:%06llx:%06x %s \"%s\"", 70980548b03SDavid Howells __entry->call, 71080548b03SDavid Howells __entry->fid.vid, 71180548b03SDavid Howells __entry->fid.vnode, 71280548b03SDavid Howells __entry->fid.unique, 71380548b03SDavid Howells __print_symbolic(__entry->op, afs_fs_operations), 71480548b03SDavid Howells __entry->name) 71580548b03SDavid Howells ); 71680548b03SDavid Howells 71780548b03SDavid Howells TRACE_EVENT(afs_make_fs_call2, 71880548b03SDavid Howells TP_PROTO(struct afs_call *call, const struct afs_fid *fid, 719e49c7b2fSDavid Howells const struct qstr *name, const struct qstr *name2), 72080548b03SDavid Howells 72180548b03SDavid Howells TP_ARGS(call, fid, name, name2), 72280548b03SDavid Howells 72380548b03SDavid Howells TP_STRUCT__entry( 72480548b03SDavid Howells __field(unsigned int, call ) 72580548b03SDavid Howells __field(enum afs_fs_operation, op ) 72680548b03SDavid Howells __field_struct(struct afs_fid, fid ) 72780548b03SDavid Howells __array(char, name, 24 ) 72880548b03SDavid Howells __array(char, name2, 24 ) 72980548b03SDavid Howells ), 73080548b03SDavid Howells 73180548b03SDavid Howells TP_fast_assign( 732e49c7b2fSDavid Howells unsigned int __len = min_t(unsigned int, name->len, 23); 733e49c7b2fSDavid Howells unsigned int __len2 = min_t(unsigned int, name2->len, 23); 73480548b03SDavid Howells __entry->call = call->debug_id; 73580548b03SDavid Howells __entry->op = call->operation_ID; 73680548b03SDavid Howells if (fid) { 73780548b03SDavid Howells __entry->fid = *fid; 73880548b03SDavid Howells } else { 73980548b03SDavid Howells __entry->fid.vid = 0; 74080548b03SDavid Howells __entry->fid.vnode = 0; 74180548b03SDavid Howells __entry->fid.unique = 0; 74280548b03SDavid Howells } 743e49c7b2fSDavid Howells memcpy(__entry->name, name->name, __len); 74480548b03SDavid Howells __entry->name[__len] = 0; 745e49c7b2fSDavid Howells memcpy(__entry->name2, name2->name, __len2); 74680548b03SDavid Howells __entry->name2[__len2] = 0; 74780548b03SDavid Howells ), 74880548b03SDavid Howells 74980548b03SDavid Howells TP_printk("c=%08x %06llx:%06llx:%06x %s \"%s\" \"%s\"", 75080548b03SDavid Howells __entry->call, 75180548b03SDavid Howells __entry->fid.vid, 75280548b03SDavid Howells __entry->fid.vnode, 75380548b03SDavid Howells __entry->fid.unique, 75480548b03SDavid Howells __print_symbolic(__entry->op, afs_fs_operations), 75580548b03SDavid Howells __entry->name, 75680548b03SDavid Howells __entry->name2) 75780548b03SDavid Howells ); 75880548b03SDavid Howells 759025db80cSDavid Howells TRACE_EVENT(afs_make_vl_call, 760025db80cSDavid Howells TP_PROTO(struct afs_call *call), 761025db80cSDavid Howells 762025db80cSDavid Howells TP_ARGS(call), 763025db80cSDavid Howells 764025db80cSDavid Howells TP_STRUCT__entry( 765a25e21f0SDavid Howells __field(unsigned int, call ) 766025db80cSDavid Howells __field(enum afs_vl_operation, op ) 767025db80cSDavid Howells ), 768025db80cSDavid Howells 769025db80cSDavid Howells TP_fast_assign( 770a25e21f0SDavid Howells __entry->call = call->debug_id; 771025db80cSDavid Howells __entry->op = call->operation_ID; 772025db80cSDavid Howells ), 773025db80cSDavid Howells 774a25e21f0SDavid Howells TP_printk("c=%08x %s", 775025db80cSDavid Howells __entry->call, 776025db80cSDavid Howells __print_symbolic(__entry->op, afs_vl_operations)) 777025db80cSDavid Howells ); 778025db80cSDavid Howells 779025db80cSDavid Howells TRACE_EVENT(afs_call_done, 780025db80cSDavid Howells TP_PROTO(struct afs_call *call), 781025db80cSDavid Howells 782025db80cSDavid Howells TP_ARGS(call), 783025db80cSDavid Howells 784025db80cSDavid Howells TP_STRUCT__entry( 785a25e21f0SDavid Howells __field(unsigned int, call ) 786025db80cSDavid Howells __field(struct rxrpc_call *, rx_call ) 787025db80cSDavid Howells __field(int, ret ) 788025db80cSDavid Howells __field(u32, abort_code ) 789025db80cSDavid Howells ), 790025db80cSDavid Howells 791025db80cSDavid Howells TP_fast_assign( 792a25e21f0SDavid Howells __entry->call = call->debug_id; 793025db80cSDavid Howells __entry->rx_call = call->rxcall; 794025db80cSDavid Howells __entry->ret = call->error; 795025db80cSDavid Howells __entry->abort_code = call->abort_code; 796025db80cSDavid Howells ), 797025db80cSDavid Howells 798a25e21f0SDavid Howells TP_printk(" c=%08x ret=%d ab=%d [%p]", 799025db80cSDavid Howells __entry->call, 800025db80cSDavid Howells __entry->ret, 801025db80cSDavid Howells __entry->abort_code, 802025db80cSDavid Howells __entry->rx_call) 803025db80cSDavid Howells ); 804025db80cSDavid Howells 8052c099014SDavid Howells TRACE_EVENT(afs_send_pages, 8062c099014SDavid Howells TP_PROTO(struct afs_call *call, struct msghdr *msg, 8072c099014SDavid Howells pgoff_t first, pgoff_t last, unsigned int offset), 8082c099014SDavid Howells 8092c099014SDavid Howells TP_ARGS(call, msg, first, last, offset), 8102c099014SDavid Howells 8112c099014SDavid Howells TP_STRUCT__entry( 812a25e21f0SDavid Howells __field(unsigned int, call ) 8132c099014SDavid Howells __field(pgoff_t, first ) 8142c099014SDavid Howells __field(pgoff_t, last ) 8152c099014SDavid Howells __field(unsigned int, nr ) 8162c099014SDavid Howells __field(unsigned int, bytes ) 8172c099014SDavid Howells __field(unsigned int, offset ) 8182c099014SDavid Howells __field(unsigned int, flags ) 8192c099014SDavid Howells ), 8202c099014SDavid Howells 8212c099014SDavid Howells TP_fast_assign( 822a25e21f0SDavid Howells __entry->call = call->debug_id; 8232c099014SDavid Howells __entry->first = first; 8242c099014SDavid Howells __entry->last = last; 8252c099014SDavid Howells __entry->nr = msg->msg_iter.nr_segs; 8262c099014SDavid Howells __entry->bytes = msg->msg_iter.count; 8272c099014SDavid Howells __entry->offset = offset; 8282c099014SDavid Howells __entry->flags = msg->msg_flags; 8292c099014SDavid Howells ), 8302c099014SDavid Howells 831a25e21f0SDavid Howells TP_printk(" c=%08x %lx-%lx-%lx b=%x o=%x f=%x", 8322c099014SDavid Howells __entry->call, 8332c099014SDavid Howells __entry->first, __entry->first + __entry->nr - 1, __entry->last, 8342c099014SDavid Howells __entry->bytes, __entry->offset, 8352c099014SDavid Howells __entry->flags) 8362c099014SDavid Howells ); 8372c099014SDavid Howells 8382c099014SDavid Howells TRACE_EVENT(afs_sent_pages, 8392c099014SDavid Howells TP_PROTO(struct afs_call *call, pgoff_t first, pgoff_t last, 8402c099014SDavid Howells pgoff_t cursor, int ret), 8412c099014SDavid Howells 8422c099014SDavid Howells TP_ARGS(call, first, last, cursor, ret), 8432c099014SDavid Howells 8442c099014SDavid Howells TP_STRUCT__entry( 845a25e21f0SDavid Howells __field(unsigned int, call ) 8462c099014SDavid Howells __field(pgoff_t, first ) 8472c099014SDavid Howells __field(pgoff_t, last ) 8482c099014SDavid Howells __field(pgoff_t, cursor ) 8492c099014SDavid Howells __field(int, ret ) 8502c099014SDavid Howells ), 8512c099014SDavid Howells 8522c099014SDavid Howells TP_fast_assign( 853a25e21f0SDavid Howells __entry->call = call->debug_id; 8542c099014SDavid Howells __entry->first = first; 8552c099014SDavid Howells __entry->last = last; 8562c099014SDavid Howells __entry->cursor = cursor; 8572c099014SDavid Howells __entry->ret = ret; 8582c099014SDavid Howells ), 8592c099014SDavid Howells 860a25e21f0SDavid Howells TP_printk(" c=%08x %lx-%lx c=%lx r=%d", 8612c099014SDavid Howells __entry->call, 8622c099014SDavid Howells __entry->first, __entry->last, 8632c099014SDavid Howells __entry->cursor, __entry->ret) 8642c099014SDavid Howells ); 8652c099014SDavid Howells 866dab17c1aSDavid Howells TRACE_EVENT(afs_dir_check_failed, 867dab17c1aSDavid Howells TP_PROTO(struct afs_vnode *vnode, loff_t off, loff_t i_size), 868dab17c1aSDavid Howells 869dab17c1aSDavid Howells TP_ARGS(vnode, off, i_size), 870dab17c1aSDavid Howells 871dab17c1aSDavid Howells TP_STRUCT__entry( 872dab17c1aSDavid Howells __field(struct afs_vnode *, vnode ) 873dab17c1aSDavid Howells __field(loff_t, off ) 874dab17c1aSDavid Howells __field(loff_t, i_size ) 875dab17c1aSDavid Howells ), 876dab17c1aSDavid Howells 877dab17c1aSDavid Howells TP_fast_assign( 878dab17c1aSDavid Howells __entry->vnode = vnode; 879dab17c1aSDavid Howells __entry->off = off; 880dab17c1aSDavid Howells __entry->i_size = i_size; 881dab17c1aSDavid Howells ), 882dab17c1aSDavid Howells 883dab17c1aSDavid Howells TP_printk("vn=%p %llx/%llx", 884dab17c1aSDavid Howells __entry->vnode, __entry->off, __entry->i_size) 885dab17c1aSDavid Howells ); 886dab17c1aSDavid Howells 88713524ab3SDavid Howells /* 88813524ab3SDavid Howells * We use page->private to hold the amount of the page that we've written to, 88913524ab3SDavid Howells * splitting the field into two parts. However, we need to represent a range 89013524ab3SDavid Howells * 0...PAGE_SIZE inclusive, so we can't support 64K pages on a 32-bit system. 89113524ab3SDavid Howells */ 89213524ab3SDavid Howells #if PAGE_SIZE > 32768 89313524ab3SDavid Howells #define AFS_PRIV_MAX 0xffffffff 89413524ab3SDavid Howells #define AFS_PRIV_SHIFT 32 89513524ab3SDavid Howells #else 89613524ab3SDavid Howells #define AFS_PRIV_MAX 0xffff 89713524ab3SDavid Howells #define AFS_PRIV_SHIFT 16 89813524ab3SDavid Howells #endif 89913524ab3SDavid Howells 90013524ab3SDavid Howells TRACE_EVENT(afs_page_dirty, 90113524ab3SDavid Howells TP_PROTO(struct afs_vnode *vnode, const char *where, 90213524ab3SDavid Howells pgoff_t page, unsigned long priv), 90313524ab3SDavid Howells 90413524ab3SDavid Howells TP_ARGS(vnode, where, page, priv), 90513524ab3SDavid Howells 90613524ab3SDavid Howells TP_STRUCT__entry( 90713524ab3SDavid Howells __field(struct afs_vnode *, vnode ) 90813524ab3SDavid Howells __field(const char *, where ) 90913524ab3SDavid Howells __field(pgoff_t, page ) 91013524ab3SDavid Howells __field(unsigned long, priv ) 91113524ab3SDavid Howells ), 91213524ab3SDavid Howells 91313524ab3SDavid Howells TP_fast_assign( 91413524ab3SDavid Howells __entry->vnode = vnode; 91513524ab3SDavid Howells __entry->where = where; 91613524ab3SDavid Howells __entry->page = page; 91713524ab3SDavid Howells __entry->priv = priv; 91813524ab3SDavid Howells ), 91913524ab3SDavid Howells 92013524ab3SDavid Howells TP_printk("vn=%p %lx %s %lu-%lu", 92113524ab3SDavid Howells __entry->vnode, __entry->page, __entry->where, 92213524ab3SDavid Howells __entry->priv & AFS_PRIV_MAX, 92313524ab3SDavid Howells __entry->priv >> AFS_PRIV_SHIFT) 92413524ab3SDavid Howells ); 92513524ab3SDavid Howells 92698bf40cdSDavid Howells TRACE_EVENT(afs_call_state, 92798bf40cdSDavid Howells TP_PROTO(struct afs_call *call, 92898bf40cdSDavid Howells enum afs_call_state from, 92998bf40cdSDavid Howells enum afs_call_state to, 93098bf40cdSDavid Howells int ret, u32 remote_abort), 93198bf40cdSDavid Howells 93298bf40cdSDavid Howells TP_ARGS(call, from, to, ret, remote_abort), 93398bf40cdSDavid Howells 93498bf40cdSDavid Howells TP_STRUCT__entry( 935a25e21f0SDavid Howells __field(unsigned int, call ) 93698bf40cdSDavid Howells __field(enum afs_call_state, from ) 93798bf40cdSDavid Howells __field(enum afs_call_state, to ) 93898bf40cdSDavid Howells __field(int, ret ) 93998bf40cdSDavid Howells __field(u32, abort ) 94098bf40cdSDavid Howells ), 94198bf40cdSDavid Howells 94298bf40cdSDavid Howells TP_fast_assign( 943a25e21f0SDavid Howells __entry->call = call->debug_id; 94498bf40cdSDavid Howells __entry->from = from; 94598bf40cdSDavid Howells __entry->to = to; 94698bf40cdSDavid Howells __entry->ret = ret; 94798bf40cdSDavid Howells __entry->abort = remote_abort; 94898bf40cdSDavid Howells ), 94998bf40cdSDavid Howells 950a25e21f0SDavid Howells TP_printk("c=%08x %u->%u r=%d ab=%d", 95198bf40cdSDavid Howells __entry->call, 95298bf40cdSDavid Howells __entry->from, __entry->to, 95398bf40cdSDavid Howells __entry->ret, __entry->abort) 95498bf40cdSDavid Howells ); 95598bf40cdSDavid Howells 95680548b03SDavid Howells TRACE_EVENT(afs_lookup, 95780548b03SDavid Howells TP_PROTO(struct afs_vnode *dvnode, const struct qstr *name, 95840a708bdSDavid Howells struct afs_fid *fid), 95980548b03SDavid Howells 96040a708bdSDavid Howells TP_ARGS(dvnode, name, fid), 96180548b03SDavid Howells 96280548b03SDavid Howells TP_STRUCT__entry( 96380548b03SDavid Howells __field_struct(struct afs_fid, dfid ) 96480548b03SDavid Howells __field_struct(struct afs_fid, fid ) 96580548b03SDavid Howells __array(char, name, 24 ) 96680548b03SDavid Howells ), 96780548b03SDavid Howells 96880548b03SDavid Howells TP_fast_assign( 96980548b03SDavid Howells int __len = min_t(int, name->len, 23); 97080548b03SDavid Howells __entry->dfid = dvnode->fid; 97140a708bdSDavid Howells __entry->fid = *fid; 97280548b03SDavid Howells memcpy(__entry->name, name->name, __len); 97380548b03SDavid Howells __entry->name[__len] = 0; 97480548b03SDavid Howells ), 97580548b03SDavid Howells 97680548b03SDavid Howells TP_printk("d=%llx:%llx:%x \"%s\" f=%llx:%x", 97780548b03SDavid Howells __entry->dfid.vid, __entry->dfid.vnode, __entry->dfid.unique, 97880548b03SDavid Howells __entry->name, 97980548b03SDavid Howells __entry->fid.vnode, __entry->fid.unique) 98080548b03SDavid Howells ); 98180548b03SDavid Howells 98263a4681fSDavid Howells TRACE_EVENT(afs_edit_dir, 98363a4681fSDavid Howells TP_PROTO(struct afs_vnode *dvnode, 98463a4681fSDavid Howells enum afs_edit_dir_reason why, 98563a4681fSDavid Howells enum afs_edit_dir_op op, 98663a4681fSDavid Howells unsigned int block, 98763a4681fSDavid Howells unsigned int slot, 98863a4681fSDavid Howells unsigned int f_vnode, 98963a4681fSDavid Howells unsigned int f_unique, 99063a4681fSDavid Howells const char *name), 99163a4681fSDavid Howells 99263a4681fSDavid Howells TP_ARGS(dvnode, why, op, block, slot, f_vnode, f_unique, name), 99363a4681fSDavid Howells 99463a4681fSDavid Howells TP_STRUCT__entry( 99563a4681fSDavid Howells __field(unsigned int, vnode ) 99663a4681fSDavid Howells __field(unsigned int, unique ) 99763a4681fSDavid Howells __field(enum afs_edit_dir_reason, why ) 99863a4681fSDavid Howells __field(enum afs_edit_dir_op, op ) 99963a4681fSDavid Howells __field(unsigned int, block ) 100063a4681fSDavid Howells __field(unsigned short, slot ) 100163a4681fSDavid Howells __field(unsigned int, f_vnode ) 100263a4681fSDavid Howells __field(unsigned int, f_unique ) 100380548b03SDavid Howells __array(char, name, 24 ) 100463a4681fSDavid Howells ), 100563a4681fSDavid Howells 100663a4681fSDavid Howells TP_fast_assign( 100763a4681fSDavid Howells int __len = strlen(name); 100880548b03SDavid Howells __len = min(__len, 23); 100963a4681fSDavid Howells __entry->vnode = dvnode->fid.vnode; 101063a4681fSDavid Howells __entry->unique = dvnode->fid.unique; 101163a4681fSDavid Howells __entry->why = why; 101263a4681fSDavid Howells __entry->op = op; 101363a4681fSDavid Howells __entry->block = block; 101463a4681fSDavid Howells __entry->slot = slot; 101563a4681fSDavid Howells __entry->f_vnode = f_vnode; 101663a4681fSDavid Howells __entry->f_unique = f_unique; 101763a4681fSDavid Howells memcpy(__entry->name, name, __len); 101863a4681fSDavid Howells __entry->name[__len] = 0; 101963a4681fSDavid Howells ), 102063a4681fSDavid Howells 102180548b03SDavid Howells TP_printk("d=%x:%x %s %s %u[%u] f=%x:%x \"%s\"", 102263a4681fSDavid Howells __entry->vnode, __entry->unique, 102363a4681fSDavid Howells __print_symbolic(__entry->why, afs_edit_dir_reasons), 102463a4681fSDavid Howells __print_symbolic(__entry->op, afs_edit_dir_ops), 102563a4681fSDavid Howells __entry->block, __entry->slot, 102663a4681fSDavid Howells __entry->f_vnode, __entry->f_unique, 102763a4681fSDavid Howells __entry->name) 102863a4681fSDavid Howells ); 102963a4681fSDavid Howells 10305f702c8eSDavid Howells TRACE_EVENT(afs_protocol_error, 10317126ead9SDavid Howells TP_PROTO(struct afs_call *call, enum afs_eproto_cause cause), 10325f702c8eSDavid Howells 10337126ead9SDavid Howells TP_ARGS(call, cause), 10345f702c8eSDavid Howells 10355f702c8eSDavid Howells TP_STRUCT__entry( 10365f702c8eSDavid Howells __field(unsigned int, call ) 1037160cb957SDavid Howells __field(enum afs_eproto_cause, cause ) 10385f702c8eSDavid Howells ), 10395f702c8eSDavid Howells 10405f702c8eSDavid Howells TP_fast_assign( 10415f702c8eSDavid Howells __entry->call = call ? call->debug_id : 0; 1042160cb957SDavid Howells __entry->cause = cause; 10435f702c8eSDavid Howells ), 10445f702c8eSDavid Howells 10457126ead9SDavid Howells TP_printk("c=%08x %s", 10467126ead9SDavid Howells __entry->call, 1047160cb957SDavid Howells __print_symbolic(__entry->cause, afs_eproto_causes)) 10485f702c8eSDavid Howells ); 10495f702c8eSDavid Howells 1050f51375cdSDavid Howells TRACE_EVENT(afs_io_error, 1051f51375cdSDavid Howells TP_PROTO(unsigned int call, int error, enum afs_io_error where), 1052f51375cdSDavid Howells 1053f51375cdSDavid Howells TP_ARGS(call, error, where), 1054f51375cdSDavid Howells 1055f51375cdSDavid Howells TP_STRUCT__entry( 1056f51375cdSDavid Howells __field(unsigned int, call ) 1057f51375cdSDavid Howells __field(int, error ) 1058f51375cdSDavid Howells __field(enum afs_io_error, where ) 1059f51375cdSDavid Howells ), 1060f51375cdSDavid Howells 1061f51375cdSDavid Howells TP_fast_assign( 1062f51375cdSDavid Howells __entry->call = call; 1063f51375cdSDavid Howells __entry->error = error; 1064f51375cdSDavid Howells __entry->where = where; 1065f51375cdSDavid Howells ), 1066f51375cdSDavid Howells 1067f51375cdSDavid Howells TP_printk("c=%08x r=%d %s", 1068f51375cdSDavid Howells __entry->call, __entry->error, 1069f51375cdSDavid Howells __print_symbolic(__entry->where, afs_io_errors)) 1070f51375cdSDavid Howells ); 1071f51375cdSDavid Howells 1072f51375cdSDavid Howells TRACE_EVENT(afs_file_error, 1073f51375cdSDavid Howells TP_PROTO(struct afs_vnode *vnode, int error, enum afs_file_error where), 1074f51375cdSDavid Howells 1075f51375cdSDavid Howells TP_ARGS(vnode, error, where), 1076f51375cdSDavid Howells 1077f51375cdSDavid Howells TP_STRUCT__entry( 1078f51375cdSDavid Howells __field_struct(struct afs_fid, fid ) 1079f51375cdSDavid Howells __field(int, error ) 1080f51375cdSDavid Howells __field(enum afs_file_error, where ) 1081f51375cdSDavid Howells ), 1082f51375cdSDavid Howells 1083f51375cdSDavid Howells TP_fast_assign( 1084f51375cdSDavid Howells __entry->fid = vnode->fid; 1085f51375cdSDavid Howells __entry->error = error; 1086f51375cdSDavid Howells __entry->where = where; 1087f51375cdSDavid Howells ), 1088f51375cdSDavid Howells 10893b6492dfSDavid Howells TP_printk("%llx:%llx:%x r=%d %s", 1090f51375cdSDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 1091f51375cdSDavid Howells __entry->error, 1092f51375cdSDavid Howells __print_symbolic(__entry->where, afs_file_errors)) 1093f51375cdSDavid Howells ); 1094f51375cdSDavid Howells 10953709a399SDavid Howells TRACE_EVENT(afs_cm_no_server, 10963709a399SDavid Howells TP_PROTO(struct afs_call *call, struct sockaddr_rxrpc *srx), 10973709a399SDavid Howells 10983709a399SDavid Howells TP_ARGS(call, srx), 10993709a399SDavid Howells 11003709a399SDavid Howells TP_STRUCT__entry( 11013709a399SDavid Howells __field(unsigned int, call ) 11023709a399SDavid Howells __field(unsigned int, op_id ) 11033709a399SDavid Howells __field_struct(struct sockaddr_rxrpc, srx ) 11043709a399SDavid Howells ), 11053709a399SDavid Howells 11063709a399SDavid Howells TP_fast_assign( 11073709a399SDavid Howells __entry->call = call->debug_id; 11083709a399SDavid Howells __entry->op_id = call->operation_ID; 11093709a399SDavid Howells memcpy(&__entry->srx, srx, sizeof(__entry->srx)); 11103709a399SDavid Howells ), 11113709a399SDavid Howells 11123709a399SDavid Howells TP_printk("c=%08x op=%u %pISpc", 11133709a399SDavid Howells __entry->call, __entry->op_id, &__entry->srx.transport) 11143709a399SDavid Howells ); 11153709a399SDavid Howells 11163709a399SDavid Howells TRACE_EVENT(afs_cm_no_server_u, 11173709a399SDavid Howells TP_PROTO(struct afs_call *call, const uuid_t *uuid), 11183709a399SDavid Howells 11193709a399SDavid Howells TP_ARGS(call, uuid), 11203709a399SDavid Howells 11213709a399SDavid Howells TP_STRUCT__entry( 11223709a399SDavid Howells __field(unsigned int, call ) 11233709a399SDavid Howells __field(unsigned int, op_id ) 11243709a399SDavid Howells __field_struct(uuid_t, uuid ) 11253709a399SDavid Howells ), 11263709a399SDavid Howells 11273709a399SDavid Howells TP_fast_assign( 11283709a399SDavid Howells __entry->call = call->debug_id; 11293709a399SDavid Howells __entry->op_id = call->operation_ID; 11303709a399SDavid Howells memcpy(&__entry->uuid, uuid, sizeof(__entry->uuid)); 11313709a399SDavid Howells ), 11323709a399SDavid Howells 11333709a399SDavid Howells TP_printk("c=%08x op=%u %pU", 11343709a399SDavid Howells __entry->call, __entry->op_id, &__entry->uuid) 11353709a399SDavid Howells ); 11363709a399SDavid Howells 1137d4696601SDavid Howells TRACE_EVENT(afs_flock_ev, 1138d4696601SDavid Howells TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl, 1139d4696601SDavid Howells enum afs_flock_event event, int error), 1140d4696601SDavid Howells 1141d4696601SDavid Howells TP_ARGS(vnode, fl, event, error), 1142d4696601SDavid Howells 1143d4696601SDavid Howells TP_STRUCT__entry( 1144d4696601SDavid Howells __field_struct(struct afs_fid, fid ) 1145d4696601SDavid Howells __field(enum afs_flock_event, event ) 1146d4696601SDavid Howells __field(enum afs_lock_state, state ) 1147d4696601SDavid Howells __field(int, error ) 1148d4696601SDavid Howells __field(unsigned int, debug_id ) 1149d4696601SDavid Howells ), 1150d4696601SDavid Howells 1151d4696601SDavid Howells TP_fast_assign( 1152d4696601SDavid Howells __entry->fid = vnode->fid; 1153d4696601SDavid Howells __entry->event = event; 1154d4696601SDavid Howells __entry->state = vnode->lock_state; 1155d4696601SDavid Howells __entry->error = error; 1156d4696601SDavid Howells __entry->debug_id = fl ? fl->fl_u.afs.debug_id : 0; 1157d4696601SDavid Howells ), 1158d4696601SDavid Howells 1159d4696601SDavid Howells TP_printk("%llx:%llx:%x %04x %s s=%s e=%d", 1160d4696601SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 1161d4696601SDavid Howells __entry->debug_id, 1162d4696601SDavid Howells __print_symbolic(__entry->event, afs_flock_events), 1163d4696601SDavid Howells __print_symbolic(__entry->state, afs_flock_states), 1164d4696601SDavid Howells __entry->error) 1165d4696601SDavid Howells ); 1166d4696601SDavid Howells 1167d4696601SDavid Howells TRACE_EVENT(afs_flock_op, 1168d4696601SDavid Howells TP_PROTO(struct afs_vnode *vnode, struct file_lock *fl, 1169d4696601SDavid Howells enum afs_flock_operation op), 1170d4696601SDavid Howells 1171d4696601SDavid Howells TP_ARGS(vnode, fl, op), 1172d4696601SDavid Howells 1173d4696601SDavid Howells TP_STRUCT__entry( 1174d4696601SDavid Howells __field_struct(struct afs_fid, fid ) 1175d4696601SDavid Howells __field(loff_t, from ) 1176d4696601SDavid Howells __field(loff_t, len ) 1177d4696601SDavid Howells __field(enum afs_flock_operation, op ) 1178d4696601SDavid Howells __field(unsigned char, type ) 1179d4696601SDavid Howells __field(unsigned int, flags ) 1180d4696601SDavid Howells __field(unsigned int, debug_id ) 1181d4696601SDavid Howells ), 1182d4696601SDavid Howells 1183d4696601SDavid Howells TP_fast_assign( 1184d4696601SDavid Howells __entry->fid = vnode->fid; 1185d4696601SDavid Howells __entry->from = fl->fl_start; 1186d4696601SDavid Howells __entry->len = fl->fl_end - fl->fl_start + 1; 1187d4696601SDavid Howells __entry->op = op; 1188d4696601SDavid Howells __entry->type = fl->fl_type; 1189d4696601SDavid Howells __entry->flags = fl->fl_flags; 1190d4696601SDavid Howells __entry->debug_id = fl->fl_u.afs.debug_id; 1191d4696601SDavid Howells ), 1192d4696601SDavid Howells 1193d4696601SDavid Howells TP_printk("%llx:%llx:%x %04x %s t=%s R=%llx/%llx f=%x", 1194d4696601SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 1195d4696601SDavid Howells __entry->debug_id, 1196d4696601SDavid Howells __print_symbolic(__entry->op, afs_flock_operations), 1197d4696601SDavid Howells __print_symbolic(__entry->type, afs_flock_types), 1198d4696601SDavid Howells __entry->from, __entry->len, __entry->flags) 1199d4696601SDavid Howells ); 1200d4696601SDavid Howells 120199987c56SDavid Howells TRACE_EVENT(afs_reload_dir, 120299987c56SDavid Howells TP_PROTO(struct afs_vnode *vnode), 120399987c56SDavid Howells 120499987c56SDavid Howells TP_ARGS(vnode), 120599987c56SDavid Howells 120699987c56SDavid Howells TP_STRUCT__entry( 120799987c56SDavid Howells __field_struct(struct afs_fid, fid ) 120899987c56SDavid Howells ), 120999987c56SDavid Howells 121099987c56SDavid Howells TP_fast_assign( 121199987c56SDavid Howells __entry->fid = vnode->fid; 121299987c56SDavid Howells ), 121399987c56SDavid Howells 121499987c56SDavid Howells TP_printk("%llx:%llx:%x", 121599987c56SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique) 121699987c56SDavid Howells ); 121799987c56SDavid Howells 121879ddbfa5SDavid Howells TRACE_EVENT(afs_silly_rename, 121979ddbfa5SDavid Howells TP_PROTO(struct afs_vnode *vnode, bool done), 122079ddbfa5SDavid Howells 122179ddbfa5SDavid Howells TP_ARGS(vnode, done), 122279ddbfa5SDavid Howells 122379ddbfa5SDavid Howells TP_STRUCT__entry( 122479ddbfa5SDavid Howells __field_struct(struct afs_fid, fid ) 122579ddbfa5SDavid Howells __field(bool, done ) 122679ddbfa5SDavid Howells ), 122779ddbfa5SDavid Howells 122879ddbfa5SDavid Howells TP_fast_assign( 122979ddbfa5SDavid Howells __entry->fid = vnode->fid; 123079ddbfa5SDavid Howells __entry->done = done; 123179ddbfa5SDavid Howells ), 123279ddbfa5SDavid Howells 123379ddbfa5SDavid Howells TP_printk("%llx:%llx:%x done=%u", 123479ddbfa5SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 123579ddbfa5SDavid Howells __entry->done) 123679ddbfa5SDavid Howells ); 123779ddbfa5SDavid Howells 123880548b03SDavid Howells TRACE_EVENT(afs_get_tree, 123980548b03SDavid Howells TP_PROTO(struct afs_cell *cell, struct afs_volume *volume), 124080548b03SDavid Howells 124180548b03SDavid Howells TP_ARGS(cell, volume), 124280548b03SDavid Howells 124380548b03SDavid Howells TP_STRUCT__entry( 124480548b03SDavid Howells __field(u64, vid ) 124580548b03SDavid Howells __array(char, cell, 24 ) 124680548b03SDavid Howells __array(char, volume, 24 ) 124780548b03SDavid Howells ), 124880548b03SDavid Howells 124980548b03SDavid Howells TP_fast_assign( 125080548b03SDavid Howells int __len; 125180548b03SDavid Howells __entry->vid = volume->vid; 125280548b03SDavid Howells __len = min_t(int, cell->name_len, 23); 125380548b03SDavid Howells memcpy(__entry->cell, cell->name, __len); 125480548b03SDavid Howells __entry->cell[__len] = 0; 125580548b03SDavid Howells __len = min_t(int, volume->name_len, 23); 125680548b03SDavid Howells memcpy(__entry->volume, volume->name, __len); 125780548b03SDavid Howells __entry->volume[__len] = 0; 125880548b03SDavid Howells ), 125980548b03SDavid Howells 126080548b03SDavid Howells TP_printk("--- MOUNT %s:%s %llx", 126180548b03SDavid Howells __entry->cell, __entry->volume, __entry->vid) 126280548b03SDavid Howells ); 126380548b03SDavid Howells 1264051d2525SDavid Howells TRACE_EVENT(afs_cb_break, 1265051d2525SDavid Howells TP_PROTO(struct afs_fid *fid, unsigned int cb_break, 1266051d2525SDavid Howells enum afs_cb_break_reason reason, bool skipped), 1267051d2525SDavid Howells 1268051d2525SDavid Howells TP_ARGS(fid, cb_break, reason, skipped), 1269051d2525SDavid Howells 1270051d2525SDavid Howells TP_STRUCT__entry( 1271051d2525SDavid Howells __field_struct(struct afs_fid, fid ) 1272051d2525SDavid Howells __field(unsigned int, cb_break ) 1273051d2525SDavid Howells __field(enum afs_cb_break_reason, reason ) 1274051d2525SDavid Howells __field(bool, skipped ) 1275051d2525SDavid Howells ), 1276051d2525SDavid Howells 1277051d2525SDavid Howells TP_fast_assign( 1278051d2525SDavid Howells __entry->fid = *fid; 1279051d2525SDavid Howells __entry->cb_break = cb_break; 1280051d2525SDavid Howells __entry->reason = reason; 1281051d2525SDavid Howells __entry->skipped = skipped; 1282051d2525SDavid Howells ), 1283051d2525SDavid Howells 1284051d2525SDavid Howells TP_printk("%llx:%llx:%x b=%x s=%u %s", 1285051d2525SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 1286051d2525SDavid Howells __entry->cb_break, 1287051d2525SDavid Howells __entry->skipped, 1288051d2525SDavid Howells __print_symbolic(__entry->reason, afs_cb_break_reasons)) 1289051d2525SDavid Howells ); 1290051d2525SDavid Howells 1291051d2525SDavid Howells TRACE_EVENT(afs_cb_miss, 1292051d2525SDavid Howells TP_PROTO(struct afs_fid *fid, enum afs_cb_break_reason reason), 1293051d2525SDavid Howells 1294051d2525SDavid Howells TP_ARGS(fid, reason), 1295051d2525SDavid Howells 1296051d2525SDavid Howells TP_STRUCT__entry( 1297051d2525SDavid Howells __field_struct(struct afs_fid, fid ) 1298051d2525SDavid Howells __field(enum afs_cb_break_reason, reason ) 1299051d2525SDavid Howells ), 1300051d2525SDavid Howells 1301051d2525SDavid Howells TP_fast_assign( 1302051d2525SDavid Howells __entry->fid = *fid; 1303051d2525SDavid Howells __entry->reason = reason; 1304051d2525SDavid Howells ), 1305051d2525SDavid Howells 1306051d2525SDavid Howells TP_printk(" %llx:%llx:%x %s", 1307051d2525SDavid Howells __entry->fid.vid, __entry->fid.vnode, __entry->fid.unique, 1308051d2525SDavid Howells __print_symbolic(__entry->reason, afs_cb_break_reasons)) 1309051d2525SDavid Howells ); 1310051d2525SDavid Howells 131145218193SDavid Howells TRACE_EVENT(afs_server, 1312977e5f8eSDavid Howells TP_PROTO(struct afs_server *server, int ref, int active, 1313977e5f8eSDavid Howells enum afs_server_trace reason), 131445218193SDavid Howells 1315977e5f8eSDavid Howells TP_ARGS(server, ref, active, reason), 131645218193SDavid Howells 131745218193SDavid Howells TP_STRUCT__entry( 131845218193SDavid Howells __field(unsigned int, server ) 1319977e5f8eSDavid Howells __field(int, ref ) 1320977e5f8eSDavid Howells __field(int, active ) 132145218193SDavid Howells __field(int, reason ) 132245218193SDavid Howells ), 132345218193SDavid Howells 132445218193SDavid Howells TP_fast_assign( 132545218193SDavid Howells __entry->server = server->debug_id; 1326977e5f8eSDavid Howells __entry->ref = ref; 1327977e5f8eSDavid Howells __entry->active = active; 132845218193SDavid Howells __entry->reason = reason; 132945218193SDavid Howells ), 133045218193SDavid Howells 1331977e5f8eSDavid Howells TP_printk("s=%08x %s u=%d a=%d", 133245218193SDavid Howells __entry->server, 133345218193SDavid Howells __print_symbolic(__entry->reason, afs_server_traces), 1334977e5f8eSDavid Howells __entry->ref, 1335977e5f8eSDavid Howells __entry->active) 133645218193SDavid Howells ); 133745218193SDavid Howells 1338*cca37d45SDavid Howells TRACE_EVENT(afs_volume, 1339*cca37d45SDavid Howells TP_PROTO(afs_volid_t vid, int ref, enum afs_volume_trace reason), 1340*cca37d45SDavid Howells 1341*cca37d45SDavid Howells TP_ARGS(vid, ref, reason), 1342*cca37d45SDavid Howells 1343*cca37d45SDavid Howells TP_STRUCT__entry( 1344*cca37d45SDavid Howells __field(afs_volid_t, vid ) 1345*cca37d45SDavid Howells __field(int, ref ) 1346*cca37d45SDavid Howells __field(enum afs_volume_trace, reason ) 1347*cca37d45SDavid Howells ), 1348*cca37d45SDavid Howells 1349*cca37d45SDavid Howells TP_fast_assign( 1350*cca37d45SDavid Howells __entry->vid = vid; 1351*cca37d45SDavid Howells __entry->ref = ref; 1352*cca37d45SDavid Howells __entry->reason = reason; 1353*cca37d45SDavid Howells ), 1354*cca37d45SDavid Howells 1355*cca37d45SDavid Howells TP_printk("V=%llx %s u=%d", 1356*cca37d45SDavid Howells __entry->vid, 1357*cca37d45SDavid Howells __print_symbolic(__entry->reason, afs_volume_traces), 1358*cca37d45SDavid Howells __entry->ref) 1359*cca37d45SDavid Howells ); 1360*cca37d45SDavid Howells 13618e8d7f13SDavid Howells #endif /* _TRACE_AFS_H */ 13628e8d7f13SDavid Howells 13638e8d7f13SDavid Howells /* This part must be outside protection */ 13648e8d7f13SDavid Howells #include <trace/define_trace.h> 1365