trace.h 23 KB

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