2017-01-05 10:38:34 +00:00
/* AFS tracepoints
*
* Copyright ( C ) 2016 Red Hat , Inc . All Rights Reserved .
* Written by David Howells ( dhowells @ redhat . com )
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public Licence
* as published by the Free Software Foundation ; either version
* 2 of the Licence , or ( at your option ) any later version .
*/
# undef TRACE_SYSTEM
# define TRACE_SYSTEM afs
# if !defined(_TRACE_AFS_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_AFS_H
# include <linux/tracepoint.h>
2017-01-05 10:38:36 +00:00
/*
* Define enums for tracing information .
*/
# ifndef __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
# define __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY
enum afs_call_trace {
afs_call_trace_alloc ,
afs_call_trace_free ,
2019-01-10 15:40:50 +00:00
afs_call_trace_get ,
2017-01-05 10:38:36 +00:00
afs_call_trace_put ,
afs_call_trace_wake ,
afs_call_trace_work ,
} ;
2017-11-02 15:27:51 +00:00
enum afs_fs_operation {
afs_FS_FetchData = 130 , /* AFS Fetch file data */
afs_FS_FetchStatus = 132 , /* AFS Fetch file status */
afs_FS_StoreData = 133 , /* AFS Store file data */
afs_FS_StoreStatus = 135 , /* AFS Store file status */
afs_FS_RemoveFile = 136 , /* AFS Remove a file */
afs_FS_CreateFile = 137 , /* AFS Create a file */
afs_FS_Rename = 138 , /* AFS Rename or move a file or directory */
afs_FS_Symlink = 139 , /* AFS Create a symbolic link */
afs_FS_Link = 140 , /* AFS Create a hard link */
afs_FS_MakeDir = 141 , /* AFS Create a directory */
afs_FS_RemoveDir = 142 , /* AFS Remove a directory */
afs_FS_GetVolumeInfo = 148 , /* AFS Get information about a volume */
afs_FS_GetVolumeStatus = 149 , /* AFS Get volume status information */
afs_FS_GetRootVolume = 151 , /* AFS Get root volume name */
afs_FS_SetLock = 156 , /* AFS Request a file lock */
afs_FS_ExtendLock = 157 , /* AFS Extend a file lock */
afs_FS_ReleaseLock = 158 , /* AFS Release a file lock */
afs_FS_Lookup = 161 , /* AFS lookup file in directory */
2018-04-09 21:12:31 +01:00
afs_FS_InlineBulkStatus = 65536 , /* AFS Fetch multiple file statuses with errors */
2017-11-02 15:27:51 +00:00
afs_FS_FetchData64 = 65537 , /* AFS Fetch file data */
afs_FS_StoreData64 = 65538 , /* AFS Store file data */
afs_FS_GiveUpAllCallBacks = 65539 , /* AFS Give up all our callbacks on a server */
afs_FS_GetCapabilities = 65540 , /* AFS Get FS server capabilities */
2018-10-20 00:57:58 +01:00
yfs_FS_FetchData = 130 , /* YFS Fetch file data */
yfs_FS_FetchACL = 64131 , /* YFS Fetch file ACL */
yfs_FS_FetchStatus = 64132 , /* YFS Fetch file status */
yfs_FS_StoreACL = 64134 , /* YFS Store file ACL */
yfs_FS_StoreStatus = 64135 , /* YFS Store file status */
yfs_FS_RemoveFile = 64136 , /* YFS Remove a file */
yfs_FS_CreateFile = 64137 , /* YFS Create a file */
yfs_FS_Rename = 64138 , /* YFS Rename or move a file or directory */
yfs_FS_Symlink = 64139 , /* YFS Create a symbolic link */
yfs_FS_Link = 64140 , /* YFS Create a hard link */
yfs_FS_MakeDir = 64141 , /* YFS Create a directory */
yfs_FS_RemoveDir = 64142 , /* YFS Remove a directory */
yfs_FS_GetVolumeStatus = 64149 , /* YFS Get volume status information */
yfs_FS_SetVolumeStatus = 64150 , /* YFS Set volume status information */
yfs_FS_SetLock = 64156 , /* YFS Request a file lock */
yfs_FS_ExtendLock = 64157 , /* YFS Extend a file lock */
yfs_FS_ReleaseLock = 64158 , /* YFS Release a file lock */
yfs_FS_Lookup = 64161 , /* YFS lookup file in directory */
yfs_FS_FlushCPS = 64165 ,
yfs_FS_FetchOpaqueACL = 64168 ,
yfs_FS_WhoAmI = 64170 ,
yfs_FS_RemoveACL = 64171 ,
yfs_FS_RemoveFile2 = 64173 ,
yfs_FS_StoreOpaqueACL2 = 64174 ,
yfs_FS_InlineBulkStatus = 64536 , /* YFS Fetch multiple file statuses with errors */
yfs_FS_FetchData64 = 64537 , /* YFS Fetch file data */
yfs_FS_StoreData64 = 64538 , /* YFS Store file data */
yfs_FS_UpdateSymlink = 64540 ,
2017-11-02 15:27:51 +00:00
} ;
enum afs_vl_operation {
afs_VL_GetEntryByNameU = 527 , /* AFS Get Vol Entry By Name operation ID */
afs_VL_GetAddrsU = 533 , /* AFS Get FS server addresses */
afs_YFSVL_GetEndpoints = 64002 , /* YFS Get FS & Vol server addresses */
afs_VL_GetCapabilities = 65537 , /* AFS Get VL server capabilities */
} ;
2018-04-06 14:17:25 +01:00
enum afs_edit_dir_op {
afs_edit_dir_create ,
afs_edit_dir_create_error ,
afs_edit_dir_create_inval ,
afs_edit_dir_create_nospc ,
afs_edit_dir_delete ,
afs_edit_dir_delete_error ,
afs_edit_dir_delete_inval ,
afs_edit_dir_delete_noent ,
} ;
enum afs_edit_dir_reason {
afs_edit_dir_for_create ,
afs_edit_dir_for_link ,
afs_edit_dir_for_mkdir ,
afs_edit_dir_for_rename ,
afs_edit_dir_for_rmdir ,
afs_edit_dir_for_symlink ,
afs_edit_dir_for_unlink ,
} ;
2018-10-20 00:57:56 +01:00
enum afs_eproto_cause {
afs_eproto_bad_status ,
afs_eproto_cb_count ,
afs_eproto_cb_fid_count ,
afs_eproto_file_type ,
afs_eproto_ibulkst_cb_count ,
afs_eproto_ibulkst_count ,
afs_eproto_motd_len ,
afs_eproto_offline_msg_len ,
afs_eproto_volname_len ,
afs_eproto_yvl_fsendpt4_len ,
afs_eproto_yvl_fsendpt6_len ,
afs_eproto_yvl_fsendpt_num ,
afs_eproto_yvl_fsendpt_type ,
afs_eproto_yvl_vlendpt4_len ,
afs_eproto_yvl_vlendpt6_len ,
afs_eproto_yvl_vlendpt_type ,
} ;
2018-10-20 00:57:57 +01:00
enum afs_io_error {
afs_io_error_cm_reply ,
afs_io_error_extract ,
afs_io_error_fs_probe_fail ,
afs_io_error_vl_lookup_fail ,
2018-10-20 00:57:59 +01:00
afs_io_error_vl_probe_fail ,
2018-10-20 00:57:57 +01:00
} ;
enum afs_file_error {
afs_file_error_dir_bad_magic ,
afs_file_error_dir_big ,
afs_file_error_dir_missing_page ,
afs_file_error_dir_over_end ,
afs_file_error_dir_small ,
afs_file_error_dir_unmarked_ext ,
afs_file_error_mntpt ,
afs_file_error_writeback_fail ,
} ;
2019-04-25 14:26:50 +01:00
enum afs_flock_event {
afs_flock_acquired ,
afs_flock_callback_break ,
afs_flock_defer_unlock ,
2019-04-25 14:26:51 +01:00
afs_flock_extend_fail ,
2019-04-25 14:26:50 +01:00
afs_flock_fail_other ,
afs_flock_fail_perm ,
afs_flock_no_lockers ,
2019-04-25 14:26:51 +01:00
afs_flock_release_fail ,
2019-04-25 14:26:50 +01:00
afs_flock_timestamp ,
afs_flock_try_to_lock ,
afs_flock_vfs_lock ,
afs_flock_vfs_locking ,
afs_flock_waited ,
afs_flock_waiting ,
afs_flock_work_extending ,
afs_flock_work_retry ,
afs_flock_work_unlocking ,
afs_flock_would_block ,
} ;
enum afs_flock_operation {
afs_flock_op_copy_lock ,
afs_flock_op_flock ,
afs_flock_op_grant ,
afs_flock_op_lock ,
afs_flock_op_release_lock ,
afs_flock_op_return_ok ,
afs_flock_op_return_eagain ,
afs_flock_op_return_edeadlk ,
afs_flock_op_return_error ,
afs_flock_op_set_lock ,
afs_flock_op_unlock ,
afs_flock_op_wake ,
} ;
2017-01-05 10:38:36 +00:00
# endif /* end __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY */
/*
* Declare tracing information enums and their string mappings for display .
*/
# define afs_call_traces \
EM ( afs_call_trace_alloc , " ALLOC " ) \
EM ( afs_call_trace_free , " FREE " ) \
2019-01-10 15:40:50 +00:00
EM ( afs_call_trace_get , " GET " ) \
2017-01-05 10:38:36 +00:00
EM ( afs_call_trace_put , " PUT " ) \
EM ( afs_call_trace_wake , " WAKE " ) \
E_ ( afs_call_trace_work , " WORK " )
2017-11-02 15:27:51 +00:00
# define afs_fs_operations \
EM ( afs_FS_FetchData , " FS.FetchData " ) \
EM ( afs_FS_FetchStatus , " FS.FetchStatus " ) \
EM ( afs_FS_StoreData , " FS.StoreData " ) \
EM ( afs_FS_StoreStatus , " FS.StoreStatus " ) \
EM ( afs_FS_RemoveFile , " FS.RemoveFile " ) \
EM ( afs_FS_CreateFile , " FS.CreateFile " ) \
EM ( afs_FS_Rename , " FS.Rename " ) \
EM ( afs_FS_Symlink , " FS.Symlink " ) \
EM ( afs_FS_Link , " FS.Link " ) \
EM ( afs_FS_MakeDir , " FS.MakeDir " ) \
EM ( afs_FS_RemoveDir , " FS.RemoveDir " ) \
EM ( afs_FS_GetVolumeInfo , " FS.GetVolumeInfo " ) \
EM ( afs_FS_GetVolumeStatus , " FS.GetVolumeStatus " ) \
EM ( afs_FS_GetRootVolume , " FS.GetRootVolume " ) \
EM ( afs_FS_SetLock , " FS.SetLock " ) \
EM ( afs_FS_ExtendLock , " FS.ExtendLock " ) \
EM ( afs_FS_ReleaseLock , " FS.ReleaseLock " ) \
EM ( afs_FS_Lookup , " FS.Lookup " ) \
2018-04-09 21:12:31 +01:00
EM ( afs_FS_InlineBulkStatus , " FS.InlineBulkStatus " ) \
2017-11-02 15:27:51 +00:00
EM ( afs_FS_FetchData64 , " FS.FetchData64 " ) \
EM ( afs_FS_StoreData64 , " FS.StoreData64 " ) \
EM ( afs_FS_GiveUpAllCallBacks , " FS.GiveUpAllCallBacks " ) \
2018-10-20 00:57:58 +01:00
EM ( afs_FS_GetCapabilities , " FS.GetCapabilities " ) \
EM ( yfs_FS_FetchACL , " YFS.FetchACL " ) \
EM ( yfs_FS_FetchStatus , " YFS.FetchStatus " ) \
EM ( yfs_FS_StoreACL , " YFS.StoreACL " ) \
EM ( yfs_FS_StoreStatus , " YFS.StoreStatus " ) \
EM ( yfs_FS_RemoveFile , " YFS.RemoveFile " ) \
EM ( yfs_FS_CreateFile , " YFS.CreateFile " ) \
EM ( yfs_FS_Rename , " YFS.Rename " ) \
EM ( yfs_FS_Symlink , " YFS.Symlink " ) \
EM ( yfs_FS_Link , " YFS.Link " ) \
EM ( yfs_FS_MakeDir , " YFS.MakeDir " ) \
EM ( yfs_FS_RemoveDir , " YFS.RemoveDir " ) \
EM ( yfs_FS_GetVolumeStatus , " YFS.GetVolumeStatus " ) \
EM ( yfs_FS_SetVolumeStatus , " YFS.SetVolumeStatus " ) \
EM ( yfs_FS_SetLock , " YFS.SetLock " ) \
EM ( yfs_FS_ExtendLock , " YFS.ExtendLock " ) \
EM ( yfs_FS_ReleaseLock , " YFS.ReleaseLock " ) \
EM ( yfs_FS_Lookup , " YFS.Lookup " ) \
EM ( yfs_FS_FlushCPS , " YFS.FlushCPS " ) \
EM ( yfs_FS_FetchOpaqueACL , " YFS.FetchOpaqueACL " ) \
EM ( yfs_FS_WhoAmI , " YFS.WhoAmI " ) \
EM ( yfs_FS_RemoveACL , " YFS.RemoveACL " ) \
EM ( yfs_FS_RemoveFile2 , " YFS.RemoveFile2 " ) \
EM ( yfs_FS_StoreOpaqueACL2 , " YFS.StoreOpaqueACL2 " ) \
EM ( yfs_FS_InlineBulkStatus , " YFS.InlineBulkStatus " ) \
EM ( yfs_FS_FetchData64 , " YFS.FetchData64 " ) \
EM ( yfs_FS_StoreData64 , " YFS.StoreData64 " ) \
E_ ( yfs_FS_UpdateSymlink , " YFS.UpdateSymlink " )
2017-11-02 15:27:51 +00:00
# define afs_vl_operations \
EM ( afs_VL_GetEntryByNameU , " VL.GetEntryByNameU " ) \
EM ( afs_VL_GetAddrsU , " VL.GetAddrsU " ) \
EM ( afs_YFSVL_GetEndpoints , " YFSVL.GetEndpoints " ) \
E_ ( afs_VL_GetCapabilities , " VL.GetCapabilities " )
2018-04-06 14:17:25 +01:00
# define afs_edit_dir_ops \
EM ( afs_edit_dir_create , " create " ) \
EM ( afs_edit_dir_create_error , " c_fail " ) \
EM ( afs_edit_dir_create_inval , " c_invl " ) \
EM ( afs_edit_dir_create_nospc , " c_nspc " ) \
EM ( afs_edit_dir_delete , " delete " ) \
EM ( afs_edit_dir_delete_error , " d_err " ) \
EM ( afs_edit_dir_delete_inval , " d_invl " ) \
E_ ( afs_edit_dir_delete_noent , " d_nent " )
# define afs_edit_dir_reasons \
EM ( afs_edit_dir_for_create , " Create " ) \
EM ( afs_edit_dir_for_link , " Link " ) \
EM ( afs_edit_dir_for_mkdir , " MkDir " ) \
EM ( afs_edit_dir_for_rename , " Rename " ) \
EM ( afs_edit_dir_for_rmdir , " RmDir " ) \
EM ( afs_edit_dir_for_symlink , " Symlnk " ) \
E_ ( afs_edit_dir_for_unlink , " Unlink " )
2018-10-20 00:57:56 +01:00
# define afs_eproto_causes \
EM ( afs_eproto_bad_status , " BadStatus " ) \
EM ( afs_eproto_cb_count , " CbCount " ) \
EM ( afs_eproto_cb_fid_count , " CbFidCount " ) \
EM ( afs_eproto_file_type , " FileTYpe " ) \
EM ( afs_eproto_ibulkst_cb_count , " IBS.CbCount " ) \
EM ( afs_eproto_ibulkst_count , " IBS.FidCount " ) \
EM ( afs_eproto_motd_len , " MotdLen " ) \
EM ( afs_eproto_offline_msg_len , " OfflineMsgLen " ) \
EM ( afs_eproto_volname_len , " VolNameLen " ) \
EM ( afs_eproto_yvl_fsendpt4_len , " YVL.FsEnd4Len " ) \
EM ( afs_eproto_yvl_fsendpt6_len , " YVL.FsEnd6Len " ) \
EM ( afs_eproto_yvl_fsendpt_num , " YVL.FsEndCount " ) \
EM ( afs_eproto_yvl_fsendpt_type , " YVL.FsEndType " ) \
EM ( afs_eproto_yvl_vlendpt4_len , " YVL.VlEnd4Len " ) \
EM ( afs_eproto_yvl_vlendpt6_len , " YVL.VlEnd6Len " ) \
E_ ( afs_eproto_yvl_vlendpt_type , " YVL.VlEndType " )
2018-10-20 00:57:57 +01:00
# define afs_io_errors \
EM ( afs_io_error_cm_reply , " CM_REPLY " ) \
EM ( afs_io_error_extract , " EXTRACT " ) \
EM ( afs_io_error_fs_probe_fail , " FS_PROBE_FAIL " ) \
2018-10-20 00:57:59 +01:00
EM ( afs_io_error_vl_lookup_fail , " VL_LOOKUP_FAIL " ) \
E_ ( afs_io_error_vl_probe_fail , " VL_PROBE_FAIL " )
2018-10-20 00:57:57 +01:00
# define afs_file_errors \
EM ( afs_file_error_dir_bad_magic , " DIR_BAD_MAGIC " ) \
EM ( afs_file_error_dir_big , " DIR_BIG " ) \
EM ( afs_file_error_dir_missing_page , " DIR_MISSING_PAGE " ) \
EM ( afs_file_error_dir_over_end , " DIR_ENT_OVER_END " ) \
EM ( afs_file_error_dir_small , " DIR_SMALL " ) \
EM ( afs_file_error_dir_unmarked_ext , " DIR_UNMARKED_EXT " ) \
EM ( afs_file_error_mntpt , " MNTPT_READ_FAILED " ) \
E_ ( afs_file_error_writeback_fail , " WRITEBACK_FAILED " )
2017-11-02 15:27:51 +00:00
2019-04-25 14:26:50 +01:00
# define afs_flock_types \
EM ( F_RDLCK , " RDLCK " ) \
EM ( F_WRLCK , " WRLCK " ) \
E_ ( F_UNLCK , " UNLCK " )
# define afs_flock_states \
EM ( AFS_VNODE_LOCK_NONE , " NONE " ) \
EM ( AFS_VNODE_LOCK_WAITING_FOR_CB , " WAIT_FOR_CB " ) \
EM ( AFS_VNODE_LOCK_SETTING , " SETTING " ) \
EM ( AFS_VNODE_LOCK_GRANTED , " GRANTED " ) \
EM ( AFS_VNODE_LOCK_EXTENDING , " EXTENDING " ) \
EM ( AFS_VNODE_LOCK_NEED_UNLOCK , " NEED_UNLOCK " ) \
2019-04-25 14:26:51 +01:00
EM ( AFS_VNODE_LOCK_UNLOCKING , " UNLOCKING " ) \
E_ ( AFS_VNODE_LOCK_DELETED , " DELETED " )
2019-04-25 14:26:50 +01:00
# define afs_flock_events \
EM ( afs_flock_acquired , " Acquired " ) \
EM ( afs_flock_callback_break , " Callback " ) \
EM ( afs_flock_defer_unlock , " D-Unlock " ) \
2019-04-25 14:26:51 +01:00
EM ( afs_flock_extend_fail , " Ext_Fail " ) \
2019-04-25 14:26:50 +01:00
EM ( afs_flock_fail_other , " ErrOther " ) \
EM ( afs_flock_fail_perm , " ErrPerm " ) \
EM ( afs_flock_no_lockers , " NoLocker " ) \
2019-04-25 14:26:51 +01:00
EM ( afs_flock_release_fail , " Rel_Fail " ) \
2019-04-25 14:26:50 +01:00
EM ( afs_flock_timestamp , " Timestmp " ) \
EM ( afs_flock_try_to_lock , " TryToLck " ) \
EM ( afs_flock_vfs_lock , " VFSLock " ) \
EM ( afs_flock_vfs_locking , " VFSLking " ) \
EM ( afs_flock_waited , " Waited " ) \
EM ( afs_flock_waiting , " Waiting " ) \
EM ( afs_flock_work_extending , " Extendng " ) \
EM ( afs_flock_work_retry , " Retry " ) \
EM ( afs_flock_work_unlocking , " Unlcking " ) \
E_ ( afs_flock_would_block , " EWOULDBL " )
# define afs_flock_operations \
EM ( afs_flock_op_copy_lock , " COPY " ) \
EM ( afs_flock_op_flock , " ->flock " ) \
EM ( afs_flock_op_grant , " GRANT " ) \
EM ( afs_flock_op_lock , " ->lock " ) \
EM ( afs_flock_op_release_lock , " RELEASE " ) \
EM ( afs_flock_op_return_ok , " <-OK " ) \
EM ( afs_flock_op_return_edeadlk , " <-EDEADL " ) \
EM ( afs_flock_op_return_eagain , " <-EAGAIN " ) \
EM ( afs_flock_op_return_error , " <-ERROR " ) \
EM ( afs_flock_op_set_lock , " SET " ) \
EM ( afs_flock_op_unlock , " UNLOCK " ) \
E_ ( afs_flock_op_wake , " WAKE " )
2017-01-05 10:38:36 +00:00
/*
* Export enum symbols via userspace .
*/
# undef EM
# undef E_
# define EM(a, b) TRACE_DEFINE_ENUM(a);
# define E_(a, b) TRACE_DEFINE_ENUM(a);
afs_call_traces ;
2017-11-02 15:27:51 +00:00
afs_fs_operations ;
afs_vl_operations ;
2018-04-06 14:17:25 +01:00
afs_edit_dir_ops ;
afs_edit_dir_reasons ;
2018-10-20 00:57:57 +01:00
afs_eproto_causes ;
afs_io_errors ;
afs_file_errors ;
2019-04-25 14:26:50 +01:00
afs_flock_types ;
afs_flock_operations ;
2017-01-05 10:38:36 +00:00
/*
* Now redefine the EM ( ) and E_ ( ) macros to map the enums to the strings that
* will be printed in the output .
*/
# undef EM
# undef E_
# define EM(a, b) { a, b },
# define E_(a, b) { a, b }
2018-10-20 00:57:56 +01:00
TRACE_EVENT ( afs_receive_data ,
TP_PROTO ( struct afs_call * call , struct iov_iter * iter ,
2017-01-05 10:38:34 +00:00
bool want_more , int ret ) ,
2018-10-20 00:57:56 +01:00
TP_ARGS ( call , iter , want_more , ret ) ,
2017-01-05 10:38:34 +00:00
TP_STRUCT__entry (
2018-10-20 00:57:56 +01:00
__field ( loff_t , remain )
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-01-05 10:38:34 +00:00
__field ( enum afs_call_state , state )
__field ( unsigned short , unmarshall )
__field ( bool , want_more )
__field ( int , ret )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-01-05 10:38:34 +00:00
__entry - > state = call - > state ;
__entry - > unmarshall = call - > unmarshall ;
2018-10-20 00:57:56 +01:00
__entry - > remain = iov_iter_count ( iter ) ;
2017-01-05 10:38:34 +00:00
__entry - > want_more = want_more ;
__entry - > ret = ret ;
) ,
2018-10-20 00:57:56 +01:00
TP_printk ( " c=%08x r=%llu u=%u w=%u s=%u ret=%d " ,
2017-01-05 10:38:34 +00:00
__entry - > call ,
2018-10-20 00:57:56 +01:00
__entry - > remain ,
__entry - > unmarshall ,
__entry - > want_more ,
__entry - > state ,
__entry - > ret )
2017-01-05 10:38:34 +00:00
) ;
TRACE_EVENT ( afs_notify_call ,
TP_PROTO ( struct rxrpc_call * rxcall , struct afs_call * call ) ,
TP_ARGS ( rxcall , call ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-01-05 10:38:34 +00:00
__field ( enum afs_call_state , state )
__field ( unsigned short , unmarshall )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-01-05 10:38:34 +00:00
__entry - > state = call - > state ;
__entry - > unmarshall = call - > unmarshall ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x s=%u u=%u " ,
2017-01-05 10:38:34 +00:00
__entry - > call ,
__entry - > state , __entry - > unmarshall )
) ;
TRACE_EVENT ( afs_cb_call ,
TP_PROTO ( struct afs_call * call ) ,
TP_ARGS ( call ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-01-05 10:38:34 +00:00
__field ( const char * , name )
__field ( u32 , op )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-01-05 10:38:34 +00:00
__entry - > name = call - > type - > name ;
__entry - > op = call - > operation_ID ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %s o=%u " ,
2017-01-05 10:38:34 +00:00
__entry - > call ,
__entry - > name ,
__entry - > op )
) ;
2017-01-05 10:38:36 +00:00
TRACE_EVENT ( afs_call ,
TP_PROTO ( struct afs_call * call , enum afs_call_trace op ,
int usage , int outstanding , const void * where ) ,
TP_ARGS ( call , op , usage , outstanding , where ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-01-05 10:38:36 +00:00
__field ( int , op )
__field ( int , usage )
__field ( int , outstanding )
__field ( const void * , where )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-01-05 10:38:36 +00:00
__entry - > op = op ;
__entry - > usage = usage ;
__entry - > outstanding = outstanding ;
__entry - > where = where ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %s u=%d o=%d sp=%pSR " ,
2017-01-05 10:38:36 +00:00
__entry - > call ,
__print_symbolic ( __entry - > op , afs_call_traces ) ,
__entry - > usage ,
__entry - > outstanding ,
__entry - > where )
) ;
2017-11-02 15:27:51 +00:00
TRACE_EVENT ( afs_make_fs_call ,
TP_PROTO ( struct afs_call * call , const struct afs_fid * fid ) ,
TP_ARGS ( call , fid ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:51 +00:00
__field ( enum afs_fs_operation , op )
__field_struct ( struct afs_fid , fid )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:51 +00:00
__entry - > op = call - > operation_ID ;
if ( fid ) {
__entry - > fid = * fid ;
} else {
__entry - > fid . vid = 0 ;
__entry - > fid . vnode = 0 ;
__entry - > fid . unique = 0 ;
}
) ,
2018-10-20 00:57:57 +01:00
TP_printk ( " c=%08x %06llx:%06llx:%06x %s " ,
2017-11-02 15:27:51 +00:00
__entry - > call ,
__entry - > fid . vid ,
__entry - > fid . vnode ,
__entry - > fid . unique ,
__print_symbolic ( __entry - > op , afs_fs_operations ) )
) ;
TRACE_EVENT ( afs_make_vl_call ,
TP_PROTO ( struct afs_call * call ) ,
TP_ARGS ( call ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:51 +00:00
__field ( enum afs_vl_operation , op )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:51 +00:00
__entry - > op = call - > operation_ID ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %s " ,
2017-11-02 15:27:51 +00:00
__entry - > call ,
__print_symbolic ( __entry - > op , afs_vl_operations ) )
) ;
TRACE_EVENT ( afs_call_done ,
TP_PROTO ( struct afs_call * call ) ,
TP_ARGS ( call ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:51 +00:00
__field ( struct rxrpc_call * , rx_call )
__field ( int , ret )
__field ( u32 , abort_code )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:51 +00:00
__entry - > rx_call = call - > rxcall ;
__entry - > ret = call - > error ;
__entry - > abort_code = call - > abort_code ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x ret=%d ab=%d [%p] " ,
2017-11-02 15:27:51 +00:00
__entry - > call ,
__entry - > ret ,
__entry - > abort_code ,
__entry - > rx_call )
) ;
2017-11-02 15:27:51 +00:00
TRACE_EVENT ( afs_send_pages ,
TP_PROTO ( struct afs_call * call , struct msghdr * msg ,
pgoff_t first , pgoff_t last , unsigned int offset ) ,
TP_ARGS ( call , msg , first , last , offset ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:51 +00:00
__field ( pgoff_t , first )
__field ( pgoff_t , last )
__field ( unsigned int , nr )
__field ( unsigned int , bytes )
__field ( unsigned int , offset )
__field ( unsigned int , flags )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:51 +00:00
__entry - > first = first ;
__entry - > last = last ;
__entry - > nr = msg - > msg_iter . nr_segs ;
__entry - > bytes = msg - > msg_iter . count ;
__entry - > offset = offset ;
__entry - > flags = msg - > msg_flags ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %lx-%lx-%lx b=%x o=%x f=%x " ,
2017-11-02 15:27:51 +00:00
__entry - > call ,
__entry - > first , __entry - > first + __entry - > nr - 1 , __entry - > last ,
__entry - > bytes , __entry - > offset ,
__entry - > flags )
) ;
TRACE_EVENT ( afs_sent_pages ,
TP_PROTO ( struct afs_call * call , pgoff_t first , pgoff_t last ,
pgoff_t cursor , int ret ) ,
TP_ARGS ( call , first , last , cursor , ret ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:51 +00:00
__field ( pgoff_t , first )
__field ( pgoff_t , last )
__field ( pgoff_t , cursor )
__field ( int , ret )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:51 +00:00
__entry - > first = first ;
__entry - > last = last ;
__entry - > cursor = cursor ;
__entry - > ret = ret ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %lx-%lx c=%lx r=%d " ,
2017-11-02 15:27:51 +00:00
__entry - > call ,
__entry - > first , __entry - > last ,
__entry - > cursor , __entry - > ret )
) ;
2017-11-02 15:27:52 +00:00
TRACE_EVENT ( afs_dir_check_failed ,
TP_PROTO ( struct afs_vnode * vnode , loff_t off , loff_t i_size ) ,
TP_ARGS ( vnode , off , i_size ) ,
TP_STRUCT__entry (
__field ( struct afs_vnode * , vnode )
__field ( loff_t , off )
__field ( loff_t , i_size )
) ,
TP_fast_assign (
__entry - > vnode = vnode ;
__entry - > off = off ;
__entry - > i_size = i_size ;
) ,
TP_printk ( " vn=%p %llx/%llx " ,
__entry - > vnode , __entry - > off , __entry - > i_size )
) ;
2017-11-02 15:27:53 +00:00
/*
* We use page - > private to hold the amount of the page that we ' ve written to ,
* splitting the field into two parts . However , we need to represent a range
* 0. . . PAGE_SIZE inclusive , so we can ' t support 64 K pages on a 32 - bit system .
*/
# if PAGE_SIZE > 32768
# define AFS_PRIV_MAX 0xffffffff
# define AFS_PRIV_SHIFT 32
# else
# define AFS_PRIV_MAX 0xffff
# define AFS_PRIV_SHIFT 16
# endif
TRACE_EVENT ( afs_page_dirty ,
TP_PROTO ( struct afs_vnode * vnode , const char * where ,
pgoff_t page , unsigned long priv ) ,
TP_ARGS ( vnode , where , page , priv ) ,
TP_STRUCT__entry (
__field ( struct afs_vnode * , vnode )
__field ( const char * , where )
__field ( pgoff_t , page )
__field ( unsigned long , priv )
) ,
TP_fast_assign (
__entry - > vnode = vnode ;
__entry - > where = where ;
__entry - > page = page ;
__entry - > priv = priv ;
) ,
TP_printk ( " vn=%p %lx %s %lu-%lu " ,
__entry - > vnode , __entry - > page , __entry - > where ,
__entry - > priv & AFS_PRIV_MAX ,
__entry - > priv > > AFS_PRIV_SHIFT )
) ;
2017-11-02 15:27:53 +00:00
TRACE_EVENT ( afs_call_state ,
TP_PROTO ( struct afs_call * call ,
enum afs_call_state from ,
enum afs_call_state to ,
int ret , u32 remote_abort ) ,
TP_ARGS ( call , from , to , ret , remote_abort ) ,
TP_STRUCT__entry (
2018-03-27 23:03:00 +01:00
__field ( unsigned int , call )
2017-11-02 15:27:53 +00:00
__field ( enum afs_call_state , from )
__field ( enum afs_call_state , to )
__field ( int , ret )
__field ( u32 , abort )
) ,
TP_fast_assign (
2018-03-27 23:03:00 +01:00
__entry - > call = call - > debug_id ;
2017-11-02 15:27:53 +00:00
__entry - > from = from ;
__entry - > to = to ;
__entry - > ret = ret ;
__entry - > abort = remote_abort ;
) ,
2018-03-27 23:03:00 +01:00
TP_printk ( " c=%08x %u->%u r=%d ab=%d " ,
2017-11-02 15:27:53 +00:00
__entry - > call ,
__entry - > from , __entry - > to ,
__entry - > ret , __entry - > abort )
) ;
2018-04-06 14:17:25 +01:00
TRACE_EVENT ( afs_edit_dir ,
TP_PROTO ( struct afs_vnode * dvnode ,
enum afs_edit_dir_reason why ,
enum afs_edit_dir_op op ,
unsigned int block ,
unsigned int slot ,
unsigned int f_vnode ,
unsigned int f_unique ,
const char * name ) ,
TP_ARGS ( dvnode , why , op , block , slot , f_vnode , f_unique , name ) ,
TP_STRUCT__entry (
__field ( unsigned int , vnode )
__field ( unsigned int , unique )
__field ( enum afs_edit_dir_reason , why )
__field ( enum afs_edit_dir_op , op )
__field ( unsigned int , block )
__field ( unsigned short , slot )
__field ( unsigned int , f_vnode )
__field ( unsigned int , f_unique )
__array ( char , name , 18 )
) ,
TP_fast_assign (
int __len = strlen ( name ) ;
__len = min ( __len , 17 ) ;
__entry - > vnode = dvnode - > fid . vnode ;
__entry - > unique = dvnode - > fid . unique ;
__entry - > why = why ;
__entry - > op = op ;
__entry - > block = block ;
__entry - > slot = slot ;
__entry - > f_vnode = f_vnode ;
__entry - > f_unique = f_unique ;
memcpy ( __entry - > name , name , __len ) ;
__entry - > name [ __len ] = 0 ;
) ,
TP_printk ( " d=%x:%x %s %s %u[%u] f=%x:%x %s " ,
__entry - > vnode , __entry - > unique ,
__print_symbolic ( __entry - > why , afs_edit_dir_reasons ) ,
__print_symbolic ( __entry - > op , afs_edit_dir_ops ) ,
__entry - > block , __entry - > slot ,
__entry - > f_vnode , __entry - > f_unique ,
__entry - > name )
) ;
2018-04-06 14:17:25 +01:00
TRACE_EVENT ( afs_protocol_error ,
2018-10-20 00:57:56 +01:00
TP_PROTO ( struct afs_call * call , int error , enum afs_eproto_cause cause ) ,
2018-04-06 14:17:25 +01:00
2018-10-20 00:57:56 +01:00
TP_ARGS ( call , error , cause ) ,
2018-04-06 14:17:25 +01:00
TP_STRUCT__entry (
2018-10-20 00:57:56 +01:00
__field ( unsigned int , call )
__field ( int , error )
__field ( enum afs_eproto_cause , cause )
2018-04-06 14:17:25 +01:00
) ,
TP_fast_assign (
__entry - > call = call ? call - > debug_id : 0 ;
__entry - > error = error ;
2018-10-20 00:57:56 +01:00
__entry - > cause = cause ;
2018-04-06 14:17:25 +01:00
) ,
2018-10-20 00:57:56 +01:00
TP_printk ( " c=%08x r=%d %s " ,
__entry - > call , __entry - > error ,
__print_symbolic ( __entry - > cause , afs_eproto_causes ) )
2018-04-06 14:17:25 +01:00
) ;
2018-10-20 00:57:57 +01:00
TRACE_EVENT ( afs_io_error ,
TP_PROTO ( unsigned int call , int error , enum afs_io_error where ) ,
TP_ARGS ( call , error , where ) ,
TP_STRUCT__entry (
__field ( unsigned int , call )
__field ( int , error )
__field ( enum afs_io_error , where )
) ,
TP_fast_assign (
__entry - > call = call ;
__entry - > error = error ;
__entry - > where = where ;
) ,
TP_printk ( " c=%08x r=%d %s " ,
__entry - > call , __entry - > error ,
__print_symbolic ( __entry - > where , afs_io_errors ) )
) ;
TRACE_EVENT ( afs_file_error ,
TP_PROTO ( struct afs_vnode * vnode , int error , enum afs_file_error where ) ,
TP_ARGS ( vnode , error , where ) ,
TP_STRUCT__entry (
__field_struct ( struct afs_fid , fid )
__field ( int , error )
__field ( enum afs_file_error , where )
) ,
TP_fast_assign (
__entry - > fid = vnode - > fid ;
__entry - > error = error ;
__entry - > where = where ;
) ,
2018-10-20 00:57:57 +01:00
TP_printk ( " %llx:%llx:%x r=%d %s " ,
2018-10-20 00:57:57 +01:00
__entry - > fid . vid , __entry - > fid . vnode , __entry - > fid . unique ,
__entry - > error ,
__print_symbolic ( __entry - > where , afs_file_errors ) )
) ;
2018-05-11 22:59:42 +01:00
TRACE_EVENT ( afs_cm_no_server ,
TP_PROTO ( struct afs_call * call , struct sockaddr_rxrpc * srx ) ,
TP_ARGS ( call , srx ) ,
TP_STRUCT__entry (
__field ( unsigned int , call )
__field ( unsigned int , op_id )
__field_struct ( struct sockaddr_rxrpc , srx )
) ,
TP_fast_assign (
__entry - > call = call - > debug_id ;
__entry - > op_id = call - > operation_ID ;
memcpy ( & __entry - > srx , srx , sizeof ( __entry - > srx ) ) ;
) ,
TP_printk ( " c=%08x op=%u %pISpc " ,
__entry - > call , __entry - > op_id , & __entry - > srx . transport )
) ;
TRACE_EVENT ( afs_cm_no_server_u ,
TP_PROTO ( struct afs_call * call , const uuid_t * uuid ) ,
TP_ARGS ( call , uuid ) ,
TP_STRUCT__entry (
__field ( unsigned int , call )
__field ( unsigned int , op_id )
__field_struct ( uuid_t , uuid )
) ,
TP_fast_assign (
__entry - > call = call - > debug_id ;
__entry - > op_id = call - > operation_ID ;
memcpy ( & __entry - > uuid , uuid , sizeof ( __entry - > uuid ) ) ;
) ,
TP_printk ( " c=%08x op=%u %pU " ,
__entry - > call , __entry - > op_id , & __entry - > uuid )
) ;
2019-04-25 14:26:50 +01:00
TRACE_EVENT ( afs_flock_ev ,
TP_PROTO ( struct afs_vnode * vnode , struct file_lock * fl ,
enum afs_flock_event event , int error ) ,
TP_ARGS ( vnode , fl , event , error ) ,
TP_STRUCT__entry (
__field_struct ( struct afs_fid , fid )
__field ( enum afs_flock_event , event )
__field ( enum afs_lock_state , state )
__field ( int , error )
__field ( unsigned int , debug_id )
) ,
TP_fast_assign (
__entry - > fid = vnode - > fid ;
__entry - > event = event ;
__entry - > state = vnode - > lock_state ;
__entry - > error = error ;
__entry - > debug_id = fl ? fl - > fl_u . afs . debug_id : 0 ;
) ,
TP_printk ( " %llx:%llx:%x %04x %s s=%s e=%d " ,
__entry - > fid . vid , __entry - > fid . vnode , __entry - > fid . unique ,
__entry - > debug_id ,
__print_symbolic ( __entry - > event , afs_flock_events ) ,
__print_symbolic ( __entry - > state , afs_flock_states ) ,
__entry - > error )
) ;
TRACE_EVENT ( afs_flock_op ,
TP_PROTO ( struct afs_vnode * vnode , struct file_lock * fl ,
enum afs_flock_operation op ) ,
TP_ARGS ( vnode , fl , op ) ,
TP_STRUCT__entry (
__field_struct ( struct afs_fid , fid )
__field ( loff_t , from )
__field ( loff_t , len )
__field ( enum afs_flock_operation , op )
__field ( unsigned char , type )
__field ( unsigned int , flags )
__field ( unsigned int , debug_id )
) ,
TP_fast_assign (
__entry - > fid = vnode - > fid ;
__entry - > from = fl - > fl_start ;
__entry - > len = fl - > fl_end - fl - > fl_start + 1 ;
__entry - > op = op ;
__entry - > type = fl - > fl_type ;
__entry - > flags = fl - > fl_flags ;
__entry - > debug_id = fl - > fl_u . afs . debug_id ;
) ,
TP_printk ( " %llx:%llx:%x %04x %s t=%s R=%llx/%llx f=%x " ,
__entry - > fid . vid , __entry - > fid . vnode , __entry - > fid . unique ,
__entry - > debug_id ,
__print_symbolic ( __entry - > op , afs_flock_operations ) ,
__print_symbolic ( __entry - > type , afs_flock_types ) ,
__entry - > from , __entry - > len , __entry - > flags )
) ;
2017-01-05 10:38:34 +00:00
# endif /* _TRACE_AFS_H */
/* This part must be outside protection */
# include <trace/define_trace.h>