trace.h (28055B)
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 */ 23DECLARE_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) \ 56DEFINE_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 66DEFINE_SMB3_RW_ERR_EVENT(write_err); 67DEFINE_SMB3_RW_ERR_EVENT(read_err); 68DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 69DEFINE_SMB3_RW_ERR_EVENT(zero_err); 70DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 71 72 73/* For logging successful read or write */ 74DECLARE_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) \ 104DEFINE_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 113DEFINE_SMB3_RW_DONE_EVENT(write_enter); 114DEFINE_SMB3_RW_DONE_EVENT(read_enter); 115DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 116DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 117DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 118DEFINE_SMB3_RW_DONE_EVENT(write_done); 119DEFINE_SMB3_RW_DONE_EVENT(read_done); 120DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 121DEFINE_SMB3_RW_DONE_EVENT(zero_done); 122DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 123 124/* For logging successful set EOF (truncate) */ 125DECLARE_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) \ 152DEFINE_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 160DEFINE_SMB3_EOF_EVENT(set_eof); 161 162/* 163 * For handle based calls other than read and write, and get/set info 164 */ 165DECLARE_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) \ 188DEFINE_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 195DEFINE_SMB3_FD_EVENT(flush_enter); 196DEFINE_SMB3_FD_EVENT(flush_done); 197DEFINE_SMB3_FD_EVENT(close_enter); 198DEFINE_SMB3_FD_EVENT(close_done); 199DEFINE_SMB3_FD_EVENT(oplock_not_found); 200 201DECLARE_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) \ 228DEFINE_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 236DEFINE_SMB3_FD_ERR_EVENT(flush_err); 237DEFINE_SMB3_FD_ERR_EVENT(lock_err); 238DEFINE_SMB3_FD_ERR_EVENT(close_err); 239 240/* 241 * For handle based query/set info calls 242 */ 243DECLARE_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) \ 273DEFINE_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 282DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 283DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 284DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 285DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 286 287DECLARE_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) \ 320DEFINE_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 330DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 331DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 332DEFINE_SMB3_INF_ERR_EVENT(notify_err); 333DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 334 335DECLARE_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) \ 359DEFINE_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 366DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 367DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 368DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 369DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 370DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 371DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 372DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 373DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 374DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 375 376 377DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 378 TP_PROTO(unsigned int xid, 379 __u32 tid, 380 __u64 sesid), 381 TP_ARGS(xid, tid, sesid), 382 TP_STRUCT__entry( 383 __field(unsigned int, xid) 384 __field(__u32, tid) 385 __field(__u64, sesid) 386 ), 387 TP_fast_assign( 388 __entry->xid = xid; 389 __entry->tid = tid; 390 __entry->sesid = sesid; 391 ), 392 TP_printk("xid=%u sid=0x%llx tid=0x%x", 393 __entry->xid, __entry->sesid, __entry->tid) 394) 395 396#define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 397DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 398 TP_PROTO(unsigned int xid, \ 399 __u32 tid, \ 400 __u64 sesid), \ 401 TP_ARGS(xid, tid, sesid)) 402 403DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 404DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 405DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 406DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 407DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 408DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 409DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 410DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 411DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 412 413 414DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 415 TP_PROTO(unsigned int xid, 416 __u32 tid, 417 __u64 sesid, 418 int rc), 419 TP_ARGS(xid, tid, sesid, rc), 420 TP_STRUCT__entry( 421 __field(unsigned int, xid) 422 __field(__u32, tid) 423 __field(__u64, sesid) 424 __field(int, rc) 425 ), 426 TP_fast_assign( 427 __entry->xid = xid; 428 __entry->tid = tid; 429 __entry->sesid = sesid; 430 __entry->rc = rc; 431 ), 432 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 433 __entry->xid, __entry->sesid, __entry->tid, 434 __entry->rc) 435) 436 437#define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 438DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 439 TP_PROTO(unsigned int xid, \ 440 __u32 tid, \ 441 __u64 sesid, \ 442 int rc), \ 443 TP_ARGS(xid, tid, sesid, rc)) 444 445DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 446DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 447DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 448DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 449DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 450DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 451DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 452DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 453DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 454 455/* 456 * For logging SMB3 Status code and Command for responses which return errors 457 */ 458DECLARE_EVENT_CLASS(smb3_cmd_err_class, 459 TP_PROTO(__u32 tid, 460 __u64 sesid, 461 __u16 cmd, 462 __u64 mid, 463 __u32 status, 464 int rc), 465 TP_ARGS(tid, sesid, cmd, mid, status, rc), 466 TP_STRUCT__entry( 467 __field(__u32, tid) 468 __field(__u64, sesid) 469 __field(__u16, cmd) 470 __field(__u64, mid) 471 __field(__u32, status) 472 __field(int, rc) 473 ), 474 TP_fast_assign( 475 __entry->tid = tid; 476 __entry->sesid = sesid; 477 __entry->cmd = cmd; 478 __entry->mid = mid; 479 __entry->status = status; 480 __entry->rc = rc; 481 ), 482 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 483 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 484 __entry->status, __entry->rc) 485) 486 487#define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 488DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 489 TP_PROTO(__u32 tid, \ 490 __u64 sesid, \ 491 __u16 cmd, \ 492 __u64 mid, \ 493 __u32 status, \ 494 int rc), \ 495 TP_ARGS(tid, sesid, cmd, mid, status, rc)) 496 497DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 498 499DECLARE_EVENT_CLASS(smb3_cmd_done_class, 500 TP_PROTO(__u32 tid, 501 __u64 sesid, 502 __u16 cmd, 503 __u64 mid), 504 TP_ARGS(tid, sesid, cmd, mid), 505 TP_STRUCT__entry( 506 __field(__u32, tid) 507 __field(__u64, sesid) 508 __field(__u16, cmd) 509 __field(__u64, mid) 510 ), 511 TP_fast_assign( 512 __entry->tid = tid; 513 __entry->sesid = sesid; 514 __entry->cmd = cmd; 515 __entry->mid = mid; 516 ), 517 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 518 __entry->sesid, __entry->tid, 519 __entry->cmd, __entry->mid) 520) 521 522#define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 523DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 524 TP_PROTO(__u32 tid, \ 525 __u64 sesid, \ 526 __u16 cmd, \ 527 __u64 mid), \ 528 TP_ARGS(tid, sesid, cmd, mid)) 529 530DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 531DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 532DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 533 534DECLARE_EVENT_CLASS(smb3_mid_class, 535 TP_PROTO(__u16 cmd, 536 __u64 mid, 537 __u32 pid, 538 unsigned long when_sent, 539 unsigned long when_received), 540 TP_ARGS(cmd, mid, pid, when_sent, when_received), 541 TP_STRUCT__entry( 542 __field(__u16, cmd) 543 __field(__u64, mid) 544 __field(__u32, pid) 545 __field(unsigned long, when_sent) 546 __field(unsigned long, when_received) 547 ), 548 TP_fast_assign( 549 __entry->cmd = cmd; 550 __entry->mid = mid; 551 __entry->pid = pid; 552 __entry->when_sent = when_sent; 553 __entry->when_received = when_received; 554 ), 555 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 556 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 557 __entry->when_received) 558) 559 560#define DEFINE_SMB3_MID_EVENT(name) \ 561DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 562 TP_PROTO(__u16 cmd, \ 563 __u64 mid, \ 564 __u32 pid, \ 565 unsigned long when_sent, \ 566 unsigned long when_received), \ 567 TP_ARGS(cmd, mid, pid, when_sent, when_received)) 568 569DEFINE_SMB3_MID_EVENT(slow_rsp); 570 571DECLARE_EVENT_CLASS(smb3_exit_err_class, 572 TP_PROTO(unsigned int xid, 573 const char *func_name, 574 int rc), 575 TP_ARGS(xid, func_name, rc), 576 TP_STRUCT__entry( 577 __field(unsigned int, xid) 578 __string(func_name, func_name) 579 __field(int, rc) 580 ), 581 TP_fast_assign( 582 __entry->xid = xid; 583 __assign_str(func_name, func_name); 584 __entry->rc = rc; 585 ), 586 TP_printk("\t%s: xid=%u rc=%d", 587 __get_str(func_name), __entry->xid, __entry->rc) 588) 589 590#define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 591DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 592 TP_PROTO(unsigned int xid, \ 593 const char *func_name, \ 594 int rc), \ 595 TP_ARGS(xid, func_name, rc)) 596 597DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 598 599 600DECLARE_EVENT_CLASS(smb3_sync_err_class, 601 TP_PROTO(unsigned long ino, 602 int rc), 603 TP_ARGS(ino, rc), 604 TP_STRUCT__entry( 605 __field(unsigned long, ino) 606 __field(int, rc) 607 ), 608 TP_fast_assign( 609 __entry->ino = ino; 610 __entry->rc = rc; 611 ), 612 TP_printk("\tino=%lu rc=%d", 613 __entry->ino, __entry->rc) 614) 615 616#define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 617DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 618 TP_PROTO(unsigned long ino, \ 619 int rc), \ 620 TP_ARGS(ino, rc)) 621 622DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 623DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 624 625 626DECLARE_EVENT_CLASS(smb3_enter_exit_class, 627 TP_PROTO(unsigned int xid, 628 const char *func_name), 629 TP_ARGS(xid, func_name), 630 TP_STRUCT__entry( 631 __field(unsigned int, xid) 632 __string(func_name, func_name) 633 ), 634 TP_fast_assign( 635 __entry->xid = xid; 636 __assign_str(func_name, func_name); 637 ), 638 TP_printk("\t%s: xid=%u", 639 __get_str(func_name), __entry->xid) 640) 641 642#define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 643DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 644 TP_PROTO(unsigned int xid, \ 645 const char *func_name), \ 646 TP_ARGS(xid, func_name)) 647 648DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 649DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 650 651/* 652 * For SMB2/SMB3 tree connect 653 */ 654 655DECLARE_EVENT_CLASS(smb3_tcon_class, 656 TP_PROTO(unsigned int xid, 657 __u32 tid, 658 __u64 sesid, 659 const char *unc_name, 660 int rc), 661 TP_ARGS(xid, tid, sesid, unc_name, rc), 662 TP_STRUCT__entry( 663 __field(unsigned int, xid) 664 __field(__u32, tid) 665 __field(__u64, sesid) 666 __string(name, unc_name) 667 __field(int, rc) 668 ), 669 TP_fast_assign( 670 __entry->xid = xid; 671 __entry->tid = tid; 672 __entry->sesid = sesid; 673 __assign_str(name, unc_name); 674 __entry->rc = rc; 675 ), 676 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 677 __entry->xid, __entry->sesid, __entry->tid, 678 __get_str(name), __entry->rc) 679) 680 681#define DEFINE_SMB3_TCON_EVENT(name) \ 682DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 683 TP_PROTO(unsigned int xid, \ 684 __u32 tid, \ 685 __u64 sesid, \ 686 const char *unc_name, \ 687 int rc), \ 688 TP_ARGS(xid, tid, sesid, unc_name, rc)) 689 690DEFINE_SMB3_TCON_EVENT(tcon); 691 692 693/* 694 * For smb2/smb3 open (including create and mkdir) calls 695 */ 696 697DECLARE_EVENT_CLASS(smb3_open_enter_class, 698 TP_PROTO(unsigned int xid, 699 __u32 tid, 700 __u64 sesid, 701 int create_options, 702 int desired_access), 703 TP_ARGS(xid, tid, sesid, create_options, desired_access), 704 TP_STRUCT__entry( 705 __field(unsigned int, xid) 706 __field(__u32, tid) 707 __field(__u64, sesid) 708 __field(int, create_options) 709 __field(int, desired_access) 710 ), 711 TP_fast_assign( 712 __entry->xid = xid; 713 __entry->tid = tid; 714 __entry->sesid = sesid; 715 __entry->create_options = create_options; 716 __entry->desired_access = desired_access; 717 ), 718 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x", 719 __entry->xid, __entry->sesid, __entry->tid, 720 __entry->create_options, __entry->desired_access) 721) 722 723#define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 724DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 725 TP_PROTO(unsigned int xid, \ 726 __u32 tid, \ 727 __u64 sesid, \ 728 int create_options, \ 729 int desired_access), \ 730 TP_ARGS(xid, tid, sesid, create_options, desired_access)) 731 732DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 733DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 734 735DECLARE_EVENT_CLASS(smb3_open_err_class, 736 TP_PROTO(unsigned int xid, 737 __u32 tid, 738 __u64 sesid, 739 int create_options, 740 int desired_access, 741 int rc), 742 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 743 TP_STRUCT__entry( 744 __field(unsigned int, xid) 745 __field(__u32, tid) 746 __field(__u64, sesid) 747 __field(int, create_options) 748 __field(int, desired_access) 749 __field(int, rc) 750 ), 751 TP_fast_assign( 752 __entry->xid = xid; 753 __entry->tid = tid; 754 __entry->sesid = sesid; 755 __entry->create_options = create_options; 756 __entry->desired_access = desired_access; 757 __entry->rc = rc; 758 ), 759 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 760 __entry->xid, __entry->sesid, __entry->tid, 761 __entry->create_options, __entry->desired_access, __entry->rc) 762) 763 764#define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 765DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 766 TP_PROTO(unsigned int xid, \ 767 __u32 tid, \ 768 __u64 sesid, \ 769 int create_options, \ 770 int desired_access, \ 771 int rc), \ 772 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 773 774DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 775DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 776 777DECLARE_EVENT_CLASS(smb3_open_done_class, 778 TP_PROTO(unsigned int xid, 779 __u64 fid, 780 __u32 tid, 781 __u64 sesid, 782 int create_options, 783 int desired_access), 784 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 785 TP_STRUCT__entry( 786 __field(unsigned int, xid) 787 __field(__u64, fid) 788 __field(__u32, tid) 789 __field(__u64, sesid) 790 __field(int, create_options) 791 __field(int, desired_access) 792 ), 793 TP_fast_assign( 794 __entry->xid = xid; 795 __entry->fid = fid; 796 __entry->tid = tid; 797 __entry->sesid = sesid; 798 __entry->create_options = create_options; 799 __entry->desired_access = desired_access; 800 ), 801 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 802 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 803 __entry->create_options, __entry->desired_access) 804) 805 806#define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 807DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 808 TP_PROTO(unsigned int xid, \ 809 __u64 fid, \ 810 __u32 tid, \ 811 __u64 sesid, \ 812 int create_options, \ 813 int desired_access), \ 814 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 815 816DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 817DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 818 819 820DECLARE_EVENT_CLASS(smb3_lease_done_class, 821 TP_PROTO(__u32 lease_state, 822 __u32 tid, 823 __u64 sesid, 824 __u64 lease_key_low, 825 __u64 lease_key_high), 826 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 827 TP_STRUCT__entry( 828 __field(__u32, lease_state) 829 __field(__u32, tid) 830 __field(__u64, sesid) 831 __field(__u64, lease_key_low) 832 __field(__u64, lease_key_high) 833 ), 834 TP_fast_assign( 835 __entry->lease_state = lease_state; 836 __entry->tid = tid; 837 __entry->sesid = sesid; 838 __entry->lease_key_low = lease_key_low; 839 __entry->lease_key_high = lease_key_high; 840 ), 841 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 842 __entry->sesid, __entry->tid, __entry->lease_key_high, 843 __entry->lease_key_low, __entry->lease_state) 844) 845 846#define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 847DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 848 TP_PROTO(__u32 lease_state, \ 849 __u32 tid, \ 850 __u64 sesid, \ 851 __u64 lease_key_low, \ 852 __u64 lease_key_high), \ 853 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 854 855DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 856DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found); 857 858DECLARE_EVENT_CLASS(smb3_lease_err_class, 859 TP_PROTO(__u32 lease_state, 860 __u32 tid, 861 __u64 sesid, 862 __u64 lease_key_low, 863 __u64 lease_key_high, 864 int rc), 865 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 866 TP_STRUCT__entry( 867 __field(__u32, lease_state) 868 __field(__u32, tid) 869 __field(__u64, sesid) 870 __field(__u64, lease_key_low) 871 __field(__u64, lease_key_high) 872 __field(int, rc) 873 ), 874 TP_fast_assign( 875 __entry->lease_state = lease_state; 876 __entry->tid = tid; 877 __entry->sesid = sesid; 878 __entry->lease_key_low = lease_key_low; 879 __entry->lease_key_high = lease_key_high; 880 __entry->rc = rc; 881 ), 882 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 883 __entry->sesid, __entry->tid, __entry->lease_key_high, 884 __entry->lease_key_low, __entry->lease_state, __entry->rc) 885) 886 887#define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 888DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 889 TP_PROTO(__u32 lease_state, \ 890 __u32 tid, \ 891 __u64 sesid, \ 892 __u64 lease_key_low, \ 893 __u64 lease_key_high, \ 894 int rc), \ 895 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 896 897DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 898 899DECLARE_EVENT_CLASS(smb3_connect_class, 900 TP_PROTO(char *hostname, 901 __u64 conn_id, 902 const struct __kernel_sockaddr_storage *dst_addr), 903 TP_ARGS(hostname, conn_id, dst_addr), 904 TP_STRUCT__entry( 905 __string(hostname, hostname) 906 __field(__u64, conn_id) 907 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 908 ), 909 TP_fast_assign( 910 struct sockaddr_storage *pss = NULL; 911 912 __entry->conn_id = conn_id; 913 pss = (struct sockaddr_storage *)__entry->dst_addr; 914 *pss = *dst_addr; 915 __assign_str(hostname, hostname); 916 ), 917 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc", 918 __entry->conn_id, 919 __get_str(hostname), 920 __entry->dst_addr) 921) 922 923#define DEFINE_SMB3_CONNECT_EVENT(name) \ 924DEFINE_EVENT(smb3_connect_class, smb3_##name, \ 925 TP_PROTO(char *hostname, \ 926 __u64 conn_id, \ 927 const struct __kernel_sockaddr_storage *addr), \ 928 TP_ARGS(hostname, conn_id, addr)) 929 930DEFINE_SMB3_CONNECT_EVENT(connect_done); 931 932DECLARE_EVENT_CLASS(smb3_connect_err_class, 933 TP_PROTO(char *hostname, __u64 conn_id, 934 const struct __kernel_sockaddr_storage *dst_addr, int rc), 935 TP_ARGS(hostname, conn_id, dst_addr, rc), 936 TP_STRUCT__entry( 937 __string(hostname, hostname) 938 __field(__u64, conn_id) 939 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 940 __field(int, rc) 941 ), 942 TP_fast_assign( 943 struct sockaddr_storage *pss = NULL; 944 945 __entry->conn_id = conn_id; 946 __entry->rc = rc; 947 pss = (struct sockaddr_storage *)__entry->dst_addr; 948 *pss = *dst_addr; 949 __assign_str(hostname, hostname); 950 ), 951 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc", 952 __entry->rc, 953 __entry->conn_id, 954 __get_str(hostname), 955 __entry->dst_addr) 956) 957 958#define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \ 959DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \ 960 TP_PROTO(char *hostname, \ 961 __u64 conn_id, \ 962 const struct __kernel_sockaddr_storage *addr, \ 963 int rc), \ 964 TP_ARGS(hostname, conn_id, addr, rc)) 965 966DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err); 967 968DECLARE_EVENT_CLASS(smb3_reconnect_class, 969 TP_PROTO(__u64 currmid, 970 __u64 conn_id, 971 char *hostname), 972 TP_ARGS(currmid, conn_id, hostname), 973 TP_STRUCT__entry( 974 __field(__u64, currmid) 975 __field(__u64, conn_id) 976 __string(hostname, hostname) 977 ), 978 TP_fast_assign( 979 __entry->currmid = currmid; 980 __entry->conn_id = conn_id; 981 __assign_str(hostname, hostname); 982 ), 983 TP_printk("conn_id=0x%llx server=%s current_mid=%llu", 984 __entry->conn_id, 985 __get_str(hostname), 986 __entry->currmid) 987) 988 989#define DEFINE_SMB3_RECONNECT_EVENT(name) \ 990DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 991 TP_PROTO(__u64 currmid, \ 992 __u64 conn_id, \ 993 char *hostname), \ 994 TP_ARGS(currmid, conn_id, hostname)) 995 996DEFINE_SMB3_RECONNECT_EVENT(reconnect); 997DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 998 999DECLARE_EVENT_CLASS(smb3_credit_class, 1000 TP_PROTO(__u64 currmid, 1001 __u64 conn_id, 1002 char *hostname, 1003 int credits, 1004 int credits_to_add, 1005 int in_flight), 1006 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight), 1007 TP_STRUCT__entry( 1008 __field(__u64, currmid) 1009 __field(__u64, conn_id) 1010 __string(hostname, hostname) 1011 __field(int, credits) 1012 __field(int, credits_to_add) 1013 __field(int, in_flight) 1014 ), 1015 TP_fast_assign( 1016 __entry->currmid = currmid; 1017 __entry->conn_id = conn_id; 1018 __assign_str(hostname, hostname); 1019 __entry->credits = credits; 1020 __entry->credits_to_add = credits_to_add; 1021 __entry->in_flight = in_flight; 1022 ), 1023 TP_printk("conn_id=0x%llx server=%s current_mid=%llu " 1024 "credits=%d credit_change=%d in_flight=%d", 1025 __entry->conn_id, 1026 __get_str(hostname), 1027 __entry->currmid, 1028 __entry->credits, 1029 __entry->credits_to_add, 1030 __entry->in_flight) 1031) 1032 1033#define DEFINE_SMB3_CREDIT_EVENT(name) \ 1034DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 1035 TP_PROTO(__u64 currmid, \ 1036 __u64 conn_id, \ 1037 char *hostname, \ 1038 int credits, \ 1039 int credits_to_add, \ 1040 int in_flight), \ 1041 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight)) 1042 1043DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 1044DEFINE_SMB3_CREDIT_EVENT(reconnect_detected); 1045DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 1046DEFINE_SMB3_CREDIT_EVENT(insufficient_credits); 1047DEFINE_SMB3_CREDIT_EVENT(too_many_credits); 1048DEFINE_SMB3_CREDIT_EVENT(add_credits); 1049DEFINE_SMB3_CREDIT_EVENT(adj_credits); 1050DEFINE_SMB3_CREDIT_EVENT(hdr_credits); 1051DEFINE_SMB3_CREDIT_EVENT(nblk_credits); 1052DEFINE_SMB3_CREDIT_EVENT(pend_credits); 1053DEFINE_SMB3_CREDIT_EVENT(wait_credits); 1054DEFINE_SMB3_CREDIT_EVENT(waitff_credits); 1055DEFINE_SMB3_CREDIT_EVENT(overflow_credits); 1056DEFINE_SMB3_CREDIT_EVENT(set_credits); 1057 1058#endif /* _CIFS_TRACE_H */ 1059 1060#undef TRACE_INCLUDE_PATH 1061#define TRACE_INCLUDE_PATH . 1062#define TRACE_INCLUDE_FILE trace 1063#include <trace/define_trace.h>