linux/fs/cifs/trace.h
<<
>>
Prefs
   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 */
  16DECLARE_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)          \
  49DEFINE_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
  59DEFINE_SMB3_RW_ERR_EVENT(write_err);
  60DEFINE_SMB3_RW_ERR_EVENT(read_err);
  61DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
  62DEFINE_SMB3_RW_ERR_EVENT(zero_err);
  63DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
  64
  65
  66/* For logging successful read or write */
  67DECLARE_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)         \
  97DEFINE_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
 106DEFINE_SMB3_RW_DONE_EVENT(write_enter);
 107DEFINE_SMB3_RW_DONE_EVENT(read_enter);
 108DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
 109DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
 110DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
 111DEFINE_SMB3_RW_DONE_EVENT(write_done);
 112DEFINE_SMB3_RW_DONE_EVENT(read_done);
 113DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
 114DEFINE_SMB3_RW_DONE_EVENT(zero_done);
 115DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
 116
 117/*
 118 * For handle based calls other than read and write, and get/set info
 119 */
 120DECLARE_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)          \
 143DEFINE_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
 150DEFINE_SMB3_FD_EVENT(flush_enter);
 151DEFINE_SMB3_FD_EVENT(flush_done);
 152DEFINE_SMB3_FD_EVENT(close_enter);
 153DEFINE_SMB3_FD_EVENT(close_done);
 154
 155DECLARE_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)          \
 182DEFINE_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
 190DEFINE_SMB3_FD_ERR_EVENT(flush_err);
 191DEFINE_SMB3_FD_ERR_EVENT(lock_err);
 192DEFINE_SMB3_FD_ERR_EVENT(close_err);
 193
 194/*
 195 * For handle based query/set info calls
 196 */
 197DECLARE_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)          \
 227DEFINE_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
 236DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
 237DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
 238DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
 239DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
 240
 241DECLARE_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)          \
 274DEFINE_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
 284DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
 285DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
 286DEFINE_SMB3_INF_ERR_EVENT(notify_err);
 287DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
 288
 289DECLARE_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)     \
 313DEFINE_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
 320DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
 321DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
 322DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
 323DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
 324DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
 325DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
 326DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
 327DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
 328
 329
 330DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
 331        TP_PROTO(unsigned int xid,
 332                __u32   tid,
 333                __u64   sesid),
 334        TP_ARGS(xid, tid, sesid),
 335        TP_STRUCT__entry(
 336                __field(unsigned int, xid)
 337                __field(__u32, tid)
 338                __field(__u64, sesid)
 339        ),
 340        TP_fast_assign(
 341                __entry->xid = xid;
 342                __entry->tid = tid;
 343                __entry->sesid = sesid;
 344        ),
 345        TP_printk("xid=%u sid=0x%llx tid=0x%x",
 346                __entry->xid, __entry->sesid, __entry->tid)
 347)
 348
 349#define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
 350DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
 351        TP_PROTO(unsigned int xid,              \
 352                __u32   tid,                    \
 353                __u64   sesid),                 \
 354        TP_ARGS(xid, tid, sesid))
 355
 356DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
 357DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
 358DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
 359DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
 360DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
 361DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
 362DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
 363DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
 364
 365
 366DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
 367        TP_PROTO(unsigned int xid,
 368                __u32   tid,
 369                __u64   sesid,
 370                int     rc),
 371        TP_ARGS(xid, tid, sesid, rc),
 372        TP_STRUCT__entry(
 373                __field(unsigned int, xid)
 374                __field(__u32, tid)
 375                __field(__u64, sesid)
 376                __field(int, rc)
 377        ),
 378        TP_fast_assign(
 379                __entry->xid = xid;
 380                __entry->tid = tid;
 381                __entry->sesid = sesid;
 382                __entry->rc = rc;
 383        ),
 384        TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
 385                __entry->xid, __entry->sesid, __entry->tid,
 386                __entry->rc)
 387)
 388
 389#define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
 390DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
 391        TP_PROTO(unsigned int xid,              \
 392                __u32   tid,                    \
 393                __u64   sesid,                  \
 394                int rc),                        \
 395        TP_ARGS(xid, tid, sesid, rc))
 396
 397DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
 398DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
 399DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
 400DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
 401DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
 402DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
 403DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
 404DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
 405
 406/*
 407 * For logging SMB3 Status code and Command for responses which return errors
 408 */
 409DECLARE_EVENT_CLASS(smb3_cmd_err_class,
 410        TP_PROTO(__u32  tid,
 411                __u64   sesid,
 412                __u16   cmd,
 413                __u64   mid,
 414                __u32   status,
 415                int     rc),
 416        TP_ARGS(tid, sesid, cmd, mid, status, rc),
 417        TP_STRUCT__entry(
 418                __field(__u32, tid)
 419                __field(__u64, sesid)
 420                __field(__u16, cmd)
 421                __field(__u64, mid)
 422                __field(__u32, status)
 423                __field(int, rc)
 424        ),
 425        TP_fast_assign(
 426                __entry->tid = tid;
 427                __entry->sesid = sesid;
 428                __entry->cmd = cmd;
 429                __entry->mid = mid;
 430                __entry->status = status;
 431                __entry->rc = rc;
 432        ),
 433        TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
 434                __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
 435                __entry->status, __entry->rc)
 436)
 437
 438#define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
 439DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
 440        TP_PROTO(__u32  tid,                    \
 441                __u64   sesid,                  \
 442                __u16   cmd,                    \
 443                __u64   mid,                    \
 444                __u32   status,                 \
 445                int     rc),                    \
 446        TP_ARGS(tid, sesid, cmd, mid, status, rc))
 447
 448DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
 449
 450DECLARE_EVENT_CLASS(smb3_cmd_done_class,
 451        TP_PROTO(__u32  tid,
 452                __u64   sesid,
 453                __u16   cmd,
 454                __u64   mid),
 455        TP_ARGS(tid, sesid, cmd, mid),
 456        TP_STRUCT__entry(
 457                __field(__u32, tid)
 458                __field(__u64, sesid)
 459                __field(__u16, cmd)
 460                __field(__u64, mid)
 461        ),
 462        TP_fast_assign(
 463                __entry->tid = tid;
 464                __entry->sesid = sesid;
 465                __entry->cmd = cmd;
 466                __entry->mid = mid;
 467        ),
 468        TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
 469                __entry->sesid, __entry->tid,
 470                __entry->cmd, __entry->mid)
 471)
 472
 473#define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
 474DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
 475        TP_PROTO(__u32  tid,                    \
 476                __u64   sesid,                  \
 477                __u16   cmd,                    \
 478                __u64   mid),                   \
 479        TP_ARGS(tid, sesid, cmd, mid))
 480
 481DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
 482DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
 483DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
 484
 485DECLARE_EVENT_CLASS(smb3_mid_class,
 486        TP_PROTO(__u16  cmd,
 487                __u64   mid,
 488                __u32   pid,
 489                unsigned long when_sent,
 490                unsigned long when_received),
 491        TP_ARGS(cmd, mid, pid, when_sent, when_received),
 492        TP_STRUCT__entry(
 493                __field(__u16, cmd)
 494                __field(__u64, mid)
 495                __field(__u32, pid)
 496                __field(unsigned long, when_sent)
 497                __field(unsigned long, when_received)
 498        ),
 499        TP_fast_assign(
 500                __entry->cmd = cmd;
 501                __entry->mid = mid;
 502                __entry->pid = pid;
 503                __entry->when_sent = when_sent;
 504                __entry->when_received = when_received;
 505        ),
 506        TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
 507                __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
 508                __entry->when_received)
 509)
 510
 511#define DEFINE_SMB3_MID_EVENT(name)          \
 512DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
 513        TP_PROTO(__u16  cmd,                    \
 514                __u64   mid,                    \
 515                __u32   pid,                    \
 516                unsigned long when_sent,        \
 517                unsigned long when_received),   \
 518        TP_ARGS(cmd, mid, pid, when_sent, when_received))
 519
 520DEFINE_SMB3_MID_EVENT(slow_rsp);
 521
 522DECLARE_EVENT_CLASS(smb3_exit_err_class,
 523        TP_PROTO(unsigned int xid,
 524                const char *func_name,
 525                int     rc),
 526        TP_ARGS(xid, func_name, rc),
 527        TP_STRUCT__entry(
 528                __field(unsigned int, xid)
 529                __field(const char *, func_name)
 530                __field(int, rc)
 531        ),
 532        TP_fast_assign(
 533                __entry->xid = xid;
 534                __entry->func_name = func_name;
 535                __entry->rc = rc;
 536        ),
 537        TP_printk("\t%s: xid=%u rc=%d",
 538                __entry->func_name, __entry->xid, __entry->rc)
 539)
 540
 541#define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
 542DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
 543        TP_PROTO(unsigned int xid,              \
 544                const char *func_name,          \
 545                int     rc),                    \
 546        TP_ARGS(xid, func_name, rc))
 547
 548DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
 549
 550DECLARE_EVENT_CLASS(smb3_enter_exit_class,
 551        TP_PROTO(unsigned int xid,
 552                const char *func_name),
 553        TP_ARGS(xid, func_name),
 554        TP_STRUCT__entry(
 555                __field(unsigned int, xid)
 556                __field(const char *, func_name)
 557        ),
 558        TP_fast_assign(
 559                __entry->xid = xid;
 560                __entry->func_name = func_name;
 561        ),
 562        TP_printk("\t%s: xid=%u",
 563                __entry->func_name, __entry->xid)
 564)
 565
 566#define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
 567DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
 568        TP_PROTO(unsigned int xid,              \
 569                const char *func_name),         \
 570        TP_ARGS(xid, func_name))
 571
 572DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
 573DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
 574
 575/*
 576 * For SMB2/SMB3 tree connect
 577 */
 578
 579DECLARE_EVENT_CLASS(smb3_tcon_class,
 580        TP_PROTO(unsigned int xid,
 581                __u32   tid,
 582                __u64   sesid,
 583                const char *unc_name,
 584                int     rc),
 585        TP_ARGS(xid, tid, sesid, unc_name, rc),
 586        TP_STRUCT__entry(
 587                __field(unsigned int, xid)
 588                __field(__u32, tid)
 589                __field(__u64, sesid)
 590                __string(name, unc_name)
 591                __field(int, rc)
 592        ),
 593        TP_fast_assign(
 594                __entry->xid = xid;
 595                __entry->tid = tid;
 596                __entry->sesid = sesid;
 597                __assign_str(name, unc_name);
 598                __entry->rc = rc;
 599        ),
 600        TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
 601                __entry->xid, __entry->sesid, __entry->tid,
 602                __get_str(name), __entry->rc)
 603)
 604
 605#define DEFINE_SMB3_TCON_EVENT(name)          \
 606DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
 607        TP_PROTO(unsigned int xid,              \
 608                __u32   tid,                    \
 609                __u64   sesid,                  \
 610                const char *unc_name,           \
 611                int     rc),                    \
 612        TP_ARGS(xid, tid, sesid, unc_name, rc))
 613
 614DEFINE_SMB3_TCON_EVENT(tcon);
 615
 616
 617/*
 618 * For smb2/smb3 open (including create and mkdir) calls
 619 */
 620
 621DECLARE_EVENT_CLASS(smb3_open_enter_class,
 622        TP_PROTO(unsigned int xid,
 623                __u32   tid,
 624                __u64   sesid,
 625                int     create_options,
 626                int     desired_access),
 627        TP_ARGS(xid, tid, sesid, create_options, desired_access),
 628        TP_STRUCT__entry(
 629                __field(unsigned int, xid)
 630                __field(__u32, tid)
 631                __field(__u64, sesid)
 632                __field(int, create_options)
 633                __field(int, desired_access)
 634        ),
 635        TP_fast_assign(
 636                __entry->xid = xid;
 637                __entry->tid = tid;
 638                __entry->sesid = sesid;
 639                __entry->create_options = create_options;
 640                __entry->desired_access = desired_access;
 641        ),
 642        TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x",
 643                __entry->xid, __entry->sesid, __entry->tid,
 644                __entry->create_options, __entry->desired_access)
 645)
 646
 647#define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
 648DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
 649        TP_PROTO(unsigned int xid,              \
 650                __u32   tid,                    \
 651                __u64   sesid,                  \
 652                int     create_options,         \
 653                int     desired_access),        \
 654        TP_ARGS(xid, tid, sesid, create_options, desired_access))
 655
 656DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
 657DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
 658
 659DECLARE_EVENT_CLASS(smb3_open_err_class,
 660        TP_PROTO(unsigned int xid,
 661                __u32   tid,
 662                __u64   sesid,
 663                int     create_options,
 664                int     desired_access,
 665                int     rc),
 666        TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
 667        TP_STRUCT__entry(
 668                __field(unsigned int, xid)
 669                __field(__u32, tid)
 670                __field(__u64, sesid)
 671                __field(int,   create_options)
 672                __field(int, desired_access)
 673                __field(int, rc)
 674        ),
 675        TP_fast_assign(
 676                __entry->xid = xid;
 677                __entry->tid = tid;
 678                __entry->sesid = sesid;
 679                __entry->create_options = create_options;
 680                __entry->desired_access = desired_access;
 681                __entry->rc = rc;
 682        ),
 683        TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
 684                __entry->xid, __entry->sesid, __entry->tid,
 685                __entry->create_options, __entry->desired_access, __entry->rc)
 686)
 687
 688#define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
 689DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
 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
 698DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
 699DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
 700
 701DECLARE_EVENT_CLASS(smb3_open_done_class,
 702        TP_PROTO(unsigned int xid,
 703                __u64   fid,
 704                __u32   tid,
 705                __u64   sesid,
 706                int     create_options,
 707                int     desired_access),
 708        TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
 709        TP_STRUCT__entry(
 710                __field(unsigned int, xid)
 711                __field(__u64, fid)
 712                __field(__u32, tid)
 713                __field(__u64, sesid)
 714                __field(int, create_options)
 715                __field(int, desired_access)
 716        ),
 717        TP_fast_assign(
 718                __entry->xid = xid;
 719                __entry->fid = fid;
 720                __entry->tid = tid;
 721                __entry->sesid = sesid;
 722                __entry->create_options = create_options;
 723                __entry->desired_access = desired_access;
 724        ),
 725        TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
 726                __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
 727                __entry->create_options, __entry->desired_access)
 728)
 729
 730#define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
 731DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
 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
 740DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
 741DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
 742
 743
 744DECLARE_EVENT_CLASS(smb3_lease_done_class,
 745        TP_PROTO(__u32  lease_state,
 746                __u32   tid,
 747                __u64   sesid,
 748                __u64   lease_key_low,
 749                __u64   lease_key_high),
 750        TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
 751        TP_STRUCT__entry(
 752                __field(__u32, lease_state)
 753                __field(__u32, tid)
 754                __field(__u64, sesid)
 755                __field(__u64, lease_key_low)
 756                __field(__u64, lease_key_high)
 757        ),
 758        TP_fast_assign(
 759                __entry->lease_state = lease_state;
 760                __entry->tid = tid;
 761                __entry->sesid = sesid;
 762                __entry->lease_key_low = lease_key_low;
 763                __entry->lease_key_high = lease_key_high;
 764        ),
 765        TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
 766                __entry->sesid, __entry->tid, __entry->lease_key_high,
 767                __entry->lease_key_low, __entry->lease_state)
 768)
 769
 770#define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
 771DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
 772        TP_PROTO(__u32  lease_state,            \
 773                __u32   tid,                    \
 774                __u64   sesid,                  \
 775                __u64   lease_key_low,          \
 776                __u64   lease_key_high),        \
 777        TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
 778
 779DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
 780
 781DECLARE_EVENT_CLASS(smb3_lease_err_class,
 782        TP_PROTO(__u32  lease_state,
 783                __u32   tid,
 784                __u64   sesid,
 785                __u64   lease_key_low,
 786                __u64   lease_key_high,
 787                int     rc),
 788        TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
 789        TP_STRUCT__entry(
 790                __field(__u32, lease_state)
 791                __field(__u32, tid)
 792                __field(__u64, sesid)
 793                __field(__u64, lease_key_low)
 794                __field(__u64, lease_key_high)
 795                __field(int, rc)
 796        ),
 797        TP_fast_assign(
 798                __entry->lease_state = lease_state;
 799                __entry->tid = tid;
 800                __entry->sesid = sesid;
 801                __entry->lease_key_low = lease_key_low;
 802                __entry->lease_key_high = lease_key_high;
 803                __entry->rc = rc;
 804        ),
 805        TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
 806                __entry->sesid, __entry->tid, __entry->lease_key_high,
 807                __entry->lease_key_low, __entry->lease_state, __entry->rc)
 808)
 809
 810#define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
 811DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
 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
 820DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
 821
 822DECLARE_EVENT_CLASS(smb3_reconnect_class,
 823        TP_PROTO(__u64  currmid,
 824                char *hostname),
 825        TP_ARGS(currmid, hostname),
 826        TP_STRUCT__entry(
 827                __field(__u64, currmid)
 828                __field(char *, hostname)
 829        ),
 830        TP_fast_assign(
 831                __entry->currmid = currmid;
 832                __entry->hostname = hostname;
 833        ),
 834        TP_printk("server=%s current_mid=0x%llx",
 835                __entry->hostname,
 836                __entry->currmid)
 837)
 838
 839#define DEFINE_SMB3_RECONNECT_EVENT(name)        \
 840DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
 841        TP_PROTO(__u64  currmid,                \
 842                char *hostname),                \
 843        TP_ARGS(currmid, hostname))
 844
 845DEFINE_SMB3_RECONNECT_EVENT(reconnect);
 846DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
 847
 848DECLARE_EVENT_CLASS(smb3_credit_class,
 849        TP_PROTO(__u64  currmid,
 850                char *hostname,
 851                int credits),
 852        TP_ARGS(currmid, hostname, credits),
 853        TP_STRUCT__entry(
 854                __field(__u64, currmid)
 855                __field(char *, hostname)
 856                __field(int, credits)
 857        ),
 858        TP_fast_assign(
 859                __entry->currmid = currmid;
 860                __entry->hostname = hostname;
 861                __entry->credits = credits;
 862        ),
 863        TP_printk("server=%s current_mid=0x%llx credits=%d",
 864                __entry->hostname,
 865                __entry->currmid,
 866                __entry->credits)
 867)
 868
 869#define DEFINE_SMB3_CREDIT_EVENT(name)        \
 870DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
 871        TP_PROTO(__u64  currmid,                \
 872                char *hostname,                 \
 873                int  credits),                  \
 874        TP_ARGS(currmid, hostname, credits))
 875
 876DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
 877DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
 878
 879#endif /* _CIFS_TRACE_H */
 880
 881#undef TRACE_INCLUDE_PATH
 882#define TRACE_INCLUDE_PATH .
 883#define TRACE_INCLUDE_FILE trace
 884#include <trace/define_trace.h>
 885