@@ -206,6 +206,116 @@ DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err);
206206DEFINE_SMB3_OTHER_ERR_EVENT (zero_err );
207207DEFINE_SMB3_OTHER_ERR_EVENT (falloc_err );
208208
209+ /*
210+ * For logging errors in reflink and copy_range ops e.g. smb2_copychunk_range
211+ * and smb2_duplicate_extents
212+ */
213+ DECLARE_EVENT_CLASS (smb3_copy_range_err_class ,
214+ TP_PROTO (unsigned int xid ,
215+ __u64 src_fid ,
216+ __u64 target_fid ,
217+ __u32 tid ,
218+ __u64 sesid ,
219+ __u64 src_offset ,
220+ __u64 target_offset ,
221+ __u32 len ,
222+ int rc ),
223+ TP_ARGS (xid , src_fid , target_fid , tid , sesid , src_offset , target_offset , len , rc ),
224+ TP_STRUCT__entry (
225+ __field (unsigned int , xid )
226+ __field (__u64 , src_fid )
227+ __field (__u64 , target_fid )
228+ __field (__u32 , tid )
229+ __field (__u64 , sesid )
230+ __field (__u64 , src_offset )
231+ __field (__u64 , target_offset )
232+ __field (__u32 , len )
233+ __field (int , rc )
234+ ),
235+ TP_fast_assign (
236+ __entry -> xid = xid ;
237+ __entry -> src_fid = src_fid ;
238+ __entry -> target_fid = target_fid ;
239+ __entry -> tid = tid ;
240+ __entry -> sesid = sesid ;
241+ __entry -> src_offset = src_offset ;
242+ __entry -> target_offset = target_offset ;
243+ __entry -> len = len ;
244+ __entry -> rc = rc ;
245+ ),
246+ TP_printk ("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x rc=%d" ,
247+ __entry -> xid , __entry -> sesid , __entry -> tid , __entry -> target_fid ,
248+ __entry -> src_offset , __entry -> target_fid , __entry -> target_offset , __entry -> len , __entry -> rc )
249+ )
250+
251+ #define DEFINE_SMB3_COPY_RANGE_ERR_EVENT (name ) \
252+ DEFINE_EVENT(smb3_copy_range_err_class, smb3_##name, \
253+ TP_PROTO(unsigned int xid, \
254+ __u64 src_fid, \
255+ __u64 target_fid, \
256+ __u32 tid, \
257+ __u64 sesid, \
258+ __u64 src_offset, \
259+ __u64 target_offset, \
260+ __u32 len, \
261+ int rc), \
262+ TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc))
263+
264+ DEFINE_SMB3_COPY_RANGE_ERR_EVENT (clone_err );
265+ /* TODO: Add SMB3_COPY_RANGE_ERR_EVENT(copychunk_err) */
266+
267+ DECLARE_EVENT_CLASS (smb3_copy_range_done_class ,
268+ TP_PROTO (unsigned int xid ,
269+ __u64 src_fid ,
270+ __u64 target_fid ,
271+ __u32 tid ,
272+ __u64 sesid ,
273+ __u64 src_offset ,
274+ __u64 target_offset ,
275+ __u32 len ),
276+ TP_ARGS (xid , src_fid , target_fid , tid , sesid , src_offset , target_offset , len ),
277+ TP_STRUCT__entry (
278+ __field (unsigned int , xid )
279+ __field (__u64 , src_fid )
280+ __field (__u64 , target_fid )
281+ __field (__u32 , tid )
282+ __field (__u64 , sesid )
283+ __field (__u64 , src_offset )
284+ __field (__u64 , target_offset )
285+ __field (__u32 , len )
286+ ),
287+ TP_fast_assign (
288+ __entry -> xid = xid ;
289+ __entry -> src_fid = src_fid ;
290+ __entry -> target_fid = target_fid ;
291+ __entry -> tid = tid ;
292+ __entry -> sesid = sesid ;
293+ __entry -> src_offset = src_offset ;
294+ __entry -> target_offset = target_offset ;
295+ __entry -> len = len ;
296+ ),
297+ TP_printk ("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x" ,
298+ __entry -> xid , __entry -> sesid , __entry -> tid , __entry -> target_fid ,
299+ __entry -> src_offset , __entry -> target_fid , __entry -> target_offset , __entry -> len )
300+ )
301+
302+ #define DEFINE_SMB3_COPY_RANGE_DONE_EVENT (name ) \
303+ DEFINE_EVENT(smb3_copy_range_done_class, smb3_##name, \
304+ TP_PROTO(unsigned int xid, \
305+ __u64 src_fid, \
306+ __u64 target_fid, \
307+ __u32 tid, \
308+ __u64 sesid, \
309+ __u64 src_offset, \
310+ __u64 target_offset, \
311+ __u32 len), \
312+ TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len))
313+
314+ DEFINE_SMB3_COPY_RANGE_DONE_EVENT (copychunk_enter );
315+ DEFINE_SMB3_COPY_RANGE_DONE_EVENT (clone_enter );
316+ DEFINE_SMB3_COPY_RANGE_DONE_EVENT (copychunk_done );
317+ DEFINE_SMB3_COPY_RANGE_DONE_EVENT (clone_done );
318+
209319
210320/* For logging successful read or write */
211321DECLARE_EVENT_CLASS (smb3_rw_done_class ,
@@ -1171,6 +1281,46 @@ DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
11711281
11721282DEFINE_SMB3_CONNECT_ERR_EVENT (connect_err );
11731283
1284+ DECLARE_EVENT_CLASS (smb3_sess_setup_err_class ,
1285+ TP_PROTO (char * hostname , char * username , __u64 conn_id ,
1286+ const struct __kernel_sockaddr_storage * dst_addr , int rc ),
1287+ TP_ARGS (hostname , username , conn_id , dst_addr , rc ),
1288+ TP_STRUCT__entry (
1289+ __string (hostname , hostname )
1290+ __string (username , username )
1291+ __field (__u64 , conn_id )
1292+ __array (__u8 , dst_addr , sizeof (struct sockaddr_storage ))
1293+ __field (int , rc )
1294+ ),
1295+ TP_fast_assign (
1296+ struct sockaddr_storage * pss = NULL ;
1297+
1298+ __entry -> conn_id = conn_id ;
1299+ __entry -> rc = rc ;
1300+ pss = (struct sockaddr_storage * )__entry -> dst_addr ;
1301+ * pss = * dst_addr ;
1302+ __assign_str (hostname );
1303+ __assign_str (username );
1304+ ),
1305+ TP_printk ("rc=%d user=%s conn_id=0x%llx server=%s addr=%pISpsfc" ,
1306+ __entry -> rc ,
1307+ __get_str (username ),
1308+ __entry -> conn_id ,
1309+ __get_str (hostname ),
1310+ __entry -> dst_addr )
1311+ )
1312+
1313+ #define DEFINE_SMB3_SES_SETUP_ERR_EVENT (name ) \
1314+ DEFINE_EVENT(smb3_sess_setup_err_class, smb3_##name, \
1315+ TP_PROTO(char *hostname, \
1316+ char *username, \
1317+ __u64 conn_id, \
1318+ const struct __kernel_sockaddr_storage *addr, \
1319+ int rc), \
1320+ TP_ARGS(hostname, username, conn_id, addr, rc))
1321+
1322+ DEFINE_SMB3_SES_SETUP_ERR_EVENT (key_expired );
1323+
11741324DECLARE_EVENT_CLASS (smb3_reconnect_class ,
11751325TP_PROTO (__u64 currmid ,
11761326__u64 conn_id ,
0 commit comments