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 #undef TRACE_SYSTEM 8 #define TRACE_SYSTEM cifs 9 10 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 11 #define _CIFS_TRACE_H 12 13 #include <linux/tracepoint.h> 14 15 /* For logging errors in read or write */ 16 DECLARE_EVENT_CLASS(smb3_rw_err_class, 17 TP_PROTO(unsigned int xid, 18 __u64 fid, 19 __u32 tid, 20 __u64 sesid, 21 __u64 offset, 22 __u32 len, 23 int rc), 24 TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 25 TP_STRUCT__entry( 26 __field(unsigned int, xid) 27 __field(__u64, fid) 28 __field(__u32, tid) 29 __field(__u64, sesid) 30 __field(__u64, offset) 31 __field(__u32, len) 32 __field(int, rc) 33 ), 34 TP_fast_assign( 35 __entry->xid = xid; 36 __entry->fid = fid; 37 __entry->tid = tid; 38 __entry->sesid = sesid; 39 __entry->offset = offset; 40 __entry->len = len; 41 __entry->rc = rc; 42 ), 43 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 44 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 45 __entry->offset, __entry->len, __entry->rc) 46 ) 47 48 #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 49 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 50 TP_PROTO(unsigned int xid, \ 51 __u64 fid, \ 52 __u32 tid, \ 53 __u64 sesid, \ 54 __u64 offset, \ 55 __u32 len, \ 56 int rc), \ 57 TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 58 59 DEFINE_SMB3_RW_ERR_EVENT(write_err); 60 DEFINE_SMB3_RW_ERR_EVENT(read_err); 61 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 62 DEFINE_SMB3_RW_ERR_EVENT(zero_err); 63 DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 64 65 66 /* For logging successful read or write */ 67 DECLARE_EVENT_CLASS(smb3_rw_done_class, 68 TP_PROTO(unsigned int xid, 69 __u64 fid, 70 __u32 tid, 71 __u64 sesid, 72 __u64 offset, 73 __u32 len), 74 TP_ARGS(xid, fid, tid, sesid, offset, len), 75 TP_STRUCT__entry( 76 __field(unsigned int, xid) 77 __field(__u64, fid) 78 __field(__u32, tid) 79 __field(__u64, sesid) 80 __field(__u64, offset) 81 __field(__u32, len) 82 ), 83 TP_fast_assign( 84 __entry->xid = xid; 85 __entry->fid = fid; 86 __entry->tid = tid; 87 __entry->sesid = sesid; 88 __entry->offset = offset; 89 __entry->len = len; 90 ), 91 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 92 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 93 __entry->offset, __entry->len) 94 ) 95 96 #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 97 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 98 TP_PROTO(unsigned int xid, \ 99 __u64 fid, \ 100 __u32 tid, \ 101 __u64 sesid, \ 102 __u64 offset, \ 103 __u32 len), \ 104 TP_ARGS(xid, fid, tid, sesid, offset, len)) 105 106 DEFINE_SMB3_RW_DONE_EVENT(write_enter); 107 DEFINE_SMB3_RW_DONE_EVENT(read_enter); 108 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 109 DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 110 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 111 DEFINE_SMB3_RW_DONE_EVENT(write_done); 112 DEFINE_SMB3_RW_DONE_EVENT(read_done); 113 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 114 DEFINE_SMB3_RW_DONE_EVENT(zero_done); 115 DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 116 117 /* 118 * For handle based calls other than read and write, and get/set info 119 */ 120 DECLARE_EVENT_CLASS(smb3_fd_class, 121 TP_PROTO(unsigned int xid, 122 __u64 fid, 123 __u32 tid, 124 __u64 sesid), 125 TP_ARGS(xid, fid, tid, sesid), 126 TP_STRUCT__entry( 127 __field(unsigned int, xid) 128 __field(__u64, fid) 129 __field(__u32, tid) 130 __field(__u64, sesid) 131 ), 132 TP_fast_assign( 133 __entry->xid = xid; 134 __entry->fid = fid; 135 __entry->tid = tid; 136 __entry->sesid = sesid; 137 ), 138 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", 139 __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 140 ) 141 142 #define DEFINE_SMB3_FD_EVENT(name) \ 143 DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 144 TP_PROTO(unsigned int xid, \ 145 __u64 fid, \ 146 __u32 tid, \ 147 __u64 sesid), \ 148 TP_ARGS(xid, fid, tid, sesid)) 149 150 DEFINE_SMB3_FD_EVENT(flush_enter); 151 DEFINE_SMB3_FD_EVENT(flush_done); 152 DEFINE_SMB3_FD_EVENT(close_enter); 153 DEFINE_SMB3_FD_EVENT(close_done); 154 155 DECLARE_EVENT_CLASS(smb3_fd_err_class, 156 TP_PROTO(unsigned int xid, 157 __u64 fid, 158 __u32 tid, 159 __u64 sesid, 160 int rc), 161 TP_ARGS(xid, fid, tid, sesid, rc), 162 TP_STRUCT__entry( 163 __field(unsigned int, xid) 164 __field(__u64, fid) 165 __field(__u32, tid) 166 __field(__u64, sesid) 167 __field(int, rc) 168 ), 169 TP_fast_assign( 170 __entry->xid = xid; 171 __entry->fid = fid; 172 __entry->tid = tid; 173 __entry->sesid = sesid; 174 __entry->rc = rc; 175 ), 176 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 177 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 178 __entry->rc) 179 ) 180 181 #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 182 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 183 TP_PROTO(unsigned int xid, \ 184 __u64 fid, \ 185 __u32 tid, \ 186 __u64 sesid, \ 187 int rc), \ 188 TP_ARGS(xid, fid, tid, sesid, rc)) 189 190 DEFINE_SMB3_FD_ERR_EVENT(flush_err); 191 DEFINE_SMB3_FD_ERR_EVENT(lock_err); 192 DEFINE_SMB3_FD_ERR_EVENT(close_err); 193 194 /* 195 * For handle based query/set info calls 196 */ 197 DECLARE_EVENT_CLASS(smb3_inf_enter_class, 198 TP_PROTO(unsigned int xid, 199 __u64 fid, 200 __u32 tid, 201 __u64 sesid, 202 __u8 infclass, 203 __u32 type), 204 TP_ARGS(xid, fid, tid, sesid, infclass, type), 205 TP_STRUCT__entry( 206 __field(unsigned int, xid) 207 __field(__u64, fid) 208 __field(__u32, tid) 209 __field(__u64, sesid) 210 __field(__u8, infclass) 211 __field(__u32, type) 212 ), 213 TP_fast_assign( 214 __entry->xid = xid; 215 __entry->fid = fid; 216 __entry->tid = tid; 217 __entry->sesid = sesid; 218 __entry->infclass = infclass; 219 __entry->type = type; 220 ), 221 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 222 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 223 __entry->infclass, __entry->type) 224 ) 225 226 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 227 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 228 TP_PROTO(unsigned int xid, \ 229 __u64 fid, \ 230 __u32 tid, \ 231 __u64 sesid, \ 232 __u8 infclass, \ 233 __u32 type), \ 234 TP_ARGS(xid, fid, tid, sesid, infclass, type)) 235 236 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 237 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 238 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 239 DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 240 241 DECLARE_EVENT_CLASS(smb3_inf_err_class, 242 TP_PROTO(unsigned int xid, 243 __u64 fid, 244 __u32 tid, 245 __u64 sesid, 246 __u8 infclass, 247 __u32 type, 248 int rc), 249 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 250 TP_STRUCT__entry( 251 __field(unsigned int, xid) 252 __field(__u64, fid) 253 __field(__u32, tid) 254 __field(__u64, sesid) 255 __field(__u8, infclass) 256 __field(__u32, type) 257 __field(int, rc) 258 ), 259 TP_fast_assign( 260 __entry->xid = xid; 261 __entry->fid = fid; 262 __entry->tid = tid; 263 __entry->sesid = sesid; 264 __entry->infclass = infclass; 265 __entry->type = type; 266 __entry->rc = rc; 267 ), 268 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 269 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 270 __entry->infclass, __entry->type, __entry->rc) 271 ) 272 273 #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 274 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 275 TP_PROTO(unsigned int xid, \ 276 __u64 fid, \ 277 __u32 tid, \ 278 __u64 sesid, \ 279 __u8 infclass, \ 280 __u32 type, \ 281 int rc), \ 282 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 283 284 DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 285 DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 286 DEFINE_SMB3_INF_ERR_EVENT(notify_err); 287 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 288 289 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 290 TP_PROTO(unsigned int xid, 291 __u32 tid, 292 __u64 sesid, 293 const char *full_path), 294 TP_ARGS(xid, tid, sesid, full_path), 295 TP_STRUCT__entry( 296 __field(unsigned int, xid) 297 __field(__u32, tid) 298 __field(__u64, sesid) 299 __string(path, full_path) 300 ), 301 TP_fast_assign( 302 __entry->xid = xid; 303 __entry->tid = tid; 304 __entry->sesid = sesid; 305 __assign_str(path, full_path); 306 ), 307 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 308 __entry->xid, __entry->sesid, __entry->tid, 309 __get_str(path)) 310 ) 311 312 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 313 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 314 TP_PROTO(unsigned int xid, \ 315 __u32 tid, \ 316 __u64 sesid, \ 317 const char *full_path), \ 318 TP_ARGS(xid, tid, sesid, full_path)) 319 320 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 321 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 322 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 323 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 324 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 325 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 326 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 327 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 328 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 329 330 331 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 332 TP_PROTO(unsigned int xid, 333 __u32 tid, 334 __u64 sesid), 335 TP_ARGS(xid, tid, sesid), 336 TP_STRUCT__entry( 337 __field(unsigned int, xid) 338 __field(__u32, tid) 339 __field(__u64, sesid) 340 ), 341 TP_fast_assign( 342 __entry->xid = xid; 343 __entry->tid = tid; 344 __entry->sesid = sesid; 345 ), 346 TP_printk("xid=%u sid=0x%llx tid=0x%x", 347 __entry->xid, __entry->sesid, __entry->tid) 348 ) 349 350 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 351 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 352 TP_PROTO(unsigned int xid, \ 353 __u32 tid, \ 354 __u64 sesid), \ 355 TP_ARGS(xid, tid, sesid)) 356 357 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 358 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 359 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 360 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 361 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 362 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 363 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 364 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 365 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 366 367 368 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 369 TP_PROTO(unsigned int xid, 370 __u32 tid, 371 __u64 sesid, 372 int rc), 373 TP_ARGS(xid, tid, sesid, rc), 374 TP_STRUCT__entry( 375 __field(unsigned int, xid) 376 __field(__u32, tid) 377 __field(__u64, sesid) 378 __field(int, rc) 379 ), 380 TP_fast_assign( 381 __entry->xid = xid; 382 __entry->tid = tid; 383 __entry->sesid = sesid; 384 __entry->rc = rc; 385 ), 386 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 387 __entry->xid, __entry->sesid, __entry->tid, 388 __entry->rc) 389 ) 390 391 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 392 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 393 TP_PROTO(unsigned int xid, \ 394 __u32 tid, \ 395 __u64 sesid, \ 396 int rc), \ 397 TP_ARGS(xid, tid, sesid, rc)) 398 399 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 400 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 401 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 402 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 403 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 404 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 405 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 406 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 407 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 408 409 /* 410 * For logging SMB3 Status code and Command for responses which return errors 411 */ 412 DECLARE_EVENT_CLASS(smb3_cmd_err_class, 413 TP_PROTO(__u32 tid, 414 __u64 sesid, 415 __u16 cmd, 416 __u64 mid, 417 __u32 status, 418 int rc), 419 TP_ARGS(tid, sesid, cmd, mid, status, rc), 420 TP_STRUCT__entry( 421 __field(__u32, tid) 422 __field(__u64, sesid) 423 __field(__u16, cmd) 424 __field(__u64, mid) 425 __field(__u32, status) 426 __field(int, rc) 427 ), 428 TP_fast_assign( 429 __entry->tid = tid; 430 __entry->sesid = sesid; 431 __entry->cmd = cmd; 432 __entry->mid = mid; 433 __entry->status = status; 434 __entry->rc = rc; 435 ), 436 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 437 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 438 __entry->status, __entry->rc) 439 ) 440 441 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 442 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 443 TP_PROTO(__u32 tid, \ 444 __u64 sesid, \ 445 __u16 cmd, \ 446 __u64 mid, \ 447 __u32 status, \ 448 int rc), \ 449 TP_ARGS(tid, sesid, cmd, mid, status, rc)) 450 451 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 452 453 DECLARE_EVENT_CLASS(smb3_cmd_done_class, 454 TP_PROTO(__u32 tid, 455 __u64 sesid, 456 __u16 cmd, 457 __u64 mid), 458 TP_ARGS(tid, sesid, cmd, mid), 459 TP_STRUCT__entry( 460 __field(__u32, tid) 461 __field(__u64, sesid) 462 __field(__u16, cmd) 463 __field(__u64, mid) 464 ), 465 TP_fast_assign( 466 __entry->tid = tid; 467 __entry->sesid = sesid; 468 __entry->cmd = cmd; 469 __entry->mid = mid; 470 ), 471 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 472 __entry->sesid, __entry->tid, 473 __entry->cmd, __entry->mid) 474 ) 475 476 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 477 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 478 TP_PROTO(__u32 tid, \ 479 __u64 sesid, \ 480 __u16 cmd, \ 481 __u64 mid), \ 482 TP_ARGS(tid, sesid, cmd, mid)) 483 484 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 485 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 486 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 487 488 DECLARE_EVENT_CLASS(smb3_mid_class, 489 TP_PROTO(__u16 cmd, 490 __u64 mid, 491 __u32 pid, 492 unsigned long when_sent, 493 unsigned long when_received), 494 TP_ARGS(cmd, mid, pid, when_sent, when_received), 495 TP_STRUCT__entry( 496 __field(__u16, cmd) 497 __field(__u64, mid) 498 __field(__u32, pid) 499 __field(unsigned long, when_sent) 500 __field(unsigned long, when_received) 501 ), 502 TP_fast_assign( 503 __entry->cmd = cmd; 504 __entry->mid = mid; 505 __entry->pid = pid; 506 __entry->when_sent = when_sent; 507 __entry->when_received = when_received; 508 ), 509 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 510 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 511 __entry->when_received) 512 ) 513 514 #define DEFINE_SMB3_MID_EVENT(name) \ 515 DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 516 TP_PROTO(__u16 cmd, \ 517 __u64 mid, \ 518 __u32 pid, \ 519 unsigned long when_sent, \ 520 unsigned long when_received), \ 521 TP_ARGS(cmd, mid, pid, when_sent, when_received)) 522 523 DEFINE_SMB3_MID_EVENT(slow_rsp); 524 525 DECLARE_EVENT_CLASS(smb3_exit_err_class, 526 TP_PROTO(unsigned int xid, 527 const char *func_name, 528 int rc), 529 TP_ARGS(xid, func_name, rc), 530 TP_STRUCT__entry( 531 __field(unsigned int, xid) 532 __field(const char *, func_name) 533 __field(int, rc) 534 ), 535 TP_fast_assign( 536 __entry->xid = xid; 537 __entry->func_name = func_name; 538 __entry->rc = rc; 539 ), 540 TP_printk("\t%s: xid=%u rc=%d", 541 __entry->func_name, __entry->xid, __entry->rc) 542 ) 543 544 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 545 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 546 TP_PROTO(unsigned int xid, \ 547 const char *func_name, \ 548 int rc), \ 549 TP_ARGS(xid, func_name, rc)) 550 551 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 552 553 554 DECLARE_EVENT_CLASS(smb3_sync_err_class, 555 TP_PROTO(unsigned long ino, 556 int rc), 557 TP_ARGS(ino, rc), 558 TP_STRUCT__entry( 559 __field(unsigned long, ino) 560 __field(int, rc) 561 ), 562 TP_fast_assign( 563 __entry->ino = ino; 564 __entry->rc = rc; 565 ), 566 TP_printk("\tino=%lu rc=%d", 567 __entry->ino, __entry->rc) 568 ) 569 570 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 571 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 572 TP_PROTO(unsigned long ino, \ 573 int rc), \ 574 TP_ARGS(ino, rc)) 575 576 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 577 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 578 579 580 DECLARE_EVENT_CLASS(smb3_enter_exit_class, 581 TP_PROTO(unsigned int xid, 582 const char *func_name), 583 TP_ARGS(xid, func_name), 584 TP_STRUCT__entry( 585 __field(unsigned int, xid) 586 __field(const char *, func_name) 587 ), 588 TP_fast_assign( 589 __entry->xid = xid; 590 __entry->func_name = func_name; 591 ), 592 TP_printk("\t%s: xid=%u", 593 __entry->func_name, __entry->xid) 594 ) 595 596 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 597 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 598 TP_PROTO(unsigned int xid, \ 599 const char *func_name), \ 600 TP_ARGS(xid, func_name)) 601 602 DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 603 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 604 605 /* 606 * For SMB2/SMB3 tree connect 607 */ 608 609 DECLARE_EVENT_CLASS(smb3_tcon_class, 610 TP_PROTO(unsigned int xid, 611 __u32 tid, 612 __u64 sesid, 613 const char *unc_name, 614 int rc), 615 TP_ARGS(xid, tid, sesid, unc_name, rc), 616 TP_STRUCT__entry( 617 __field(unsigned int, xid) 618 __field(__u32, tid) 619 __field(__u64, sesid) 620 __string(name, unc_name) 621 __field(int, rc) 622 ), 623 TP_fast_assign( 624 __entry->xid = xid; 625 __entry->tid = tid; 626 __entry->sesid = sesid; 627 __assign_str(name, unc_name); 628 __entry->rc = rc; 629 ), 630 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 631 __entry->xid, __entry->sesid, __entry->tid, 632 __get_str(name), __entry->rc) 633 ) 634 635 #define DEFINE_SMB3_TCON_EVENT(name) \ 636 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 637 TP_PROTO(unsigned int xid, \ 638 __u32 tid, \ 639 __u64 sesid, \ 640 const char *unc_name, \ 641 int rc), \ 642 TP_ARGS(xid, tid, sesid, unc_name, rc)) 643 644 DEFINE_SMB3_TCON_EVENT(tcon); 645 646 647 /* 648 * For smb2/smb3 open (including create and mkdir) calls 649 */ 650 651 DECLARE_EVENT_CLASS(smb3_open_enter_class, 652 TP_PROTO(unsigned int xid, 653 __u32 tid, 654 __u64 sesid, 655 int create_options, 656 int desired_access), 657 TP_ARGS(xid, tid, sesid, create_options, desired_access), 658 TP_STRUCT__entry( 659 __field(unsigned int, xid) 660 __field(__u32, tid) 661 __field(__u64, sesid) 662 __field(int, create_options) 663 __field(int, desired_access) 664 ), 665 TP_fast_assign( 666 __entry->xid = xid; 667 __entry->tid = tid; 668 __entry->sesid = sesid; 669 __entry->create_options = create_options; 670 __entry->desired_access = desired_access; 671 ), 672 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x", 673 __entry->xid, __entry->sesid, __entry->tid, 674 __entry->create_options, __entry->desired_access) 675 ) 676 677 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 678 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 679 TP_PROTO(unsigned int xid, \ 680 __u32 tid, \ 681 __u64 sesid, \ 682 int create_options, \ 683 int desired_access), \ 684 TP_ARGS(xid, tid, sesid, create_options, desired_access)) 685 686 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 687 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 688 689 DECLARE_EVENT_CLASS(smb3_open_err_class, 690 TP_PROTO(unsigned int xid, 691 __u32 tid, 692 __u64 sesid, 693 int create_options, 694 int desired_access, 695 int rc), 696 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 697 TP_STRUCT__entry( 698 __field(unsigned int, xid) 699 __field(__u32, tid) 700 __field(__u64, sesid) 701 __field(int, create_options) 702 __field(int, desired_access) 703 __field(int, rc) 704 ), 705 TP_fast_assign( 706 __entry->xid = xid; 707 __entry->tid = tid; 708 __entry->sesid = sesid; 709 __entry->create_options = create_options; 710 __entry->desired_access = desired_access; 711 __entry->rc = rc; 712 ), 713 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 714 __entry->xid, __entry->sesid, __entry->tid, 715 __entry->create_options, __entry->desired_access, __entry->rc) 716 ) 717 718 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 719 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 720 TP_PROTO(unsigned int xid, \ 721 __u32 tid, \ 722 __u64 sesid, \ 723 int create_options, \ 724 int desired_access, \ 725 int rc), \ 726 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 727 728 DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 729 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 730 731 DECLARE_EVENT_CLASS(smb3_open_done_class, 732 TP_PROTO(unsigned int xid, 733 __u64 fid, 734 __u32 tid, 735 __u64 sesid, 736 int create_options, 737 int desired_access), 738 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 739 TP_STRUCT__entry( 740 __field(unsigned int, xid) 741 __field(__u64, fid) 742 __field(__u32, tid) 743 __field(__u64, sesid) 744 __field(int, create_options) 745 __field(int, desired_access) 746 ), 747 TP_fast_assign( 748 __entry->xid = xid; 749 __entry->fid = fid; 750 __entry->tid = tid; 751 __entry->sesid = sesid; 752 __entry->create_options = create_options; 753 __entry->desired_access = desired_access; 754 ), 755 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 756 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 757 __entry->create_options, __entry->desired_access) 758 ) 759 760 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 761 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 762 TP_PROTO(unsigned int xid, \ 763 __u64 fid, \ 764 __u32 tid, \ 765 __u64 sesid, \ 766 int create_options, \ 767 int desired_access), \ 768 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 769 770 DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 771 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 772 773 774 DECLARE_EVENT_CLASS(smb3_lease_done_class, 775 TP_PROTO(__u32 lease_state, 776 __u32 tid, 777 __u64 sesid, 778 __u64 lease_key_low, 779 __u64 lease_key_high), 780 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 781 TP_STRUCT__entry( 782 __field(__u32, lease_state) 783 __field(__u32, tid) 784 __field(__u64, sesid) 785 __field(__u64, lease_key_low) 786 __field(__u64, lease_key_high) 787 ), 788 TP_fast_assign( 789 __entry->lease_state = lease_state; 790 __entry->tid = tid; 791 __entry->sesid = sesid; 792 __entry->lease_key_low = lease_key_low; 793 __entry->lease_key_high = lease_key_high; 794 ), 795 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 796 __entry->sesid, __entry->tid, __entry->lease_key_high, 797 __entry->lease_key_low, __entry->lease_state) 798 ) 799 800 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 801 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 802 TP_PROTO(__u32 lease_state, \ 803 __u32 tid, \ 804 __u64 sesid, \ 805 __u64 lease_key_low, \ 806 __u64 lease_key_high), \ 807 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 808 809 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 810 811 DECLARE_EVENT_CLASS(smb3_lease_err_class, 812 TP_PROTO(__u32 lease_state, 813 __u32 tid, 814 __u64 sesid, 815 __u64 lease_key_low, 816 __u64 lease_key_high, 817 int rc), 818 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 819 TP_STRUCT__entry( 820 __field(__u32, lease_state) 821 __field(__u32, tid) 822 __field(__u64, sesid) 823 __field(__u64, lease_key_low) 824 __field(__u64, lease_key_high) 825 __field(int, rc) 826 ), 827 TP_fast_assign( 828 __entry->lease_state = lease_state; 829 __entry->tid = tid; 830 __entry->sesid = sesid; 831 __entry->lease_key_low = lease_key_low; 832 __entry->lease_key_high = lease_key_high; 833 __entry->rc = rc; 834 ), 835 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 836 __entry->sesid, __entry->tid, __entry->lease_key_high, 837 __entry->lease_key_low, __entry->lease_state, __entry->rc) 838 ) 839 840 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 841 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 842 TP_PROTO(__u32 lease_state, \ 843 __u32 tid, \ 844 __u64 sesid, \ 845 __u64 lease_key_low, \ 846 __u64 lease_key_high, \ 847 int rc), \ 848 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 849 850 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 851 852 DECLARE_EVENT_CLASS(smb3_reconnect_class, 853 TP_PROTO(__u64 currmid, 854 char *hostname), 855 TP_ARGS(currmid, hostname), 856 TP_STRUCT__entry( 857 __field(__u64, currmid) 858 __field(char *, hostname) 859 ), 860 TP_fast_assign( 861 __entry->currmid = currmid; 862 __entry->hostname = hostname; 863 ), 864 TP_printk("server=%s current_mid=0x%llx", 865 __entry->hostname, 866 __entry->currmid) 867 ) 868 869 #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 870 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 871 TP_PROTO(__u64 currmid, \ 872 char *hostname), \ 873 TP_ARGS(currmid, hostname)) 874 875 DEFINE_SMB3_RECONNECT_EVENT(reconnect); 876 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 877 878 DECLARE_EVENT_CLASS(smb3_credit_class, 879 TP_PROTO(__u64 currmid, 880 char *hostname, 881 int credits, 882 int credits_to_add), 883 TP_ARGS(currmid, hostname, credits, credits_to_add), 884 TP_STRUCT__entry( 885 __field(__u64, currmid) 886 __field(char *, hostname) 887 __field(int, credits) 888 __field(int, credits_to_add) 889 ), 890 TP_fast_assign( 891 __entry->currmid = currmid; 892 __entry->hostname = hostname; 893 __entry->credits = credits; 894 __entry->credits_to_add = credits_to_add; 895 ), 896 TP_printk("server=%s current_mid=0x%llx credits=%d credits_to_add=%d", 897 __entry->hostname, 898 __entry->currmid, 899 __entry->credits, 900 __entry->credits_to_add) 901 ) 902 903 #define DEFINE_SMB3_CREDIT_EVENT(name) \ 904 DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 905 TP_PROTO(__u64 currmid, \ 906 char *hostname, \ 907 int credits, \ 908 int credits_to_add), \ 909 TP_ARGS(currmid, hostname, credits, credits_to_add)) 910 911 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 912 DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 913 DEFINE_SMB3_CREDIT_EVENT(add_credits); 914 915 #endif /* _CIFS_TRACE_H */ 916 917 #undef TRACE_INCLUDE_PATH 918 #define TRACE_INCLUDE_PATH . 919 #define TRACE_INCLUDE_FILE trace 920 #include <trace/define_trace.h> 921