Linux Audio

Check our new training course

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