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 smb3_tcon_ref_traces \ 24 EM(netfs_trace_tcon_ref_dec_dfs_refer, "DEC DfsRef") \ 25 EM(netfs_trace_tcon_ref_free, "FRE ") \ 26 EM(netfs_trace_tcon_ref_free_fail, "FRE Fail ") \ 27 EM(netfs_trace_tcon_ref_free_ipc, "FRE Ipc ") \ 28 EM(netfs_trace_tcon_ref_free_ipc_fail, "FRE Ipc-F ") \ 29 EM(netfs_trace_tcon_ref_free_reconnect_server, "FRE Reconn") \ 30 EM(netfs_trace_tcon_ref_get_cancelled_close, "GET Cn-Cls") \ 31 EM(netfs_trace_tcon_ref_get_dfs_refer, "GET DfsRef") \ 32 EM(netfs_trace_tcon_ref_get_find, "GET Find ") \ 33 EM(netfs_trace_tcon_ref_get_find_sess_tcon, "GET FndSes") \ 34 EM(netfs_trace_tcon_ref_get_reconnect_server, "GET Reconn") \ 35 EM(netfs_trace_tcon_ref_new, "NEW ") \ 36 EM(netfs_trace_tcon_ref_new_ipc, "NEW Ipc ") \ 37 EM(netfs_trace_tcon_ref_new_reconnect_server, "NEW Reconn") \ 38 EM(netfs_trace_tcon_ref_put_cancelled_close, "PUT Cn-Cls") \ 39 EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \ 40 EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \ 41 EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \ 42 EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \ 43 EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \ 44 EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \ 45 EM(netfs_trace_tcon_ref_see_fscache_collision, "SEE FV-CO!") \ 46 EM(netfs_trace_tcon_ref_see_fscache_okay, "SEE FV-Ok ") \ 47 EM(netfs_trace_tcon_ref_see_fscache_relinq, "SEE FV-Rlq") \ 48 E_(netfs_trace_tcon_ref_see_umount, "SEE Umount") 49 50 #undef EM 51 #undef E_ 52 53 /* 54 * Define those tracing enums. 55 */ 56 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 57 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 58 59 #define EM(a, b) a, 60 #define E_(a, b) a 61 62 enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte); 63 64 #undef EM 65 #undef E_ 66 #endif 67 68 /* 69 * Export enum symbols via userspace. 70 */ 71 #define EM(a, b) TRACE_DEFINE_ENUM(a); 72 #define E_(a, b) TRACE_DEFINE_ENUM(a); 73 74 smb3_tcon_ref_traces; 75 76 #undef EM 77 #undef E_ 78 79 /* 80 * Now redefine the EM() and E_() macros to map the enums to the strings that 81 * will be printed in the output. 82 */ 83 #define EM(a, b) { a, b }, 84 #define E_(a, b) { a, b } 85 86 /* For logging errors in read or write */ 87 DECLARE_EVENT_CLASS(smb3_rw_err_class, 88 TP_PROTO(unsigned int xid, 89 __u64 fid, 90 __u32 tid, 91 __u64 sesid, 92 __u64 offset, 93 __u32 len, 94 int rc), 95 TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 96 TP_STRUCT__entry( 97 __field(unsigned int, xid) 98 __field(__u64, fid) 99 __field(__u32, tid) 100 __field(__u64, sesid) 101 __field(__u64, offset) 102 __field(__u32, len) 103 __field(int, rc) 104 ), 105 TP_fast_assign( 106 __entry->xid = xid; 107 __entry->fid = fid; 108 __entry->tid = tid; 109 __entry->sesid = sesid; 110 __entry->offset = offset; 111 __entry->len = len; 112 __entry->rc = rc; 113 ), 114 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 115 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 116 __entry->offset, __entry->len, __entry->rc) 117 ) 118 119 #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 120 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 121 TP_PROTO(unsigned int xid, \ 122 __u64 fid, \ 123 __u32 tid, \ 124 __u64 sesid, \ 125 __u64 offset, \ 126 __u32 len, \ 127 int rc), \ 128 TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 129 130 DEFINE_SMB3_RW_ERR_EVENT(write_err); 131 DEFINE_SMB3_RW_ERR_EVENT(read_err); 132 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 133 DEFINE_SMB3_RW_ERR_EVENT(zero_err); 134 DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 135 136 137 /* For logging successful read or write */ 138 DECLARE_EVENT_CLASS(smb3_rw_done_class, 139 TP_PROTO(unsigned int xid, 140 __u64 fid, 141 __u32 tid, 142 __u64 sesid, 143 __u64 offset, 144 __u32 len), 145 TP_ARGS(xid, fid, tid, sesid, offset, len), 146 TP_STRUCT__entry( 147 __field(unsigned int, xid) 148 __field(__u64, fid) 149 __field(__u32, tid) 150 __field(__u64, sesid) 151 __field(__u64, offset) 152 __field(__u32, len) 153 ), 154 TP_fast_assign( 155 __entry->xid = xid; 156 __entry->fid = fid; 157 __entry->tid = tid; 158 __entry->sesid = sesid; 159 __entry->offset = offset; 160 __entry->len = len; 161 ), 162 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 163 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 164 __entry->offset, __entry->len) 165 ) 166 167 #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 168 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 169 TP_PROTO(unsigned int xid, \ 170 __u64 fid, \ 171 __u32 tid, \ 172 __u64 sesid, \ 173 __u64 offset, \ 174 __u32 len), \ 175 TP_ARGS(xid, fid, tid, sesid, offset, len)) 176 177 DEFINE_SMB3_RW_DONE_EVENT(write_enter); 178 DEFINE_SMB3_RW_DONE_EVENT(read_enter); 179 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 180 DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 181 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 182 DEFINE_SMB3_RW_DONE_EVENT(write_done); 183 DEFINE_SMB3_RW_DONE_EVENT(read_done); 184 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 185 DEFINE_SMB3_RW_DONE_EVENT(zero_done); 186 DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 187 188 /* For logging successful set EOF (truncate) */ 189 DECLARE_EVENT_CLASS(smb3_eof_class, 190 TP_PROTO(unsigned int xid, 191 __u64 fid, 192 __u32 tid, 193 __u64 sesid, 194 __u64 offset), 195 TP_ARGS(xid, fid, tid, sesid, offset), 196 TP_STRUCT__entry( 197 __field(unsigned int, xid) 198 __field(__u64, fid) 199 __field(__u32, tid) 200 __field(__u64, sesid) 201 __field(__u64, offset) 202 ), 203 TP_fast_assign( 204 __entry->xid = xid; 205 __entry->fid = fid; 206 __entry->tid = tid; 207 __entry->sesid = sesid; 208 __entry->offset = offset; 209 ), 210 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx", 211 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 212 __entry->offset) 213 ) 214 215 #define DEFINE_SMB3_EOF_EVENT(name) \ 216 DEFINE_EVENT(smb3_eof_class, smb3_##name, \ 217 TP_PROTO(unsigned int xid, \ 218 __u64 fid, \ 219 __u32 tid, \ 220 __u64 sesid, \ 221 __u64 offset), \ 222 TP_ARGS(xid, fid, tid, sesid, offset)) 223 224 DEFINE_SMB3_EOF_EVENT(set_eof); 225 226 /* 227 * For handle based calls other than read and write, and get/set info 228 */ 229 DECLARE_EVENT_CLASS(smb3_fd_class, 230 TP_PROTO(unsigned int xid, 231 __u64 fid, 232 __u32 tid, 233 __u64 sesid), 234 TP_ARGS(xid, fid, tid, sesid), 235 TP_STRUCT__entry( 236 __field(unsigned int, xid) 237 __field(__u64, fid) 238 __field(__u32, tid) 239 __field(__u64, sesid) 240 ), 241 TP_fast_assign( 242 __entry->xid = xid; 243 __entry->fid = fid; 244 __entry->tid = tid; 245 __entry->sesid = sesid; 246 ), 247 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", 248 __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 249 ) 250 251 #define DEFINE_SMB3_FD_EVENT(name) \ 252 DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 253 TP_PROTO(unsigned int xid, \ 254 __u64 fid, \ 255 __u32 tid, \ 256 __u64 sesid), \ 257 TP_ARGS(xid, fid, tid, sesid)) 258 259 DEFINE_SMB3_FD_EVENT(flush_enter); 260 DEFINE_SMB3_FD_EVENT(flush_done); 261 DEFINE_SMB3_FD_EVENT(close_enter); 262 DEFINE_SMB3_FD_EVENT(close_done); 263 DEFINE_SMB3_FD_EVENT(oplock_not_found); 264 265 DECLARE_EVENT_CLASS(smb3_fd_err_class, 266 TP_PROTO(unsigned int xid, 267 __u64 fid, 268 __u32 tid, 269 __u64 sesid, 270 int rc), 271 TP_ARGS(xid, fid, tid, sesid, rc), 272 TP_STRUCT__entry( 273 __field(unsigned int, xid) 274 __field(__u64, fid) 275 __field(__u32, tid) 276 __field(__u64, sesid) 277 __field(int, rc) 278 ), 279 TP_fast_assign( 280 __entry->xid = xid; 281 __entry->fid = fid; 282 __entry->tid = tid; 283 __entry->sesid = sesid; 284 __entry->rc = rc; 285 ), 286 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 287 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 288 __entry->rc) 289 ) 290 291 #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 292 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 293 TP_PROTO(unsigned int xid, \ 294 __u64 fid, \ 295 __u32 tid, \ 296 __u64 sesid, \ 297 int rc), \ 298 TP_ARGS(xid, fid, tid, sesid, rc)) 299 300 DEFINE_SMB3_FD_ERR_EVENT(flush_err); 301 DEFINE_SMB3_FD_ERR_EVENT(lock_err); 302 DEFINE_SMB3_FD_ERR_EVENT(close_err); 303 304 /* 305 * For handle based query/set info calls 306 */ 307 DECLARE_EVENT_CLASS(smb3_inf_enter_class, 308 TP_PROTO(unsigned int xid, 309 __u64 fid, 310 __u32 tid, 311 __u64 sesid, 312 __u8 infclass, 313 __u32 type), 314 TP_ARGS(xid, fid, tid, sesid, infclass, type), 315 TP_STRUCT__entry( 316 __field(unsigned int, xid) 317 __field(__u64, fid) 318 __field(__u32, tid) 319 __field(__u64, sesid) 320 __field(__u8, infclass) 321 __field(__u32, type) 322 ), 323 TP_fast_assign( 324 __entry->xid = xid; 325 __entry->fid = fid; 326 __entry->tid = tid; 327 __entry->sesid = sesid; 328 __entry->infclass = infclass; 329 __entry->type = type; 330 ), 331 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 332 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 333 __entry->infclass, __entry->type) 334 ) 335 336 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 337 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 338 TP_PROTO(unsigned int xid, \ 339 __u64 fid, \ 340 __u32 tid, \ 341 __u64 sesid, \ 342 __u8 infclass, \ 343 __u32 type), \ 344 TP_ARGS(xid, fid, tid, sesid, infclass, type)) 345 346 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 347 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 348 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 349 DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 350 351 DECLARE_EVENT_CLASS(smb3_inf_err_class, 352 TP_PROTO(unsigned int xid, 353 __u64 fid, 354 __u32 tid, 355 __u64 sesid, 356 __u8 infclass, 357 __u32 type, 358 int rc), 359 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 360 TP_STRUCT__entry( 361 __field(unsigned int, xid) 362 __field(__u64, fid) 363 __field(__u32, tid) 364 __field(__u64, sesid) 365 __field(__u8, infclass) 366 __field(__u32, type) 367 __field(int, rc) 368 ), 369 TP_fast_assign( 370 __entry->xid = xid; 371 __entry->fid = fid; 372 __entry->tid = tid; 373 __entry->sesid = sesid; 374 __entry->infclass = infclass; 375 __entry->type = type; 376 __entry->rc = rc; 377 ), 378 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 379 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 380 __entry->infclass, __entry->type, __entry->rc) 381 ) 382 383 #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 384 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 385 TP_PROTO(unsigned int xid, \ 386 __u64 fid, \ 387 __u32 tid, \ 388 __u64 sesid, \ 389 __u8 infclass, \ 390 __u32 type, \ 391 int rc), \ 392 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 393 394 DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 395 DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 396 DEFINE_SMB3_INF_ERR_EVENT(notify_err); 397 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 398 399 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 400 TP_PROTO(unsigned int xid, 401 __u32 tid, 402 __u64 sesid, 403 const char *full_path), 404 TP_ARGS(xid, tid, sesid, full_path), 405 TP_STRUCT__entry( 406 __field(unsigned int, xid) 407 __field(__u32, tid) 408 __field(__u64, sesid) 409 __string(path, full_path) 410 ), 411 TP_fast_assign( 412 __entry->xid = xid; 413 __entry->tid = tid; 414 __entry->sesid = sesid; 415 __assign_str(path, full_path); 416 ), 417 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 418 __entry->xid, __entry->sesid, __entry->tid, 419 __get_str(path)) 420 ) 421 422 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 423 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 424 TP_PROTO(unsigned int xid, \ 425 __u32 tid, \ 426 __u64 sesid, \ 427 const char *full_path), \ 428 TP_ARGS(xid, tid, sesid, full_path)) 429 430 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 431 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 432 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 433 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 434 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 435 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 436 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 437 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter); 438 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter); 439 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 440 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 441 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter); 442 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter); 443 444 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 445 TP_PROTO(unsigned int xid, 446 __u32 tid, 447 __u64 sesid), 448 TP_ARGS(xid, tid, sesid), 449 TP_STRUCT__entry( 450 __field(unsigned int, xid) 451 __field(__u32, tid) 452 __field(__u64, sesid) 453 ), 454 TP_fast_assign( 455 __entry->xid = xid; 456 __entry->tid = tid; 457 __entry->sesid = sesid; 458 ), 459 TP_printk("xid=%u sid=0x%llx tid=0x%x", 460 __entry->xid, __entry->sesid, __entry->tid) 461 ) 462 463 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 464 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 465 TP_PROTO(unsigned int xid, \ 466 __u32 tid, \ 467 __u64 sesid), \ 468 TP_ARGS(xid, tid, sesid)) 469 470 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 471 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 472 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 473 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 474 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 475 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 476 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 477 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done); 478 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done); 479 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done); 480 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 481 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 482 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done); 483 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done); 484 485 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 486 TP_PROTO(unsigned int xid, 487 __u32 tid, 488 __u64 sesid, 489 int rc), 490 TP_ARGS(xid, tid, sesid, rc), 491 TP_STRUCT__entry( 492 __field(unsigned int, xid) 493 __field(__u32, tid) 494 __field(__u64, sesid) 495 __field(int, rc) 496 ), 497 TP_fast_assign( 498 __entry->xid = xid; 499 __entry->tid = tid; 500 __entry->sesid = sesid; 501 __entry->rc = rc; 502 ), 503 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 504 __entry->xid, __entry->sesid, __entry->tid, 505 __entry->rc) 506 ) 507 508 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 509 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 510 TP_PROTO(unsigned int xid, \ 511 __u32 tid, \ 512 __u64 sesid, \ 513 int rc), \ 514 TP_ARGS(xid, tid, sesid, rc)) 515 516 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 517 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 518 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 519 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 520 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 521 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 522 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 523 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err); 524 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err); 525 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err); 526 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 527 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 528 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err); 529 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err); 530 531 /* 532 * For logging SMB3 Status code and Command for responses which return errors 533 */ 534 DECLARE_EVENT_CLASS(smb3_cmd_err_class, 535 TP_PROTO(__u32 tid, 536 __u64 sesid, 537 __u16 cmd, 538 __u64 mid, 539 __u32 status, 540 int rc), 541 TP_ARGS(tid, sesid, cmd, mid, status, rc), 542 TP_STRUCT__entry( 543 __field(__u32, tid) 544 __field(__u64, sesid) 545 __field(__u16, cmd) 546 __field(__u64, mid) 547 __field(__u32, status) 548 __field(int, rc) 549 ), 550 TP_fast_assign( 551 __entry->tid = tid; 552 __entry->sesid = sesid; 553 __entry->cmd = cmd; 554 __entry->mid = mid; 555 __entry->status = status; 556 __entry->rc = rc; 557 ), 558 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 559 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 560 __entry->status, __entry->rc) 561 ) 562 563 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 564 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 565 TP_PROTO(__u32 tid, \ 566 __u64 sesid, \ 567 __u16 cmd, \ 568 __u64 mid, \ 569 __u32 status, \ 570 int rc), \ 571 TP_ARGS(tid, sesid, cmd, mid, status, rc)) 572 573 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 574 575 DECLARE_EVENT_CLASS(smb3_cmd_done_class, 576 TP_PROTO(__u32 tid, 577 __u64 sesid, 578 __u16 cmd, 579 __u64 mid), 580 TP_ARGS(tid, sesid, cmd, mid), 581 TP_STRUCT__entry( 582 __field(__u32, tid) 583 __field(__u64, sesid) 584 __field(__u16, cmd) 585 __field(__u64, mid) 586 ), 587 TP_fast_assign( 588 __entry->tid = tid; 589 __entry->sesid = sesid; 590 __entry->cmd = cmd; 591 __entry->mid = mid; 592 ), 593 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 594 __entry->sesid, __entry->tid, 595 __entry->cmd, __entry->mid) 596 ) 597 598 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 599 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 600 TP_PROTO(__u32 tid, \ 601 __u64 sesid, \ 602 __u16 cmd, \ 603 __u64 mid), \ 604 TP_ARGS(tid, sesid, cmd, mid)) 605 606 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 607 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 608 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 609 610 DECLARE_EVENT_CLASS(smb3_mid_class, 611 TP_PROTO(__u16 cmd, 612 __u64 mid, 613 __u32 pid, 614 unsigned long when_sent, 615 unsigned long when_received), 616 TP_ARGS(cmd, mid, pid, when_sent, when_received), 617 TP_STRUCT__entry( 618 __field(__u16, cmd) 619 __field(__u64, mid) 620 __field(__u32, pid) 621 __field(unsigned long, when_sent) 622 __field(unsigned long, when_received) 623 ), 624 TP_fast_assign( 625 __entry->cmd = cmd; 626 __entry->mid = mid; 627 __entry->pid = pid; 628 __entry->when_sent = when_sent; 629 __entry->when_received = when_received; 630 ), 631 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 632 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 633 __entry->when_received) 634 ) 635 636 #define DEFINE_SMB3_MID_EVENT(name) \ 637 DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 638 TP_PROTO(__u16 cmd, \ 639 __u64 mid, \ 640 __u32 pid, \ 641 unsigned long when_sent, \ 642 unsigned long when_received), \ 643 TP_ARGS(cmd, mid, pid, when_sent, when_received)) 644 645 DEFINE_SMB3_MID_EVENT(slow_rsp); 646 647 DECLARE_EVENT_CLASS(smb3_exit_err_class, 648 TP_PROTO(unsigned int xid, 649 const char *func_name, 650 int rc), 651 TP_ARGS(xid, func_name, rc), 652 TP_STRUCT__entry( 653 __field(unsigned int, xid) 654 __string(func_name, func_name) 655 __field(int, rc) 656 ), 657 TP_fast_assign( 658 __entry->xid = xid; 659 __assign_str(func_name, func_name); 660 __entry->rc = rc; 661 ), 662 TP_printk("\t%s: xid=%u rc=%d", 663 __get_str(func_name), __entry->xid, __entry->rc) 664 ) 665 666 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 667 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 668 TP_PROTO(unsigned int xid, \ 669 const char *func_name, \ 670 int rc), \ 671 TP_ARGS(xid, func_name, rc)) 672 673 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 674 675 676 DECLARE_EVENT_CLASS(smb3_sync_err_class, 677 TP_PROTO(unsigned long ino, 678 int rc), 679 TP_ARGS(ino, rc), 680 TP_STRUCT__entry( 681 __field(unsigned long, ino) 682 __field(int, rc) 683 ), 684 TP_fast_assign( 685 __entry->ino = ino; 686 __entry->rc = rc; 687 ), 688 TP_printk("\tino=%lu rc=%d", 689 __entry->ino, __entry->rc) 690 ) 691 692 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 693 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 694 TP_PROTO(unsigned long ino, \ 695 int rc), \ 696 TP_ARGS(ino, rc)) 697 698 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 699 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 700 701 702 DECLARE_EVENT_CLASS(smb3_enter_exit_class, 703 TP_PROTO(unsigned int xid, 704 const char *func_name), 705 TP_ARGS(xid, func_name), 706 TP_STRUCT__entry( 707 __field(unsigned int, xid) 708 __string(func_name, func_name) 709 ), 710 TP_fast_assign( 711 __entry->xid = xid; 712 __assign_str(func_name, func_name); 713 ), 714 TP_printk("\t%s: xid=%u", 715 __get_str(func_name), __entry->xid) 716 ) 717 718 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 719 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 720 TP_PROTO(unsigned int xid, \ 721 const char *func_name), \ 722 TP_ARGS(xid, func_name)) 723 724 DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 725 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 726 727 /* 728 * For SMB2/SMB3 tree connect 729 */ 730 731 DECLARE_EVENT_CLASS(smb3_tcon_class, 732 TP_PROTO(unsigned int xid, 733 __u32 tid, 734 __u64 sesid, 735 const char *unc_name, 736 int rc), 737 TP_ARGS(xid, tid, sesid, unc_name, rc), 738 TP_STRUCT__entry( 739 __field(unsigned int, xid) 740 __field(__u32, tid) 741 __field(__u64, sesid) 742 __string(name, unc_name) 743 __field(int, rc) 744 ), 745 TP_fast_assign( 746 __entry->xid = xid; 747 __entry->tid = tid; 748 __entry->sesid = sesid; 749 __assign_str(name, unc_name); 750 __entry->rc = rc; 751 ), 752 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 753 __entry->xid, __entry->sesid, __entry->tid, 754 __get_str(name), __entry->rc) 755 ) 756 757 #define DEFINE_SMB3_TCON_EVENT(name) \ 758 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 759 TP_PROTO(unsigned int xid, \ 760 __u32 tid, \ 761 __u64 sesid, \ 762 const char *unc_name, \ 763 int rc), \ 764 TP_ARGS(xid, tid, sesid, unc_name, rc)) 765 766 DEFINE_SMB3_TCON_EVENT(tcon); 767 DEFINE_SMB3_TCON_EVENT(qfs_done); 768 769 /* 770 * For smb2/smb3 open (including create and mkdir) calls 771 */ 772 773 DECLARE_EVENT_CLASS(smb3_open_enter_class, 774 TP_PROTO(unsigned int xid, 775 __u32 tid, 776 __u64 sesid, 777 const char *full_path, 778 int create_options, 779 int desired_access), 780 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access), 781 TP_STRUCT__entry( 782 __field(unsigned int, xid) 783 __field(__u32, tid) 784 __field(__u64, sesid) 785 __string(path, full_path) 786 __field(int, create_options) 787 __field(int, desired_access) 788 ), 789 TP_fast_assign( 790 __entry->xid = xid; 791 __entry->tid = tid; 792 __entry->sesid = sesid; 793 __assign_str(path, full_path); 794 __entry->create_options = create_options; 795 __entry->desired_access = desired_access; 796 ), 797 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x", 798 __entry->xid, __entry->sesid, __entry->tid, __get_str(path), 799 __entry->create_options, __entry->desired_access) 800 ) 801 802 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 803 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 804 TP_PROTO(unsigned int xid, \ 805 __u32 tid, \ 806 __u64 sesid, \ 807 const char *full_path, \ 808 int create_options, \ 809 int desired_access), \ 810 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access)) 811 812 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 813 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 814 815 DECLARE_EVENT_CLASS(smb3_open_err_class, 816 TP_PROTO(unsigned int xid, 817 __u32 tid, 818 __u64 sesid, 819 int create_options, 820 int desired_access, 821 int rc), 822 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 823 TP_STRUCT__entry( 824 __field(unsigned int, xid) 825 __field(__u32, tid) 826 __field(__u64, sesid) 827 __field(int, create_options) 828 __field(int, desired_access) 829 __field(int, rc) 830 ), 831 TP_fast_assign( 832 __entry->xid = xid; 833 __entry->tid = tid; 834 __entry->sesid = sesid; 835 __entry->create_options = create_options; 836 __entry->desired_access = desired_access; 837 __entry->rc = rc; 838 ), 839 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 840 __entry->xid, __entry->sesid, __entry->tid, 841 __entry->create_options, __entry->desired_access, __entry->rc) 842 ) 843 844 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 845 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 846 TP_PROTO(unsigned int xid, \ 847 __u32 tid, \ 848 __u64 sesid, \ 849 int create_options, \ 850 int desired_access, \ 851 int rc), \ 852 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 853 854 DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 855 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 856 857 DECLARE_EVENT_CLASS(smb3_open_done_class, 858 TP_PROTO(unsigned int xid, 859 __u64 fid, 860 __u32 tid, 861 __u64 sesid, 862 int create_options, 863 int desired_access), 864 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 865 TP_STRUCT__entry( 866 __field(unsigned int, xid) 867 __field(__u64, fid) 868 __field(__u32, tid) 869 __field(__u64, sesid) 870 __field(int, create_options) 871 __field(int, desired_access) 872 ), 873 TP_fast_assign( 874 __entry->xid = xid; 875 __entry->fid = fid; 876 __entry->tid = tid; 877 __entry->sesid = sesid; 878 __entry->create_options = create_options; 879 __entry->desired_access = desired_access; 880 ), 881 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 882 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 883 __entry->create_options, __entry->desired_access) 884 ) 885 886 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 887 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 888 TP_PROTO(unsigned int xid, \ 889 __u64 fid, \ 890 __u32 tid, \ 891 __u64 sesid, \ 892 int create_options, \ 893 int desired_access), \ 894 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 895 896 DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 897 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 898 899 900 DECLARE_EVENT_CLASS(smb3_lease_done_class, 901 TP_PROTO(__u32 lease_state, 902 __u32 tid, 903 __u64 sesid, 904 __u64 lease_key_low, 905 __u64 lease_key_high), 906 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 907 TP_STRUCT__entry( 908 __field(__u32, lease_state) 909 __field(__u32, tid) 910 __field(__u64, sesid) 911 __field(__u64, lease_key_low) 912 __field(__u64, lease_key_high) 913 ), 914 TP_fast_assign( 915 __entry->lease_state = lease_state; 916 __entry->tid = tid; 917 __entry->sesid = sesid; 918 __entry->lease_key_low = lease_key_low; 919 __entry->lease_key_high = lease_key_high; 920 ), 921 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 922 __entry->sesid, __entry->tid, __entry->lease_key_high, 923 __entry->lease_key_low, __entry->lease_state) 924 ) 925 926 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 927 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 928 TP_PROTO(__u32 lease_state, \ 929 __u32 tid, \ 930 __u64 sesid, \ 931 __u64 lease_key_low, \ 932 __u64 lease_key_high), \ 933 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 934 935 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 936 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found); 937 938 DECLARE_EVENT_CLASS(smb3_lease_err_class, 939 TP_PROTO(__u32 lease_state, 940 __u32 tid, 941 __u64 sesid, 942 __u64 lease_key_low, 943 __u64 lease_key_high, 944 int rc), 945 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 946 TP_STRUCT__entry( 947 __field(__u32, lease_state) 948 __field(__u32, tid) 949 __field(__u64, sesid) 950 __field(__u64, lease_key_low) 951 __field(__u64, lease_key_high) 952 __field(int, rc) 953 ), 954 TP_fast_assign( 955 __entry->lease_state = lease_state; 956 __entry->tid = tid; 957 __entry->sesid = sesid; 958 __entry->lease_key_low = lease_key_low; 959 __entry->lease_key_high = lease_key_high; 960 __entry->rc = rc; 961 ), 962 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 963 __entry->sesid, __entry->tid, __entry->lease_key_high, 964 __entry->lease_key_low, __entry->lease_state, __entry->rc) 965 ) 966 967 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 968 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 969 TP_PROTO(__u32 lease_state, \ 970 __u32 tid, \ 971 __u64 sesid, \ 972 __u64 lease_key_low, \ 973 __u64 lease_key_high, \ 974 int rc), \ 975 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 976 977 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 978 979 DECLARE_EVENT_CLASS(smb3_connect_class, 980 TP_PROTO(char *hostname, 981 __u64 conn_id, 982 const struct __kernel_sockaddr_storage *dst_addr), 983 TP_ARGS(hostname, conn_id, dst_addr), 984 TP_STRUCT__entry( 985 __string(hostname, hostname) 986 __field(__u64, conn_id) 987 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 988 ), 989 TP_fast_assign( 990 struct sockaddr_storage *pss = NULL; 991 992 __entry->conn_id = conn_id; 993 pss = (struct sockaddr_storage *)__entry->dst_addr; 994 *pss = *dst_addr; 995 __assign_str(hostname, hostname); 996 ), 997 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc", 998 __entry->conn_id, 999 __get_str(hostname), 1000 __entry->dst_addr) 1001 ) 1002 1003 #define DEFINE_SMB3_CONNECT_EVENT(name) \ 1004 DEFINE_EVENT(smb3_connect_class, smb3_##name, \ 1005 TP_PROTO(char *hostname, \ 1006 __u64 conn_id, \ 1007 const struct __kernel_sockaddr_storage *addr), \ 1008 TP_ARGS(hostname, conn_id, addr)) 1009 1010 DEFINE_SMB3_CONNECT_EVENT(connect_done); 1011 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done); 1012 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err); 1013 1014 DECLARE_EVENT_CLASS(smb3_connect_err_class, 1015 TP_PROTO(char *hostname, __u64 conn_id, 1016 const struct __kernel_sockaddr_storage *dst_addr, int rc), 1017 TP_ARGS(hostname, conn_id, dst_addr, rc), 1018 TP_STRUCT__entry( 1019 __string(hostname, hostname) 1020 __field(__u64, conn_id) 1021 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 1022 __field(int, rc) 1023 ), 1024 TP_fast_assign( 1025 struct sockaddr_storage *pss = NULL; 1026 1027 __entry->conn_id = conn_id; 1028 __entry->rc = rc; 1029 pss = (struct sockaddr_storage *)__entry->dst_addr; 1030 *pss = *dst_addr; 1031 __assign_str(hostname, hostname); 1032 ), 1033 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc", 1034 __entry->rc, 1035 __entry->conn_id, 1036 __get_str(hostname), 1037 __entry->dst_addr) 1038 ) 1039 1040 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \ 1041 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \ 1042 TP_PROTO(char *hostname, \ 1043 __u64 conn_id, \ 1044 const struct __kernel_sockaddr_storage *addr, \ 1045 int rc), \ 1046 TP_ARGS(hostname, conn_id, addr, rc)) 1047 1048 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err); 1049 1050 DECLARE_EVENT_CLASS(smb3_reconnect_class, 1051 TP_PROTO(__u64 currmid, 1052 __u64 conn_id, 1053 char *hostname), 1054 TP_ARGS(currmid, conn_id, hostname), 1055 TP_STRUCT__entry( 1056 __field(__u64, currmid) 1057 __field(__u64, conn_id) 1058 __string(hostname, hostname) 1059 ), 1060 TP_fast_assign( 1061 __entry->currmid = currmid; 1062 __entry->conn_id = conn_id; 1063 __assign_str(hostname, hostname); 1064 ), 1065 TP_printk("conn_id=0x%llx server=%s current_mid=%llu", 1066 __entry->conn_id, 1067 __get_str(hostname), 1068 __entry->currmid) 1069 ) 1070 1071 #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 1072 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 1073 TP_PROTO(__u64 currmid, \ 1074 __u64 conn_id, \ 1075 char *hostname), \ 1076 TP_ARGS(currmid, conn_id, hostname)) 1077 1078 DEFINE_SMB3_RECONNECT_EVENT(reconnect); 1079 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 1080 1081 DECLARE_EVENT_CLASS(smb3_ses_class, 1082 TP_PROTO(__u64 sesid), 1083 TP_ARGS(sesid), 1084 TP_STRUCT__entry( 1085 __field(__u64, sesid) 1086 ), 1087 TP_fast_assign( 1088 __entry->sesid = sesid; 1089 ), 1090 TP_printk("sid=0x%llx", 1091 __entry->sesid) 1092 ) 1093 1094 #define DEFINE_SMB3_SES_EVENT(name) \ 1095 DEFINE_EVENT(smb3_ses_class, smb3_##name, \ 1096 TP_PROTO(__u64 sesid), \ 1097 TP_ARGS(sesid)) 1098 1099 DEFINE_SMB3_SES_EVENT(ses_not_found); 1100 1101 DECLARE_EVENT_CLASS(smb3_ioctl_class, 1102 TP_PROTO(unsigned int xid, 1103 __u64 fid, 1104 unsigned int command), 1105 TP_ARGS(xid, fid, command), 1106 TP_STRUCT__entry( 1107 __field(unsigned int, xid) 1108 __field(__u64, fid) 1109 __field(unsigned int, command) 1110 ), 1111 TP_fast_assign( 1112 __entry->xid = xid; 1113 __entry->fid = fid; 1114 __entry->command = command; 1115 ), 1116 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x", 1117 __entry->xid, __entry->fid, __entry->command) 1118 ) 1119 1120 #define DEFINE_SMB3_IOCTL_EVENT(name) \ 1121 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \ 1122 TP_PROTO(unsigned int xid, \ 1123 __u64 fid, \ 1124 unsigned int command), \ 1125 TP_ARGS(xid, fid, command)) 1126 1127 DEFINE_SMB3_IOCTL_EVENT(ioctl); 1128 1129 1130 1131 1132 1133 DECLARE_EVENT_CLASS(smb3_credit_class, 1134 TP_PROTO(__u64 currmid, 1135 __u64 conn_id, 1136 char *hostname, 1137 int credits, 1138 int credits_to_add, 1139 int in_flight), 1140 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight), 1141 TP_STRUCT__entry( 1142 __field(__u64, currmid) 1143 __field(__u64, conn_id) 1144 __string(hostname, hostname) 1145 __field(int, credits) 1146 __field(int, credits_to_add) 1147 __field(int, in_flight) 1148 ), 1149 TP_fast_assign( 1150 __entry->currmid = currmid; 1151 __entry->conn_id = conn_id; 1152 __assign_str(hostname, hostname); 1153 __entry->credits = credits; 1154 __entry->credits_to_add = credits_to_add; 1155 __entry->in_flight = in_flight; 1156 ), 1157 TP_printk("conn_id=0x%llx server=%s current_mid=%llu " 1158 "credits=%d credit_change=%d in_flight=%d", 1159 __entry->conn_id, 1160 __get_str(hostname), 1161 __entry->currmid, 1162 __entry->credits, 1163 __entry->credits_to_add, 1164 __entry->in_flight) 1165 ) 1166 1167 #define DEFINE_SMB3_CREDIT_EVENT(name) \ 1168 DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 1169 TP_PROTO(__u64 currmid, \ 1170 __u64 conn_id, \ 1171 char *hostname, \ 1172 int credits, \ 1173 int credits_to_add, \ 1174 int in_flight), \ 1175 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight)) 1176 1177 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 1178 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected); 1179 DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 1180 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits); 1181 DEFINE_SMB3_CREDIT_EVENT(too_many_credits); 1182 DEFINE_SMB3_CREDIT_EVENT(add_credits); 1183 DEFINE_SMB3_CREDIT_EVENT(adj_credits); 1184 DEFINE_SMB3_CREDIT_EVENT(hdr_credits); 1185 DEFINE_SMB3_CREDIT_EVENT(nblk_credits); 1186 DEFINE_SMB3_CREDIT_EVENT(pend_credits); 1187 DEFINE_SMB3_CREDIT_EVENT(wait_credits); 1188 DEFINE_SMB3_CREDIT_EVENT(waitff_credits); 1189 DEFINE_SMB3_CREDIT_EVENT(overflow_credits); 1190 DEFINE_SMB3_CREDIT_EVENT(set_credits); 1191 1192 1193 TRACE_EVENT(smb3_tcon_ref, 1194 TP_PROTO(unsigned int tcon_debug_id, int ref, 1195 enum smb3_tcon_ref_trace trace), 1196 TP_ARGS(tcon_debug_id, ref, trace), 1197 TP_STRUCT__entry( 1198 __field(unsigned int, tcon) 1199 __field(int, ref) 1200 __field(enum smb3_tcon_ref_trace, trace) 1201 ), 1202 TP_fast_assign( 1203 __entry->tcon = tcon_debug_id; 1204 __entry->ref = ref; 1205 __entry->trace = trace; 1206 ), 1207 TP_printk("TC=%08x %s r=%u", 1208 __entry->tcon, 1209 __print_symbolic(__entry->trace, smb3_tcon_ref_traces), 1210 __entry->ref) 1211 ); 1212 1213 1214 #undef EM 1215 #undef E_ 1216 #endif /* _CIFS_TRACE_H */ 1217 1218 #undef TRACE_INCLUDE_PATH 1219 #define TRACE_INCLUDE_PATH . 1220 #define TRACE_INCLUDE_FILE trace 1221 #include <trace/define_trace.h> 1222