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