Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2018, Microsoft Corporation.
4 *
5 * Author(s): Steve French <stfrench@microsoft.com>
6 *
7 * Please use this 3-part article as a reference for writing new tracepoints:
8 * https://lwn.net/Articles/379903/
9 */
10#undef TRACE_SYSTEM
11#define TRACE_SYSTEM cifs
12
13#if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
14#define _CIFS_TRACE_H
15
16#include <linux/tracepoint.h>
17#include <linux/net.h>
18#include <linux/inet.h>
19
20/*
21 * Specify enums for tracing information.
22 */
23#define smb_eio_traces \
24 EM(smb_eio_trace_compress_copy, "compress_copy") \
25 EM(smb_eio_trace_copychunk_inv_rsp, "copychunk_inv_rsp") \
26 EM(smb_eio_trace_copychunk_overcopy_b, "copychunk_overcopy_b") \
27 EM(smb_eio_trace_copychunk_overcopy_c, "copychunk_overcopy_c") \
28 EM(smb_eio_trace_create_rsp_too_small, "create_rsp_too_small") \
29 EM(smb_eio_trace_dfsref_no_rsp, "dfsref_no_rsp") \
30 EM(smb_eio_trace_ea_overrun, "ea_overrun") \
31 EM(smb_eio_trace_extract_will_pin, "extract_will_pin") \
32 EM(smb_eio_trace_forced_shutdown, "forced_shutdown") \
33 EM(smb_eio_trace_getacl_bcc_too_small, "getacl_bcc_too_small") \
34 EM(smb_eio_trace_getcifsacl_param_count, "getcifsacl_param_count") \
35 EM(smb_eio_trace_getdfsrefer_bcc_too_small, "getdfsrefer_bcc_too_small") \
36 EM(smb_eio_trace_getextattr_bcc_too_small, "getextattr_bcc_too_small") \
37 EM(smb_eio_trace_getextattr_inv_size, "getextattr_inv_size") \
38 EM(smb_eio_trace_getsrvinonum_bcc_too_small, "getsrvinonum_bcc_too_small") \
39 EM(smb_eio_trace_getsrvinonum_size, "getsrvinonum_size") \
40 EM(smb_eio_trace_ioctl_data_len, "ioctl_data_len") \
41 EM(smb_eio_trace_ioctl_no_rsp, "ioctl_no_rsp") \
42 EM(smb_eio_trace_ioctl_out_off, "ioctl_out_off") \
43 EM(smb_eio_trace_lock_bcc_too_small, "lock_bcc_too_small") \
44 EM(smb_eio_trace_lock_data_too_small, "lock_data_too_small") \
45 EM(smb_eio_trace_malformed_ksid_key, "malformed_ksid_key") \
46 EM(smb_eio_trace_malformed_sid_key, "malformed_sid_key") \
47 EM(smb_eio_trace_mkdir_no_rsp, "mkdir_no_rsp") \
48 EM(smb_eio_trace_neg_bad_rsplen, "neg_bad_rsplen") \
49 EM(smb_eio_trace_neg_decode_token, "neg_decode_token") \
50 EM(smb_eio_trace_neg_info_caps, "neg_info_caps") \
51 EM(smb_eio_trace_neg_info_dialect, "neg_info_dialect") \
52 EM(smb_eio_trace_neg_info_fail, "neg_info_fail") \
53 EM(smb_eio_trace_neg_info_sec_mode, "neg_info_sec_mode") \
54 EM(smb_eio_trace_neg_inval_dialect, "neg_inval_dialect") \
55 EM(smb_eio_trace_neg_no_crypt_key, "neg_no_crypt_key") \
56 EM(smb_eio_trace_neg_sec_blob_too_small, "neg_sec_blob_too_small") \
57 EM(smb_eio_trace_neg_unreq_dialect, "neg_unreq_dialect") \
58 EM(smb_eio_trace_no_auth_key, "no_auth_key") \
59 EM(smb_eio_trace_no_lease_key, "no_lease_key") \
60 EM(smb_eio_trace_not_netfs_writeback, "not_netfs_writeback") \
61 EM(smb_eio_trace_null_pointers, "null_pointers") \
62 EM(smb_eio_trace_oldqfsinfo_bcc_too_small, "oldqfsinfo_bcc_too_small") \
63 EM(smb_eio_trace_pend_del_fail, "pend_del_fail") \
64 EM(smb_eio_trace_qalleas_bcc_too_small, "qalleas_bcc_too_small") \
65 EM(smb_eio_trace_qalleas_ea_overlong, "qalleas_ea_overlong") \
66 EM(smb_eio_trace_qalleas_overlong, "qalleas_overlong") \
67 EM(smb_eio_trace_qfileinfo_bcc_too_small, "qfileinfo_bcc_too_small") \
68 EM(smb_eio_trace_qfileinfo_invalid, "qfileinfo_invalid") \
69 EM(smb_eio_trace_qfsattrinfo_bcc_too_small, "qfsattrinfo_bcc_too_small") \
70 EM(smb_eio_trace_qfsdevinfo_bcc_too_small, "qfsdevinfo_bcc_too_small") \
71 EM(smb_eio_trace_qfsinfo_bcc_too_small, "qfsinfo_bcc_too_small") \
72 EM(smb_eio_trace_qfsposixinfo_bcc_too_small, "qfsposixinfo_bcc_too_small") \
73 EM(smb_eio_trace_qfsunixinfo_bcc_too_small, "qfsunixinfo_bcc_too_small") \
74 EM(smb_eio_trace_qpathinfo_bcc_too_small, "qpathinfo_bcc_too_small") \
75 EM(smb_eio_trace_qpathinfo_invalid, "qpathinfo_invalid") \
76 EM(smb_eio_trace_qreparse_data_area, "qreparse_data_area") \
77 EM(smb_eio_trace_qreparse_rep_datalen, "qreparse_rep_datalen") \
78 EM(smb_eio_trace_qreparse_ret_datalen, "qreparse_ret_datalen") \
79 EM(smb_eio_trace_qreparse_setup_count, "qreparse_setup_count") \
80 EM(smb_eio_trace_qreparse_sizes_wrong, "qreparse_sizes_wrong") \
81 EM(smb_eio_trace_qsym_bcc_too_small, "qsym_bcc_too_small") \
82 EM(smb_eio_trace_read_mid_state_unknown, "read_mid_state_unknown") \
83 EM(smb_eio_trace_read_overlarge, "read_overlarge") \
84 EM(smb_eio_trace_read_rsp_malformed, "read_rsp_malformed") \
85 EM(smb_eio_trace_read_rsp_short, "read_rsp_short") \
86 EM(smb_eio_trace_read_too_far, "read_too_far") \
87 EM(smb_eio_trace_reparse_data_len, "reparse_data_len") \
88 EM(smb_eio_trace_reparse_native_len, "reparse_native_len") \
89 EM(smb_eio_trace_reparse_native_nul, "reparse_native_nul") \
90 EM(smb_eio_trace_reparse_native_sym_len, "reparse_native_sym_len") \
91 EM(smb_eio_trace_reparse_nfs_dev, "reparse_nfs_dev") \
92 EM(smb_eio_trace_reparse_nfs_nul, "reparse_nfs_nul") \
93 EM(smb_eio_trace_reparse_nfs_sockfifo, "reparse_nfs_sockfifo") \
94 EM(smb_eio_trace_reparse_nfs_symbuf, "reparse_nfs_symbuf") \
95 EM(smb_eio_trace_reparse_nfs_too_short, "reparse_nfs_too_short") \
96 EM(smb_eio_trace_reparse_overlong, "reparse_overlong") \
97 EM(smb_eio_trace_reparse_rdlen, "reparse_rdlen") \
98 EM(smb_eio_trace_reparse_wsl_nul, "reparse_wsl_nul") \
99 EM(smb_eio_trace_reparse_wsl_symbuf, "reparse_wsl_symbuf") \
100 EM(smb_eio_trace_reparse_wsl_ver, "reparse_wsl_ver") \
101 EM(smb_eio_trace_rx_b_read_short, "rx_b_read_short") \
102 EM(smb_eio_trace_rx_bad_datalen, "rx_bad_datalen") \
103 EM(smb_eio_trace_rx_both_buf, "rx_both_buf") \
104 EM(smb_eio_trace_rx_calc_len_too_big, "rx_calc_len_too_big") \
105 EM(smb_eio_trace_rx_check_rsp, "rx_check_rsp") \
106 EM(smb_eio_trace_rx_copy_to_iter, "rx_copy_to_iter") \
107 EM(smb_eio_trace_rx_insuff_res, "rx_insuff_res") \
108 EM(smb_eio_trace_rx_inv_bcc, "rx_inv_bcc") \
109 EM(smb_eio_trace_rx_mid_unready, "rx_mid_unready") \
110 EM(smb_eio_trace_rx_neg_sess_resp, "rx_neg_sess_resp") \
111 EM(smb_eio_trace_rx_overlong, "rx_overlong") \
112 EM(smb_eio_trace_rx_overpage, "rx_overpage") \
113 EM(smb_eio_trace_rx_pos_sess_resp, "rx_pos_sess_resp") \
114 EM(smb_eio_trace_rx_rfc1002_magic, "rx_rfc1002_magic") \
115 EM(smb_eio_trace_rx_sync_mid_invalid, "rx_sync_mid_invalid") \
116 EM(smb_eio_trace_rx_sync_mid_malformed, "rx_sync_mid_malformed") \
117 EM(smb_eio_trace_rx_too_short, "rx_too_short") \
118 EM(smb_eio_trace_rx_trans2_extract, "rx_trans2_extract") \
119 EM(smb_eio_trace_rx_unknown_resp, "rx_unknown_resp") \
120 EM(smb_eio_trace_rx_unspec_error, "rx_unspec_error") \
121 EM(smb_eio_trace_sess_buf_off, "sess_buf_off") \
122 EM(smb_eio_trace_sess_exiting, "sess_exiting") \
123 EM(smb_eio_trace_sess_krb_wcc, "sess_krb_wcc") \
124 EM(smb_eio_trace_sess_nl2_wcc, "sess_nl2_wcc") \
125 EM(smb_eio_trace_sess_rawnl_auth_wcc, "sess_rawnl_auth_wcc") \
126 EM(smb_eio_trace_sess_rawnl_neg_wcc, "sess_rawnl_neg_wcc") \
127 EM(smb_eio_trace_short_symlink_write, "short_symlink_write") \
128 EM(smb_eio_trace_sid_too_many_auth, "sid_too_many_auth") \
129 EM(smb_eio_trace_sig_data_too_small, "sig_data_too_small") \
130 EM(smb_eio_trace_sig_iter, "sig_iter") \
131 EM(smb_eio_trace_smb1_received_error, "smb1_received_error") \
132 EM(smb_eio_trace_smb2_received_error, "smb2_received_error") \
133 EM(smb_eio_trace_sym_slash, "sym_slash") \
134 EM(smb_eio_trace_sym_target_len, "sym_target_len") \
135 EM(smb_eio_trace_symlink_file_size, "symlink_file_size") \
136 EM(smb_eio_trace_tdis_in_reconnect, "tdis_in_reconnect") \
137 EM(smb_eio_trace_tx_chained_async, "tx_chained_async") \
138 EM(smb_eio_trace_tx_compress_failed, "tx_compress_failed") \
139 EM(smb_eio_trace_tx_copy_iter_to_buf, "tx_copy_iter_to_buf") \
140 EM(smb_eio_trace_tx_copy_to_buf, "tx_copy_to_buf") \
141 EM(smb_eio_trace_tx_max_compound, "tx_max_compound") \
142 EM(smb_eio_trace_tx_miscopy_to_buf, "tx_miscopy_to_buf") \
143 EM(smb_eio_trace_tx_need_transform, "tx_need_transform") \
144 EM(smb_eio_trace_tx_too_long, "sr_too_long") \
145 EM(smb_eio_trace_unixqfileinfo_bcc_too_small, "unixqfileinfo_bcc_too_small") \
146 EM(smb_eio_trace_unixqpathinfo_bcc_too_small, "unixqpathinfo_bcc_too_small") \
147 EM(smb_eio_trace_user_iter, "user_iter") \
148 EM(smb_eio_trace_write_bad_buf_type, "write_bad_buf_type") \
149 EM(smb_eio_trace_write_mid_state_unknown, "write_mid_state_unknown") \
150 EM(smb_eio_trace_write_rsp_malformed, "write_rsp_malformed") \
151 E_(smb_eio_trace_write_too_far, "write_too_far")
152
153#define smb3_rw_credits_traces \
154 EM(cifs_trace_rw_credits_call_readv_adjust, "rd-call-adj") \
155 EM(cifs_trace_rw_credits_call_writev_adjust, "wr-call-adj") \
156 EM(cifs_trace_rw_credits_free_subreq, "free-subreq") \
157 EM(cifs_trace_rw_credits_issue_read_adjust, "rd-issu-adj") \
158 EM(cifs_trace_rw_credits_issue_write_adjust, "wr-issu-adj") \
159 EM(cifs_trace_rw_credits_no_adjust_up, "no-adj-up ") \
160 EM(cifs_trace_rw_credits_old_session, "old-session") \
161 EM(cifs_trace_rw_credits_read_response_add, "rd-resp-add") \
162 EM(cifs_trace_rw_credits_read_response_clear, "rd-resp-clr") \
163 EM(cifs_trace_rw_credits_read_resubmit, "rd-resubmit") \
164 EM(cifs_trace_rw_credits_read_submit, "rd-submit ") \
165 EM(cifs_trace_rw_credits_write_prepare, "wr-prepare ") \
166 EM(cifs_trace_rw_credits_write_response_add, "wr-resp-add") \
167 EM(cifs_trace_rw_credits_write_response_clear, "wr-resp-clr") \
168 E_(cifs_trace_rw_credits_zero_in_flight, "ZERO-IN-FLT")
169
170#define smb3_tcon_ref_traces \
171 EM(netfs_trace_tcon_ref_dec_dfs_refer, "DEC DfsRef") \
172 EM(netfs_trace_tcon_ref_free, "FRE ") \
173 EM(netfs_trace_tcon_ref_free_fail, "FRE Fail ") \
174 EM(netfs_trace_tcon_ref_free_ipc, "FRE Ipc ") \
175 EM(netfs_trace_tcon_ref_free_ipc_fail, "FRE Ipc-F ") \
176 EM(netfs_trace_tcon_ref_free_reconnect_server, "FRE Reconn") \
177 EM(netfs_trace_tcon_ref_get_cached_laundromat, "GET Ch-Lau") \
178 EM(netfs_trace_tcon_ref_get_cached_lease_break, "GET Ch-Lea") \
179 EM(netfs_trace_tcon_ref_get_cancelled_close, "GET Cn-Cls") \
180 EM(netfs_trace_tcon_ref_get_dfs_refer, "GET DfsRef") \
181 EM(netfs_trace_tcon_ref_get_find, "GET Find ") \
182 EM(netfs_trace_tcon_ref_get_find_sess_tcon, "GET FndSes") \
183 EM(netfs_trace_tcon_ref_get_reconnect_server, "GET Reconn") \
184 EM(netfs_trace_tcon_ref_new, "NEW ") \
185 EM(netfs_trace_tcon_ref_new_ipc, "NEW Ipc ") \
186 EM(netfs_trace_tcon_ref_new_reconnect_server, "NEW Reconn") \
187 EM(netfs_trace_tcon_ref_put_cached_close, "PUT Ch-Cls") \
188 EM(netfs_trace_tcon_ref_put_cancelled_close, "PUT Cn-Cls") \
189 EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \
190 EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \
191 EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \
192 EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \
193 EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \
194 EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \
195 EM(netfs_trace_tcon_ref_see_fscache_collision, "SEE FV-CO!") \
196 EM(netfs_trace_tcon_ref_see_fscache_okay, "SEE FV-Ok ") \
197 EM(netfs_trace_tcon_ref_see_fscache_relinq, "SEE FV-Rlq") \
198 E_(netfs_trace_tcon_ref_see_umount, "SEE Umount")
199
200#undef EM
201#undef E_
202
203/*
204 * Define those tracing enums.
205 */
206#ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
207#define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
208
209#define EM(a, b) a,
210#define E_(a, b) a
211
212enum smb_eio_trace { smb_eio_traces } __mode(byte);
213enum smb3_rw_credits_trace { smb3_rw_credits_traces } __mode(byte);
214enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte);
215
216#undef EM
217#undef E_
218#endif
219
220/*
221 * Export enum symbols via userspace.
222 */
223#define EM(a, b) TRACE_DEFINE_ENUM(a);
224#define E_(a, b) TRACE_DEFINE_ENUM(a);
225
226smb_eio_traces;
227smb3_rw_credits_traces;
228smb3_tcon_ref_traces;
229
230#undef EM
231#undef E_
232
233/*
234 * Now redefine the EM() and E_() macros to map the enums to the strings that
235 * will be printed in the output.
236 */
237#define EM(a, b) { a, b },
238#define E_(a, b) { a, b }
239
240/* For logging errors in read or write */
241DECLARE_EVENT_CLASS(smb3_rw_err_class,
242 TP_PROTO(unsigned int rreq_debug_id,
243 unsigned int rreq_debug_index,
244 unsigned int xid,
245 __u64 fid,
246 __u32 tid,
247 __u64 sesid,
248 __u64 offset,
249 __u32 len,
250 int rc),
251 TP_ARGS(rreq_debug_id, rreq_debug_index,
252 xid, fid, tid, sesid, offset, len, rc),
253 TP_STRUCT__entry(
254 __field(unsigned int, rreq_debug_id)
255 __field(unsigned int, rreq_debug_index)
256 __field(unsigned int, xid)
257 __field(__u64, fid)
258 __field(__u32, tid)
259 __field(__u64, sesid)
260 __field(__u64, offset)
261 __field(__u32, len)
262 __field(int, rc)
263 ),
264 TP_fast_assign(
265 __entry->rreq_debug_id = rreq_debug_id;
266 __entry->rreq_debug_index = rreq_debug_index;
267 __entry->xid = xid;
268 __entry->fid = fid;
269 __entry->tid = tid;
270 __entry->sesid = sesid;
271 __entry->offset = offset;
272 __entry->len = len;
273 __entry->rc = rc;
274 ),
275 TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
276 __entry->rreq_debug_id, __entry->rreq_debug_index,
277 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
278 __entry->offset, __entry->len, __entry->rc)
279)
280
281#define DEFINE_SMB3_RW_ERR_EVENT(name) \
282DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \
283 TP_PROTO(unsigned int rreq_debug_id, \
284 unsigned int rreq_debug_index, \
285 unsigned int xid, \
286 __u64 fid, \
287 __u32 tid, \
288 __u64 sesid, \
289 __u64 offset, \
290 __u32 len, \
291 int rc), \
292 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
293
294DEFINE_SMB3_RW_ERR_EVENT(read_err);
295DEFINE_SMB3_RW_ERR_EVENT(write_err);
296
297/* For logging errors in other file I/O ops */
298DECLARE_EVENT_CLASS(smb3_other_err_class,
299 TP_PROTO(unsigned int xid,
300 __u64 fid,
301 __u32 tid,
302 __u64 sesid,
303 __u64 offset,
304 __u32 len,
305 int rc),
306 TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
307 TP_STRUCT__entry(
308 __field(unsigned int, xid)
309 __field(__u64, fid)
310 __field(__u32, tid)
311 __field(__u64, sesid)
312 __field(__u64, offset)
313 __field(__u32, len)
314 __field(int, rc)
315 ),
316 TP_fast_assign(
317 __entry->xid = xid;
318 __entry->fid = fid;
319 __entry->tid = tid;
320 __entry->sesid = sesid;
321 __entry->offset = offset;
322 __entry->len = len;
323 __entry->rc = rc;
324 ),
325 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
326 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
327 __entry->offset, __entry->len, __entry->rc)
328)
329
330#define DEFINE_SMB3_OTHER_ERR_EVENT(name) \
331DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
332 TP_PROTO(unsigned int xid, \
333 __u64 fid, \
334 __u32 tid, \
335 __u64 sesid, \
336 __u64 offset, \
337 __u32 len, \
338 int rc), \
339 TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
340
341DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err);
342DEFINE_SMB3_OTHER_ERR_EVENT(zero_err);
343DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err);
344
345/*
346 * For logging errors in reflink and copy_range ops e.g. smb2_copychunk_range
347 * and smb2_duplicate_extents
348 */
349DECLARE_EVENT_CLASS(smb3_copy_range_err_class,
350 TP_PROTO(unsigned int xid,
351 __u64 src_fid,
352 __u64 target_fid,
353 __u32 tid,
354 __u64 sesid,
355 __u64 src_offset,
356 __u64 target_offset,
357 __u32 len,
358 int rc),
359 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc),
360 TP_STRUCT__entry(
361 __field(unsigned int, xid)
362 __field(__u64, src_fid)
363 __field(__u64, target_fid)
364 __field(__u32, tid)
365 __field(__u64, sesid)
366 __field(__u64, src_offset)
367 __field(__u64, target_offset)
368 __field(__u32, len)
369 __field(int, rc)
370 ),
371 TP_fast_assign(
372 __entry->xid = xid;
373 __entry->src_fid = src_fid;
374 __entry->target_fid = target_fid;
375 __entry->tid = tid;
376 __entry->sesid = sesid;
377 __entry->src_offset = src_offset;
378 __entry->target_offset = target_offset;
379 __entry->len = len;
380 __entry->rc = rc;
381 ),
382 TP_printk("xid=%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",
383 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid,
384 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len, __entry->rc)
385)
386
387#define DEFINE_SMB3_COPY_RANGE_ERR_EVENT(name) \
388DEFINE_EVENT(smb3_copy_range_err_class, smb3_##name, \
389 TP_PROTO(unsigned int xid, \
390 __u64 src_fid, \
391 __u64 target_fid, \
392 __u32 tid, \
393 __u64 sesid, \
394 __u64 src_offset, \
395 __u64 target_offset, \
396 __u32 len, \
397 int rc), \
398 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc))
399
400DEFINE_SMB3_COPY_RANGE_ERR_EVENT(clone_err);
401DEFINE_SMB3_COPY_RANGE_ERR_EVENT(copychunk_err);
402
403DECLARE_EVENT_CLASS(smb3_copy_range_done_class,
404 TP_PROTO(unsigned int xid,
405 __u64 src_fid,
406 __u64 target_fid,
407 __u32 tid,
408 __u64 sesid,
409 __u64 src_offset,
410 __u64 target_offset,
411 __u32 len),
412 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len),
413 TP_STRUCT__entry(
414 __field(unsigned int, xid)
415 __field(__u64, src_fid)
416 __field(__u64, target_fid)
417 __field(__u32, tid)
418 __field(__u64, sesid)
419 __field(__u64, src_offset)
420 __field(__u64, target_offset)
421 __field(__u32, len)
422 ),
423 TP_fast_assign(
424 __entry->xid = xid;
425 __entry->src_fid = src_fid;
426 __entry->target_fid = target_fid;
427 __entry->tid = tid;
428 __entry->sesid = sesid;
429 __entry->src_offset = src_offset;
430 __entry->target_offset = target_offset;
431 __entry->len = len;
432 ),
433 TP_printk("xid=%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",
434 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid,
435 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len)
436)
437
438#define DEFINE_SMB3_COPY_RANGE_DONE_EVENT(name) \
439DEFINE_EVENT(smb3_copy_range_done_class, smb3_##name, \
440 TP_PROTO(unsigned int xid, \
441 __u64 src_fid, \
442 __u64 target_fid, \
443 __u32 tid, \
444 __u64 sesid, \
445 __u64 src_offset, \
446 __u64 target_offset, \
447 __u32 len), \
448 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len))
449
450DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_enter);
451DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_enter);
452DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_done);
453DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_done);
454
455
456/* For logging successful read or write */
457DECLARE_EVENT_CLASS(smb3_rw_done_class,
458 TP_PROTO(unsigned int rreq_debug_id,
459 unsigned int rreq_debug_index,
460 unsigned int xid,
461 __u64 fid,
462 __u32 tid,
463 __u64 sesid,
464 __u64 offset,
465 __u32 len),
466 TP_ARGS(rreq_debug_id, rreq_debug_index,
467 xid, fid, tid, sesid, offset, len),
468 TP_STRUCT__entry(
469 __field(unsigned int, rreq_debug_id)
470 __field(unsigned int, rreq_debug_index)
471 __field(unsigned int, xid)
472 __field(__u64, fid)
473 __field(__u32, tid)
474 __field(__u64, sesid)
475 __field(__u64, offset)
476 __field(__u32, len)
477 ),
478 TP_fast_assign(
479 __entry->rreq_debug_id = rreq_debug_id;
480 __entry->rreq_debug_index = rreq_debug_index;
481 __entry->xid = xid;
482 __entry->fid = fid;
483 __entry->tid = tid;
484 __entry->sesid = sesid;
485 __entry->offset = offset;
486 __entry->len = len;
487 ),
488 TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
489 __entry->rreq_debug_id, __entry->rreq_debug_index,
490 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
491 __entry->offset, __entry->len)
492)
493
494#define DEFINE_SMB3_RW_DONE_EVENT(name) \
495DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \
496 TP_PROTO(unsigned int rreq_debug_id, \
497 unsigned int rreq_debug_index, \
498 unsigned int xid, \
499 __u64 fid, \
500 __u32 tid, \
501 __u64 sesid, \
502 __u64 offset, \
503 __u32 len), \
504 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len))
505
506DEFINE_SMB3_RW_DONE_EVENT(read_enter);
507DEFINE_SMB3_RW_DONE_EVENT(read_done);
508DEFINE_SMB3_RW_DONE_EVENT(write_enter);
509DEFINE_SMB3_RW_DONE_EVENT(write_done);
510
511/* For logging successful other op */
512DECLARE_EVENT_CLASS(smb3_other_done_class,
513 TP_PROTO(unsigned int xid,
514 __u64 fid,
515 __u32 tid,
516 __u64 sesid,
517 __u64 offset,
518 __u32 len),
519 TP_ARGS(xid, fid, tid, sesid, offset, len),
520 TP_STRUCT__entry(
521 __field(unsigned int, xid)
522 __field(__u64, fid)
523 __field(__u32, tid)
524 __field(__u64, sesid)
525 __field(__u64, offset)
526 __field(__u32, len)
527 ),
528 TP_fast_assign(
529 __entry->xid = xid;
530 __entry->fid = fid;
531 __entry->tid = tid;
532 __entry->sesid = sesid;
533 __entry->offset = offset;
534 __entry->len = len;
535 ),
536 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
537 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
538 __entry->offset, __entry->len)
539)
540
541#define DEFINE_SMB3_OTHER_DONE_EVENT(name) \
542DEFINE_EVENT(smb3_other_done_class, smb3_##name, \
543 TP_PROTO(unsigned int xid, \
544 __u64 fid, \
545 __u32 tid, \
546 __u64 sesid, \
547 __u64 offset, \
548 __u32 len), \
549 TP_ARGS(xid, fid, tid, sesid, offset, len))
550
551DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter);
552DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter);
553DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter);
554DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done);
555DEFINE_SMB3_OTHER_DONE_EVENT(zero_done);
556DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done);
557
558/* For logging successful set EOF (truncate) */
559DECLARE_EVENT_CLASS(smb3_eof_class,
560 TP_PROTO(unsigned int xid,
561 __u64 fid,
562 __u32 tid,
563 __u64 sesid,
564 __u64 offset),
565 TP_ARGS(xid, fid, tid, sesid, offset),
566 TP_STRUCT__entry(
567 __field(unsigned int, xid)
568 __field(__u64, fid)
569 __field(__u32, tid)
570 __field(__u64, sesid)
571 __field(__u64, offset)
572 ),
573 TP_fast_assign(
574 __entry->xid = xid;
575 __entry->fid = fid;
576 __entry->tid = tid;
577 __entry->sesid = sesid;
578 __entry->offset = offset;
579 ),
580 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
581 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
582 __entry->offset)
583)
584
585#define DEFINE_SMB3_EOF_EVENT(name) \
586DEFINE_EVENT(smb3_eof_class, smb3_##name, \
587 TP_PROTO(unsigned int xid, \
588 __u64 fid, \
589 __u32 tid, \
590 __u64 sesid, \
591 __u64 offset), \
592 TP_ARGS(xid, fid, tid, sesid, offset))
593
594DEFINE_SMB3_EOF_EVENT(set_eof);
595
596/*
597 * For handle based calls other than read and write, and get/set info
598 */
599DECLARE_EVENT_CLASS(smb3_fd_class,
600 TP_PROTO(unsigned int xid,
601 __u64 fid,
602 __u32 tid,
603 __u64 sesid),
604 TP_ARGS(xid, fid, tid, sesid),
605 TP_STRUCT__entry(
606 __field(unsigned int, xid)
607 __field(__u64, fid)
608 __field(__u32, tid)
609 __field(__u64, sesid)
610 ),
611 TP_fast_assign(
612 __entry->xid = xid;
613 __entry->fid = fid;
614 __entry->tid = tid;
615 __entry->sesid = sesid;
616 ),
617 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx",
618 __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
619)
620
621#define DEFINE_SMB3_FD_EVENT(name) \
622DEFINE_EVENT(smb3_fd_class, smb3_##name, \
623 TP_PROTO(unsigned int xid, \
624 __u64 fid, \
625 __u32 tid, \
626 __u64 sesid), \
627 TP_ARGS(xid, fid, tid, sesid))
628
629DEFINE_SMB3_FD_EVENT(flush_enter);
630DEFINE_SMB3_FD_EVENT(flush_done);
631DEFINE_SMB3_FD_EVENT(close_enter);
632DEFINE_SMB3_FD_EVENT(close_done);
633DEFINE_SMB3_FD_EVENT(oplock_not_found);
634
635DECLARE_EVENT_CLASS(smb3_fd_err_class,
636 TP_PROTO(unsigned int xid,
637 __u64 fid,
638 __u32 tid,
639 __u64 sesid,
640 int rc),
641 TP_ARGS(xid, fid, tid, sesid, rc),
642 TP_STRUCT__entry(
643 __field(unsigned int, xid)
644 __field(__u64, fid)
645 __field(__u32, tid)
646 __field(__u64, sesid)
647 __field(int, rc)
648 ),
649 TP_fast_assign(
650 __entry->xid = xid;
651 __entry->fid = fid;
652 __entry->tid = tid;
653 __entry->sesid = sesid;
654 __entry->rc = rc;
655 ),
656 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
657 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
658 __entry->rc)
659)
660
661#define DEFINE_SMB3_FD_ERR_EVENT(name) \
662DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
663 TP_PROTO(unsigned int xid, \
664 __u64 fid, \
665 __u32 tid, \
666 __u64 sesid, \
667 int rc), \
668 TP_ARGS(xid, fid, tid, sesid, rc))
669
670DEFINE_SMB3_FD_ERR_EVENT(flush_err);
671DEFINE_SMB3_FD_ERR_EVENT(lock_err);
672DEFINE_SMB3_FD_ERR_EVENT(close_err);
673
674/*
675 * For handle based query/set info calls
676 */
677DECLARE_EVENT_CLASS(smb3_inf_enter_class,
678 TP_PROTO(unsigned int xid,
679 __u64 fid,
680 __u32 tid,
681 __u64 sesid,
682 __u8 infclass,
683 __u32 type),
684 TP_ARGS(xid, fid, tid, sesid, infclass, type),
685 TP_STRUCT__entry(
686 __field(unsigned int, xid)
687 __field(__u64, fid)
688 __field(__u32, tid)
689 __field(__u64, sesid)
690 __field(__u8, infclass)
691 __field(__u32, type)
692 ),
693 TP_fast_assign(
694 __entry->xid = xid;
695 __entry->fid = fid;
696 __entry->tid = tid;
697 __entry->sesid = sesid;
698 __entry->infclass = infclass;
699 __entry->type = type;
700 ),
701 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
702 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
703 __entry->infclass, __entry->type)
704)
705
706#define DEFINE_SMB3_INF_ENTER_EVENT(name) \
707DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \
708 TP_PROTO(unsigned int xid, \
709 __u64 fid, \
710 __u32 tid, \
711 __u64 sesid, \
712 __u8 infclass, \
713 __u32 type), \
714 TP_ARGS(xid, fid, tid, sesid, infclass, type))
715
716DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
717DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
718DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
719DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
720
721DECLARE_EVENT_CLASS(smb3_inf_err_class,
722 TP_PROTO(unsigned int xid,
723 __u64 fid,
724 __u32 tid,
725 __u64 sesid,
726 __u8 infclass,
727 __u32 type,
728 int rc),
729 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
730 TP_STRUCT__entry(
731 __field(unsigned int, xid)
732 __field(__u64, fid)
733 __field(__u32, tid)
734 __field(__u64, sesid)
735 __field(__u8, infclass)
736 __field(__u32, type)
737 __field(int, rc)
738 ),
739 TP_fast_assign(
740 __entry->xid = xid;
741 __entry->fid = fid;
742 __entry->tid = tid;
743 __entry->sesid = sesid;
744 __entry->infclass = infclass;
745 __entry->type = type;
746 __entry->rc = rc;
747 ),
748 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
749 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
750 __entry->infclass, __entry->type, __entry->rc)
751)
752
753#define DEFINE_SMB3_INF_ERR_EVENT(name) \
754DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
755 TP_PROTO(unsigned int xid, \
756 __u64 fid, \
757 __u32 tid, \
758 __u64 sesid, \
759 __u8 infclass, \
760 __u32 type, \
761 int rc), \
762 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
763
764DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
765DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
766DEFINE_SMB3_INF_ERR_EVENT(notify_err);
767DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
768
769DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
770 TP_PROTO(unsigned int xid,
771 __u32 tid,
772 __u64 sesid,
773 const char *full_path),
774 TP_ARGS(xid, tid, sesid, full_path),
775 TP_STRUCT__entry(
776 __field(unsigned int, xid)
777 __field(__u32, tid)
778 __field(__u64, sesid)
779 __string(path, full_path)
780 ),
781 TP_fast_assign(
782 __entry->xid = xid;
783 __entry->tid = tid;
784 __entry->sesid = sesid;
785 __assign_str(path);
786 ),
787 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
788 __entry->xid, __entry->sesid, __entry->tid,
789 __get_str(path))
790)
791
792#define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \
793DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \
794 TP_PROTO(unsigned int xid, \
795 __u32 tid, \
796 __u64 sesid, \
797 const char *full_path), \
798 TP_ARGS(xid, tid, sesid, full_path))
799
800DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
801DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
802DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
803DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
804DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(unlink_enter);
805DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
806DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
807DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
808DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
809DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_wsl_ea_compound_enter);
810DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
811DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
812DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
813
814DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
815 TP_PROTO(unsigned int xid,
816 __u32 tid,
817 __u64 sesid),
818 TP_ARGS(xid, tid, sesid),
819 TP_STRUCT__entry(
820 __field(unsigned int, xid)
821 __field(__u32, tid)
822 __field(__u64, sesid)
823 ),
824 TP_fast_assign(
825 __entry->xid = xid;
826 __entry->tid = tid;
827 __entry->sesid = sesid;
828 ),
829 TP_printk("xid=%u sid=0x%llx tid=0x%x",
830 __entry->xid, __entry->sesid, __entry->tid)
831)
832
833#define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \
834DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \
835 TP_PROTO(unsigned int xid, \
836 __u32 tid, \
837 __u64 sesid), \
838 TP_ARGS(xid, tid, sesid))
839
840DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
841DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
842DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
843DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
844DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(unlink_done);
845DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
846DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
847DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
848DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
849DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
850DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
851DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
852DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
853
854DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
855 TP_PROTO(unsigned int xid,
856 __u32 tid,
857 __u64 sesid,
858 int rc),
859 TP_ARGS(xid, tid, sesid, rc),
860 TP_STRUCT__entry(
861 __field(unsigned int, xid)
862 __field(__u32, tid)
863 __field(__u64, sesid)
864 __field(int, rc)
865 ),
866 TP_fast_assign(
867 __entry->xid = xid;
868 __entry->tid = tid;
869 __entry->sesid = sesid;
870 __entry->rc = rc;
871 ),
872 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
873 __entry->xid, __entry->sesid, __entry->tid,
874 __entry->rc)
875)
876
877#define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \
878DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \
879 TP_PROTO(unsigned int xid, \
880 __u32 tid, \
881 __u64 sesid, \
882 int rc), \
883 TP_ARGS(xid, tid, sesid, rc))
884
885DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
886DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
887DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
888DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
889DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(unlink_err);
890DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
891DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
892DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
893DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
894DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
895DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
896DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
897DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
898
899/*
900 * For logging SMB3 Status code and Command for responses which return errors
901 */
902DECLARE_EVENT_CLASS(smb3_cmd_err_class,
903 TP_PROTO(__u32 tid,
904 __u64 sesid,
905 __u16 cmd,
906 __u64 mid,
907 __u32 status,
908 int rc),
909 TP_ARGS(tid, sesid, cmd, mid, status, rc),
910 TP_STRUCT__entry(
911 __field(__u32, tid)
912 __field(__u64, sesid)
913 __field(__u16, cmd)
914 __field(__u64, mid)
915 __field(__u32, status)
916 __field(int, rc)
917 ),
918 TP_fast_assign(
919 __entry->tid = tid;
920 __entry->sesid = sesid;
921 __entry->cmd = cmd;
922 __entry->mid = mid;
923 __entry->status = status;
924 __entry->rc = rc;
925 ),
926 TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
927 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
928 __entry->status, __entry->rc)
929)
930
931#define DEFINE_SMB3_CMD_ERR_EVENT(name) \
932DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
933 TP_PROTO(__u32 tid, \
934 __u64 sesid, \
935 __u16 cmd, \
936 __u64 mid, \
937 __u32 status, \
938 int rc), \
939 TP_ARGS(tid, sesid, cmd, mid, status, rc))
940
941DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
942
943DECLARE_EVENT_CLASS(smb3_cmd_done_class,
944 TP_PROTO(__u32 tid,
945 __u64 sesid,
946 __u16 cmd,
947 __u64 mid),
948 TP_ARGS(tid, sesid, cmd, mid),
949 TP_STRUCT__entry(
950 __field(__u32, tid)
951 __field(__u64, sesid)
952 __field(__u16, cmd)
953 __field(__u64, mid)
954 ),
955 TP_fast_assign(
956 __entry->tid = tid;
957 __entry->sesid = sesid;
958 __entry->cmd = cmd;
959 __entry->mid = mid;
960 ),
961 TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu",
962 __entry->sesid, __entry->tid,
963 __entry->cmd, __entry->mid)
964)
965
966#define DEFINE_SMB3_CMD_DONE_EVENT(name) \
967DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
968 TP_PROTO(__u32 tid, \
969 __u64 sesid, \
970 __u16 cmd, \
971 __u64 mid), \
972 TP_ARGS(tid, sesid, cmd, mid))
973
974DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
975DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
976DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
977
978DECLARE_EVENT_CLASS(smb3_mid_class,
979 TP_PROTO(__u16 cmd,
980 __u64 mid,
981 __u32 pid,
982 unsigned long when_sent,
983 unsigned long when_received),
984 TP_ARGS(cmd, mid, pid, when_sent, when_received),
985 TP_STRUCT__entry(
986 __field(__u16, cmd)
987 __field(__u64, mid)
988 __field(__u32, pid)
989 __field(unsigned long, when_sent)
990 __field(unsigned long, when_received)
991 ),
992 TP_fast_assign(
993 __entry->cmd = cmd;
994 __entry->mid = mid;
995 __entry->pid = pid;
996 __entry->when_sent = when_sent;
997 __entry->when_received = when_received;
998 ),
999 TP_printk("cmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
1000 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
1001 __entry->when_received)
1002)
1003
1004#define DEFINE_SMB3_MID_EVENT(name) \
1005DEFINE_EVENT(smb3_mid_class, smb3_##name, \
1006 TP_PROTO(__u16 cmd, \
1007 __u64 mid, \
1008 __u32 pid, \
1009 unsigned long when_sent, \
1010 unsigned long when_received), \
1011 TP_ARGS(cmd, mid, pid, when_sent, when_received))
1012
1013DEFINE_SMB3_MID_EVENT(slow_rsp);
1014
1015DECLARE_EVENT_CLASS(smb3_exit_err_class,
1016 TP_PROTO(unsigned int xid,
1017 const char *func_name,
1018 int rc),
1019 TP_ARGS(xid, func_name, rc),
1020 TP_STRUCT__entry(
1021 __field(unsigned int, xid)
1022 __string(func_name, func_name)
1023 __field(int, rc)
1024 ),
1025 TP_fast_assign(
1026 __entry->xid = xid;
1027 __assign_str(func_name);
1028 __entry->rc = rc;
1029 ),
1030 TP_printk("%s: xid=%u rc=%d",
1031 __get_str(func_name), __entry->xid, __entry->rc)
1032)
1033
1034#define DEFINE_SMB3_EXIT_ERR_EVENT(name) \
1035DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
1036 TP_PROTO(unsigned int xid, \
1037 const char *func_name, \
1038 int rc), \
1039 TP_ARGS(xid, func_name, rc))
1040
1041DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
1042
1043
1044DECLARE_EVENT_CLASS(smb3_sync_err_class,
1045 TP_PROTO(unsigned long ino,
1046 int rc),
1047 TP_ARGS(ino, rc),
1048 TP_STRUCT__entry(
1049 __field(unsigned long, ino)
1050 __field(int, rc)
1051 ),
1052 TP_fast_assign(
1053 __entry->ino = ino;
1054 __entry->rc = rc;
1055 ),
1056 TP_printk("ino=%lu rc=%d",
1057 __entry->ino, __entry->rc)
1058)
1059
1060#define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
1061DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
1062 TP_PROTO(unsigned long ino, \
1063 int rc), \
1064 TP_ARGS(ino, rc))
1065
1066DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
1067DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
1068
1069
1070DECLARE_EVENT_CLASS(smb3_enter_exit_class,
1071 TP_PROTO(unsigned int xid,
1072 const char *func_name),
1073 TP_ARGS(xid, func_name),
1074 TP_STRUCT__entry(
1075 __field(unsigned int, xid)
1076 __string(func_name, func_name)
1077 ),
1078 TP_fast_assign(
1079 __entry->xid = xid;
1080 __assign_str(func_name);
1081 ),
1082 TP_printk("%s: xid=%u",
1083 __get_str(func_name), __entry->xid)
1084)
1085
1086#define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \
1087DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \
1088 TP_PROTO(unsigned int xid, \
1089 const char *func_name), \
1090 TP_ARGS(xid, func_name))
1091
1092DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
1093DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
1094
1095/*
1096 * For SMB2/SMB3 tree connect
1097 */
1098
1099DECLARE_EVENT_CLASS(smb3_tcon_class,
1100 TP_PROTO(unsigned int xid,
1101 __u32 tid,
1102 __u64 sesid,
1103 const char *unc_name,
1104 int rc),
1105 TP_ARGS(xid, tid, sesid, unc_name, rc),
1106 TP_STRUCT__entry(
1107 __field(unsigned int, xid)
1108 __field(__u32, tid)
1109 __field(__u64, sesid)
1110 __string(name, unc_name)
1111 __field(int, rc)
1112 ),
1113 TP_fast_assign(
1114 __entry->xid = xid;
1115 __entry->tid = tid;
1116 __entry->sesid = sesid;
1117 __assign_str(name);
1118 __entry->rc = rc;
1119 ),
1120 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
1121 __entry->xid, __entry->sesid, __entry->tid,
1122 __get_str(name), __entry->rc)
1123)
1124
1125#define DEFINE_SMB3_TCON_EVENT(name) \
1126DEFINE_EVENT(smb3_tcon_class, smb3_##name, \
1127 TP_PROTO(unsigned int xid, \
1128 __u32 tid, \
1129 __u64 sesid, \
1130 const char *unc_name, \
1131 int rc), \
1132 TP_ARGS(xid, tid, sesid, unc_name, rc))
1133
1134DEFINE_SMB3_TCON_EVENT(tcon);
1135DEFINE_SMB3_TCON_EVENT(qfs_done);
1136
1137/*
1138 * For smb2/smb3 open (including create and mkdir) calls
1139 */
1140
1141DECLARE_EVENT_CLASS(smb3_open_enter_class,
1142 TP_PROTO(unsigned int xid,
1143 __u32 tid,
1144 __u64 sesid,
1145 const char *full_path,
1146 int create_options,
1147 int desired_access),
1148 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
1149 TP_STRUCT__entry(
1150 __field(unsigned int, xid)
1151 __field(__u32, tid)
1152 __field(__u64, sesid)
1153 __string(path, full_path)
1154 __field(int, create_options)
1155 __field(int, desired_access)
1156 ),
1157 TP_fast_assign(
1158 __entry->xid = xid;
1159 __entry->tid = tid;
1160 __entry->sesid = sesid;
1161 __assign_str(path);
1162 __entry->create_options = create_options;
1163 __entry->desired_access = desired_access;
1164 ),
1165 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
1166 __entry->xid, __entry->sesid, __entry->tid, __get_str(path),
1167 __entry->create_options, __entry->desired_access)
1168)
1169
1170#define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \
1171DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \
1172 TP_PROTO(unsigned int xid, \
1173 __u32 tid, \
1174 __u64 sesid, \
1175 const char *full_path, \
1176 int create_options, \
1177 int desired_access), \
1178 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
1179
1180DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
1181DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
1182
1183DECLARE_EVENT_CLASS(smb3_open_err_class,
1184 TP_PROTO(unsigned int xid,
1185 __u32 tid,
1186 __u64 sesid,
1187 int create_options,
1188 int desired_access,
1189 int rc),
1190 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
1191 TP_STRUCT__entry(
1192 __field(unsigned int, xid)
1193 __field(__u32, tid)
1194 __field(__u64, sesid)
1195 __field(int, create_options)
1196 __field(int, desired_access)
1197 __field(int, rc)
1198 ),
1199 TP_fast_assign(
1200 __entry->xid = xid;
1201 __entry->tid = tid;
1202 __entry->sesid = sesid;
1203 __entry->create_options = create_options;
1204 __entry->desired_access = desired_access;
1205 __entry->rc = rc;
1206 ),
1207 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
1208 __entry->xid, __entry->sesid, __entry->tid,
1209 __entry->create_options, __entry->desired_access, __entry->rc)
1210)
1211
1212#define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
1213DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
1214 TP_PROTO(unsigned int xid, \
1215 __u32 tid, \
1216 __u64 sesid, \
1217 int create_options, \
1218 int desired_access, \
1219 int rc), \
1220 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
1221
1222DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
1223DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
1224
1225DECLARE_EVENT_CLASS(smb3_open_done_class,
1226 TP_PROTO(unsigned int xid,
1227 __u64 fid,
1228 __u32 tid,
1229 __u64 sesid,
1230 int create_options,
1231 int desired_access),
1232 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
1233 TP_STRUCT__entry(
1234 __field(unsigned int, xid)
1235 __field(__u64, fid)
1236 __field(__u32, tid)
1237 __field(__u64, sesid)
1238 __field(int, create_options)
1239 __field(int, desired_access)
1240 ),
1241 TP_fast_assign(
1242 __entry->xid = xid;
1243 __entry->fid = fid;
1244 __entry->tid = tid;
1245 __entry->sesid = sesid;
1246 __entry->create_options = create_options;
1247 __entry->desired_access = desired_access;
1248 ),
1249 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
1250 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
1251 __entry->create_options, __entry->desired_access)
1252)
1253
1254#define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
1255DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
1256 TP_PROTO(unsigned int xid, \
1257 __u64 fid, \
1258 __u32 tid, \
1259 __u64 sesid, \
1260 int create_options, \
1261 int desired_access), \
1262 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
1263
1264DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
1265DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
1266
1267
1268DECLARE_EVENT_CLASS(smb3_lease_done_class,
1269 TP_PROTO(__u32 lease_state,
1270 __u32 tid,
1271 __u64 sesid,
1272 __u64 lease_key_low,
1273 __u64 lease_key_high),
1274 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
1275 TP_STRUCT__entry(
1276 __field(__u32, lease_state)
1277 __field(__u32, tid)
1278 __field(__u64, sesid)
1279 __field(__u64, lease_key_low)
1280 __field(__u64, lease_key_high)
1281 ),
1282 TP_fast_assign(
1283 __entry->lease_state = lease_state;
1284 __entry->tid = tid;
1285 __entry->sesid = sesid;
1286 __entry->lease_key_low = lease_key_low;
1287 __entry->lease_key_high = lease_key_high;
1288 ),
1289 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
1290 __entry->sesid, __entry->tid, __entry->lease_key_high,
1291 __entry->lease_key_low, __entry->lease_state)
1292)
1293
1294#define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
1295DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
1296 TP_PROTO(__u32 lease_state, \
1297 __u32 tid, \
1298 __u64 sesid, \
1299 __u64 lease_key_low, \
1300 __u64 lease_key_high), \
1301 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
1302
1303DEFINE_SMB3_LEASE_DONE_EVENT(lease_ack_done);
1304/* Tracepoint when a lease break request is received/entered (includes epoch and flags) */
1305DECLARE_EVENT_CLASS(smb3_lease_enter_class,
1306 TP_PROTO(__u32 lease_state,
1307 __u32 flags,
1308 __u16 epoch,
1309 __u32 tid,
1310 __u64 sesid,
1311 __u64 lease_key_low,
1312 __u64 lease_key_high),
1313 TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high),
1314 TP_STRUCT__entry(
1315 __field(__u32, lease_state)
1316 __field(__u32, flags)
1317 __field(__u16, epoch)
1318 __field(__u32, tid)
1319 __field(__u64, sesid)
1320 __field(__u64, lease_key_low)
1321 __field(__u64, lease_key_high)
1322 ),
1323 TP_fast_assign(
1324 __entry->lease_state = lease_state;
1325 __entry->flags = flags;
1326 __entry->epoch = epoch;
1327 __entry->tid = tid;
1328 __entry->sesid = sesid;
1329 __entry->lease_key_low = lease_key_low;
1330 __entry->lease_key_high = lease_key_high;
1331 ),
1332 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x flags=0x%x epoch=%u",
1333 __entry->sesid, __entry->tid, __entry->lease_key_high,
1334 __entry->lease_key_low, __entry->lease_state, __entry->flags, __entry->epoch)
1335)
1336
1337#define DEFINE_SMB3_LEASE_ENTER_EVENT(name) \
1338DEFINE_EVENT(smb3_lease_enter_class, smb3_##name, \
1339 TP_PROTO(__u32 lease_state, \
1340 __u32 flags, \
1341 __u16 epoch, \
1342 __u32 tid, \
1343 __u64 sesid, \
1344 __u64 lease_key_low, \
1345 __u64 lease_key_high), \
1346 TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high))
1347
1348DEFINE_SMB3_LEASE_ENTER_EVENT(lease_break_enter);
1349/* Lease not found: reuse lease_enter payload (includes epoch and flags) */
1350DEFINE_SMB3_LEASE_ENTER_EVENT(lease_not_found);
1351
1352DECLARE_EVENT_CLASS(smb3_lease_err_class,
1353 TP_PROTO(__u32 lease_state,
1354 __u32 tid,
1355 __u64 sesid,
1356 __u64 lease_key_low,
1357 __u64 lease_key_high,
1358 int rc),
1359 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
1360 TP_STRUCT__entry(
1361 __field(__u32, lease_state)
1362 __field(__u32, tid)
1363 __field(__u64, sesid)
1364 __field(__u64, lease_key_low)
1365 __field(__u64, lease_key_high)
1366 __field(int, rc)
1367 ),
1368 TP_fast_assign(
1369 __entry->lease_state = lease_state;
1370 __entry->tid = tid;
1371 __entry->sesid = sesid;
1372 __entry->lease_key_low = lease_key_low;
1373 __entry->lease_key_high = lease_key_high;
1374 __entry->rc = rc;
1375 ),
1376 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
1377 __entry->sesid, __entry->tid, __entry->lease_key_high,
1378 __entry->lease_key_low, __entry->lease_state, __entry->rc)
1379)
1380
1381#define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
1382DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
1383 TP_PROTO(__u32 lease_state, \
1384 __u32 tid, \
1385 __u64 sesid, \
1386 __u64 lease_key_low, \
1387 __u64 lease_key_high, \
1388 int rc), \
1389 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
1390
1391DEFINE_SMB3_LEASE_ERR_EVENT(lease_ack_err);
1392
1393DECLARE_EVENT_CLASS(smb3_connect_class,
1394 TP_PROTO(char *hostname,
1395 __u64 conn_id,
1396 const struct __kernel_sockaddr_storage *dst_addr),
1397 TP_ARGS(hostname, conn_id, dst_addr),
1398 TP_STRUCT__entry(
1399 __string(hostname, hostname)
1400 __field(__u64, conn_id)
1401 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1402 ),
1403 TP_fast_assign(
1404 struct sockaddr_storage *pss = NULL;
1405
1406 __entry->conn_id = conn_id;
1407 pss = (struct sockaddr_storage *)__entry->dst_addr;
1408 *pss = *dst_addr;
1409 __assign_str(hostname);
1410 ),
1411 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1412 __entry->conn_id,
1413 __get_str(hostname),
1414 __entry->dst_addr)
1415)
1416
1417#define DEFINE_SMB3_CONNECT_EVENT(name) \
1418DEFINE_EVENT(smb3_connect_class, smb3_##name, \
1419 TP_PROTO(char *hostname, \
1420 __u64 conn_id, \
1421 const struct __kernel_sockaddr_storage *addr), \
1422 TP_ARGS(hostname, conn_id, addr))
1423
1424DEFINE_SMB3_CONNECT_EVENT(connect_done);
1425DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1426DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
1427
1428DECLARE_EVENT_CLASS(smb3_connect_err_class,
1429 TP_PROTO(char *hostname, __u64 conn_id,
1430 const struct __kernel_sockaddr_storage *dst_addr, int rc),
1431 TP_ARGS(hostname, conn_id, dst_addr, rc),
1432 TP_STRUCT__entry(
1433 __string(hostname, hostname)
1434 __field(__u64, conn_id)
1435 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1436 __field(int, rc)
1437 ),
1438 TP_fast_assign(
1439 struct sockaddr_storage *pss = NULL;
1440
1441 __entry->conn_id = conn_id;
1442 __entry->rc = rc;
1443 pss = (struct sockaddr_storage *)__entry->dst_addr;
1444 *pss = *dst_addr;
1445 __assign_str(hostname);
1446 ),
1447 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1448 __entry->rc,
1449 __entry->conn_id,
1450 __get_str(hostname),
1451 __entry->dst_addr)
1452)
1453
1454#define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
1455DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
1456 TP_PROTO(char *hostname, \
1457 __u64 conn_id, \
1458 const struct __kernel_sockaddr_storage *addr, \
1459 int rc), \
1460 TP_ARGS(hostname, conn_id, addr, rc))
1461
1462DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
1463
1464DECLARE_EVENT_CLASS(smb3_sess_setup_err_class,
1465 TP_PROTO(char *hostname, char *username, __u64 conn_id,
1466 const struct __kernel_sockaddr_storage *dst_addr, int rc),
1467 TP_ARGS(hostname, username, conn_id, dst_addr, rc),
1468 TP_STRUCT__entry(
1469 __string(hostname, hostname)
1470 __string(username, username)
1471 __field(__u64, conn_id)
1472 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1473 __field(int, rc)
1474 ),
1475 TP_fast_assign(
1476 struct sockaddr_storage *pss = NULL;
1477
1478 __entry->conn_id = conn_id;
1479 __entry->rc = rc;
1480 pss = (struct sockaddr_storage *)__entry->dst_addr;
1481 *pss = *dst_addr;
1482 __assign_str(hostname);
1483 __assign_str(username);
1484 ),
1485 TP_printk("rc=%d user=%s conn_id=0x%llx server=%s addr=%pISpsfc",
1486 __entry->rc,
1487 __get_str(username),
1488 __entry->conn_id,
1489 __get_str(hostname),
1490 __entry->dst_addr)
1491)
1492
1493#define DEFINE_SMB3_SES_SETUP_ERR_EVENT(name) \
1494DEFINE_EVENT(smb3_sess_setup_err_class, smb3_##name, \
1495 TP_PROTO(char *hostname, \
1496 char *username, \
1497 __u64 conn_id, \
1498 const struct __kernel_sockaddr_storage *addr, \
1499 int rc), \
1500 TP_ARGS(hostname, username, conn_id, addr, rc))
1501
1502DEFINE_SMB3_SES_SETUP_ERR_EVENT(key_expired);
1503
1504DECLARE_EVENT_CLASS(smb3_reconnect_class,
1505 TP_PROTO(__u64 currmid,
1506 __u64 conn_id,
1507 char *hostname),
1508 TP_ARGS(currmid, conn_id, hostname),
1509 TP_STRUCT__entry(
1510 __field(__u64, currmid)
1511 __field(__u64, conn_id)
1512 __string(hostname, hostname)
1513 ),
1514 TP_fast_assign(
1515 __entry->currmid = currmid;
1516 __entry->conn_id = conn_id;
1517 __assign_str(hostname);
1518 ),
1519 TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1520 __entry->conn_id,
1521 __get_str(hostname),
1522 __entry->currmid)
1523)
1524
1525#define DEFINE_SMB3_RECONNECT_EVENT(name) \
1526DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
1527 TP_PROTO(__u64 currmid, \
1528 __u64 conn_id, \
1529 char *hostname), \
1530 TP_ARGS(currmid, conn_id, hostname))
1531
1532DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1533DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1534
1535DECLARE_EVENT_CLASS(smb3_ses_class,
1536 TP_PROTO(__u64 sesid),
1537 TP_ARGS(sesid),
1538 TP_STRUCT__entry(
1539 __field(__u64, sesid)
1540 ),
1541 TP_fast_assign(
1542 __entry->sesid = sesid;
1543 ),
1544 TP_printk("sid=0x%llx",
1545 __entry->sesid)
1546)
1547
1548#define DEFINE_SMB3_SES_EVENT(name) \
1549DEFINE_EVENT(smb3_ses_class, smb3_##name, \
1550 TP_PROTO(__u64 sesid), \
1551 TP_ARGS(sesid))
1552
1553DEFINE_SMB3_SES_EVENT(ses_not_found);
1554
1555DECLARE_EVENT_CLASS(smb3_ioctl_class,
1556 TP_PROTO(unsigned int xid,
1557 __u64 fid,
1558 unsigned int command),
1559 TP_ARGS(xid, fid, command),
1560 TP_STRUCT__entry(
1561 __field(unsigned int, xid)
1562 __field(__u64, fid)
1563 __field(unsigned int, command)
1564 ),
1565 TP_fast_assign(
1566 __entry->xid = xid;
1567 __entry->fid = fid;
1568 __entry->command = command;
1569 ),
1570 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1571 __entry->xid, __entry->fid, __entry->command)
1572)
1573
1574#define DEFINE_SMB3_IOCTL_EVENT(name) \
1575DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \
1576 TP_PROTO(unsigned int xid, \
1577 __u64 fid, \
1578 unsigned int command), \
1579 TP_ARGS(xid, fid, command))
1580
1581DEFINE_SMB3_IOCTL_EVENT(ioctl);
1582DEFINE_SMB3_IOCTL_EVENT(unsupported_ioctl);
1583
1584DECLARE_EVENT_CLASS(smb3_shutdown_class,
1585 TP_PROTO(__u32 flags,
1586 __u32 tid),
1587 TP_ARGS(flags, tid),
1588 TP_STRUCT__entry(
1589 __field(__u32, flags)
1590 __field(__u32, tid)
1591 ),
1592 TP_fast_assign(
1593 __entry->flags = flags;
1594 __entry->tid = tid;
1595 ),
1596 TP_printk("flags=0x%x tid=0x%x",
1597 __entry->flags, __entry->tid)
1598)
1599
1600#define DEFINE_SMB3_SHUTDOWN_EVENT(name) \
1601DEFINE_EVENT(smb3_shutdown_class, smb3_##name, \
1602 TP_PROTO(__u32 flags, \
1603 __u32 tid), \
1604 TP_ARGS(flags, tid))
1605
1606DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_enter);
1607DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_done);
1608
1609DECLARE_EVENT_CLASS(smb3_shutdown_err_class,
1610 TP_PROTO(int rc,
1611 __u32 flags,
1612 __u32 tid),
1613 TP_ARGS(rc, flags, tid),
1614 TP_STRUCT__entry(
1615 __field(int, rc)
1616 __field(__u32, flags)
1617 __field(__u32, tid)
1618 ),
1619 TP_fast_assign(
1620 __entry->rc = rc;
1621 __entry->flags = flags;
1622 __entry->tid = tid;
1623 ),
1624 TP_printk("rc=%d flags=0x%x tid=0x%x",
1625 __entry->rc, __entry->flags, __entry->tid)
1626)
1627
1628#define DEFINE_SMB3_SHUTDOWN_ERR_EVENT(name) \
1629DEFINE_EVENT(smb3_shutdown_err_class, smb3_##name, \
1630 TP_PROTO(int rc, \
1631 __u32 flags, \
1632 __u32 tid), \
1633 TP_ARGS(rc, flags, tid))
1634
1635DEFINE_SMB3_SHUTDOWN_ERR_EVENT(shutdown_err);
1636
1637DECLARE_EVENT_CLASS(smb3_credit_class,
1638 TP_PROTO(__u64 currmid,
1639 __u64 conn_id,
1640 char *hostname,
1641 int credits,
1642 int credits_to_add,
1643 int in_flight),
1644 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1645 TP_STRUCT__entry(
1646 __field(__u64, currmid)
1647 __field(__u64, conn_id)
1648 __string(hostname, hostname)
1649 __field(int, credits)
1650 __field(int, credits_to_add)
1651 __field(int, in_flight)
1652 ),
1653 TP_fast_assign(
1654 __entry->currmid = currmid;
1655 __entry->conn_id = conn_id;
1656 __assign_str(hostname);
1657 __entry->credits = credits;
1658 __entry->credits_to_add = credits_to_add;
1659 __entry->in_flight = in_flight;
1660 ),
1661 TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1662 "credits=%d credit_change=%d in_flight=%d",
1663 __entry->conn_id,
1664 __get_str(hostname),
1665 __entry->currmid,
1666 __entry->credits,
1667 __entry->credits_to_add,
1668 __entry->in_flight)
1669)
1670
1671#define DEFINE_SMB3_CREDIT_EVENT(name) \
1672DEFINE_EVENT(smb3_credit_class, smb3_##name, \
1673 TP_PROTO(__u64 currmid, \
1674 __u64 conn_id, \
1675 char *hostname, \
1676 int credits, \
1677 int credits_to_add, \
1678 int in_flight), \
1679 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1680
1681DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1682DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1683DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1684DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1685DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1686DEFINE_SMB3_CREDIT_EVENT(add_credits);
1687DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1688DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1689DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1690DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1691DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1692DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1693DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1694DEFINE_SMB3_CREDIT_EVENT(set_credits);
1695
1696TRACE_EVENT(smb3_kerberos_auth,
1697 TP_PROTO(struct TCP_Server_Info *server,
1698 struct cifs_ses *ses,
1699 int rc),
1700 TP_ARGS(server, ses, rc),
1701 TP_STRUCT__entry(
1702 __field(pid_t, pid)
1703 __field(uid_t, uid)
1704 __field(uid_t, cruid)
1705 __string(host, server->hostname)
1706 __string(user, ses->user_name)
1707 __array(__u8, addr, sizeof(struct sockaddr_storage))
1708 __array(char, sec, sizeof("ntlmsspi"))
1709 __array(char, upcall_target, sizeof("mount"))
1710 __field(int, rc)
1711 ),
1712 TP_fast_assign(
1713 __entry->pid = current->pid;
1714 __entry->uid = from_kuid_munged(&init_user_ns, ses->linux_uid);
1715 __entry->cruid = from_kuid_munged(&init_user_ns, ses->cred_uid);
1716 __assign_str(host);
1717 __assign_str(user);
1718 memcpy(__entry->addr, &server->dstaddr, sizeof(__entry->addr));
1719
1720 if (server->sec_kerberos)
1721 memcpy(__entry->sec, "krb5", sizeof("krb5"));
1722 else if (server->sec_mskerberos)
1723 memcpy(__entry->sec, "mskrb5", sizeof("mskrb5"));
1724 else if (server->sec_iakerb)
1725 memcpy(__entry->sec, "iakerb", sizeof("iakerb"));
1726 else
1727 memcpy(__entry->sec, "krb5", sizeof("krb5"));
1728
1729 if (ses->upcall_target == UPTARGET_MOUNT)
1730 memcpy(__entry->upcall_target, "mount", sizeof("mount"));
1731 else
1732 memcpy(__entry->upcall_target, "app", sizeof("app"));
1733 __entry->rc = rc;
1734 ),
1735 TP_printk("vers=%d host=%s ip=%pISpsfc sec=%s uid=%d cruid=%d user=%s pid=%d upcall_target=%s err=%d",
1736 CIFS_SPNEGO_UPCALL_VERSION, __get_str(host), __entry->addr,
1737 __entry->sec, __entry->uid, __entry->cruid, __get_str(user),
1738 __entry->pid, __entry->upcall_target, __entry->rc))
1739
1740TRACE_EVENT(smb3_tcon_ref,
1741 TP_PROTO(unsigned int tcon_debug_id, int ref,
1742 enum smb3_tcon_ref_trace trace),
1743 TP_ARGS(tcon_debug_id, ref, trace),
1744 TP_STRUCT__entry(
1745 __field(unsigned int, tcon)
1746 __field(int, ref)
1747 __field(enum smb3_tcon_ref_trace, trace)
1748 ),
1749 TP_fast_assign(
1750 __entry->tcon = tcon_debug_id;
1751 __entry->ref = ref;
1752 __entry->trace = trace;
1753 ),
1754 TP_printk("TC=%08x %s r=%u",
1755 __entry->tcon,
1756 __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
1757 __entry->ref)
1758 );
1759
1760TRACE_EVENT(smb3_rw_credits,
1761 TP_PROTO(unsigned int rreq_debug_id,
1762 unsigned int subreq_debug_index,
1763 unsigned int subreq_credits,
1764 unsigned int server_credits,
1765 int server_in_flight,
1766 int credit_change,
1767 enum smb3_rw_credits_trace trace),
1768 TP_ARGS(rreq_debug_id, subreq_debug_index, subreq_credits,
1769 server_credits, server_in_flight, credit_change, trace),
1770 TP_STRUCT__entry(
1771 __field(unsigned int, rreq_debug_id)
1772 __field(unsigned int, subreq_debug_index)
1773 __field(unsigned int, subreq_credits)
1774 __field(unsigned int, server_credits)
1775 __field(int, in_flight)
1776 __field(int, credit_change)
1777 __field(enum smb3_rw_credits_trace, trace)
1778 ),
1779 TP_fast_assign(
1780 __entry->rreq_debug_id = rreq_debug_id;
1781 __entry->subreq_debug_index = subreq_debug_index;
1782 __entry->subreq_credits = subreq_credits;
1783 __entry->server_credits = server_credits;
1784 __entry->in_flight = server_in_flight;
1785 __entry->credit_change = credit_change;
1786 __entry->trace = trace;
1787 ),
1788 TP_printk("R=%08x[%x] %s cred=%u chg=%d pool=%u ifl=%d",
1789 __entry->rreq_debug_id, __entry->subreq_debug_index,
1790 __print_symbolic(__entry->trace, smb3_rw_credits_traces),
1791 __entry->subreq_credits, __entry->credit_change,
1792 __entry->server_credits, __entry->in_flight)
1793 );
1794
1795TRACE_EVENT(smb3_eio,
1796 TP_PROTO(enum smb_eio_trace trace, unsigned long info, unsigned long info2),
1797 TP_ARGS(trace, info, info2),
1798 TP_STRUCT__entry(
1799 __field(enum smb_eio_trace, trace)
1800 __field(unsigned long, info)
1801 __field(unsigned long, info2)
1802 ),
1803 TP_fast_assign(
1804 __entry->trace = trace;
1805 __entry->info = info;
1806 __entry->info2 = info2;
1807 ),
1808 TP_printk("%s info=%lx,%lx",
1809 __print_symbolic(__entry->trace, smb_eio_traces),
1810 __entry->info, __entry->info2)
1811 );
1812
1813#undef EM
1814#undef E_
1815#endif /* _CIFS_TRACE_H */
1816
1817#undef TRACE_INCLUDE_PATH
1818#define TRACE_INCLUDE_PATH .
1819#define TRACE_INCLUDE_FILE trace
1820#include <trace/define_trace.h>