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