@@ -103,6 +103,24 @@ enum afs_eproto_cause {
103103 afs_eproto_yvl_vlendpt_type ,
104104};
105105
106+ enum afs_io_error {
107+ afs_io_error_cm_reply ,
108+ afs_io_error_extract ,
109+ afs_io_error_fs_probe_fail ,
110+ afs_io_error_vl_lookup_fail ,
111+ };
112+
113+ enum afs_file_error {
114+ afs_file_error_dir_bad_magic ,
115+ afs_file_error_dir_big ,
116+ afs_file_error_dir_missing_page ,
117+ afs_file_error_dir_over_end ,
118+ afs_file_error_dir_small ,
119+ afs_file_error_dir_unmarked_ext ,
120+ afs_file_error_mntpt ,
121+ afs_file_error_writeback_fail ,
122+ };
123+
106124#endif /* end __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY */
107125
108126/*
@@ -183,6 +201,21 @@ enum afs_eproto_cause {
183201 EM(afs_eproto_yvl_vlendpt6_len, "YVL.VlEnd6Len") \
184202 E_(afs_eproto_yvl_vlendpt_type, "YVL.VlEndType")
185203
204+ #define afs_io_errors \
205+ EM(afs_io_error_cm_reply, "CM_REPLY") \
206+ EM(afs_io_error_extract, "EXTRACT") \
207+ EM(afs_io_error_fs_probe_fail, "FS_PROBE_FAIL") \
208+ E_(afs_io_error_vl_lookup_fail, "VL_LOOKUP_FAIL")
209+
210+ #define afs_file_errors \
211+ EM(afs_file_error_dir_bad_magic, "DIR_BAD_MAGIC") \
212+ EM(afs_file_error_dir_big, "DIR_BIG") \
213+ EM(afs_file_error_dir_missing_page, "DIR_MISSING_PAGE") \
214+ EM(afs_file_error_dir_over_end, "DIR_ENT_OVER_END") \
215+ EM(afs_file_error_dir_small, "DIR_SMALL") \
216+ EM(afs_file_error_dir_unmarked_ext, "DIR_UNMARKED_EXT") \
217+ EM(afs_file_error_mntpt, "MNTPT_READ_FAILED") \
218+ E_(afs_file_error_writeback_fail, "WRITEBACK_FAILED")
186219
187220/*
188221 * Export enum symbols via userspace.
@@ -197,6 +230,9 @@ afs_fs_operations;
197230afs_vl_operations ;
198231afs_edit_dir_ops ;
199232afs_edit_dir_reasons ;
233+ afs_eproto_causes ;
234+ afs_io_errors ;
235+ afs_file_errors ;
200236
201237/*
202238 * Now redefine the EM() and E_() macros to map the enums to the strings that
@@ -613,6 +649,51 @@ TRACE_EVENT(afs_protocol_error,
613649 __print_symbolic (__entry -> cause , afs_eproto_causes ))
614650 );
615651
652+ TRACE_EVENT (afs_io_error ,
653+ TP_PROTO (unsigned int call , int error , enum afs_io_error where ),
654+
655+ TP_ARGS (call , error , where ),
656+
657+ TP_STRUCT__entry (
658+ __field (unsigned int , call )
659+ __field (int , error )
660+ __field (enum afs_io_error , where )
661+ ),
662+
663+ TP_fast_assign (
664+ __entry -> call = call ;
665+ __entry -> error = error ;
666+ __entry -> where = where ;
667+ ),
668+
669+ TP_printk ("c=%08x r=%d %s" ,
670+ __entry -> call , __entry -> error ,
671+ __print_symbolic (__entry -> where , afs_io_errors ))
672+ );
673+
674+ TRACE_EVENT (afs_file_error ,
675+ TP_PROTO (struct afs_vnode * vnode , int error , enum afs_file_error where ),
676+
677+ TP_ARGS (vnode , error , where ),
678+
679+ TP_STRUCT__entry (
680+ __field_struct (struct afs_fid , fid )
681+ __field (int , error )
682+ __field (enum afs_file_error , where )
683+ ),
684+
685+ TP_fast_assign (
686+ __entry -> fid = vnode -> fid ;
687+ __entry -> error = error ;
688+ __entry -> where = where ;
689+ ),
690+
691+ TP_printk ("%x:%x:%x r=%d %s" ,
692+ __entry -> fid .vid , __entry -> fid .vnode , __entry -> fid .unique ,
693+ __entry -> error ,
694+ __print_symbolic (__entry -> where , afs_file_errors ))
695+ );
696+
616697TRACE_EVENT (afs_cm_no_server ,
617698 TP_PROTO (struct afs_call * call , struct sockaddr_rxrpc * srx ),
618699
0 commit comments