Linux Audio

Check our new training course

Yocto distribution development and maintenance

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