ocfs2_trace.h 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM ocfs2
  3. #if !defined(_TRACE_OCFS2_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_OCFS2_H
  5. #include <linux/tracepoint.h>
  6. DECLARE_EVENT_CLASS(ocfs2__int,
  7. TP_PROTO(int num),
  8. TP_ARGS(num),
  9. TP_STRUCT__entry(
  10. __field(int, num)
  11. ),
  12. TP_fast_assign(
  13. __entry->num = num;
  14. ),
  15. TP_printk("%d", __entry->num)
  16. );
  17. #define DEFINE_OCFS2_INT_EVENT(name) \
  18. DEFINE_EVENT(ocfs2__int, name, \
  19. TP_PROTO(int num), \
  20. TP_ARGS(num))
  21. DECLARE_EVENT_CLASS(ocfs2__uint,
  22. TP_PROTO(unsigned int num),
  23. TP_ARGS(num),
  24. TP_STRUCT__entry(
  25. __field( unsigned int, num )
  26. ),
  27. TP_fast_assign(
  28. __entry->num = num;
  29. ),
  30. TP_printk("%u", __entry->num)
  31. );
  32. #define DEFINE_OCFS2_UINT_EVENT(name) \
  33. DEFINE_EVENT(ocfs2__uint, name, \
  34. TP_PROTO(unsigned int num), \
  35. TP_ARGS(num))
  36. DECLARE_EVENT_CLASS(ocfs2__ull,
  37. TP_PROTO(unsigned long long blkno),
  38. TP_ARGS(blkno),
  39. TP_STRUCT__entry(
  40. __field(unsigned long long, blkno)
  41. ),
  42. TP_fast_assign(
  43. __entry->blkno = blkno;
  44. ),
  45. TP_printk("%llu", __entry->blkno)
  46. );
  47. #define DEFINE_OCFS2_ULL_EVENT(name) \
  48. DEFINE_EVENT(ocfs2__ull, name, \
  49. TP_PROTO(unsigned long long num), \
  50. TP_ARGS(num))
  51. DECLARE_EVENT_CLASS(ocfs2__int_int,
  52. TP_PROTO(int value1, int value2),
  53. TP_ARGS(value1, value2),
  54. TP_STRUCT__entry(
  55. __field(int, value1)
  56. __field(int, value2)
  57. ),
  58. TP_fast_assign(
  59. __entry->value1 = value1;
  60. __entry->value2 = value2;
  61. ),
  62. TP_printk("%d %d", __entry->value1, __entry->value2)
  63. );
  64. #define DEFINE_OCFS2_INT_INT_EVENT(name) \
  65. DEFINE_EVENT(ocfs2__int_int, name, \
  66. TP_PROTO(int val1, int val2), \
  67. TP_ARGS(val1, val2))
  68. DECLARE_EVENT_CLASS(ocfs2__uint_uint,
  69. TP_PROTO(unsigned int value1, unsigned int value2),
  70. TP_ARGS(value1, value2),
  71. TP_STRUCT__entry(
  72. __field(unsigned int, value1)
  73. __field(unsigned int, value2)
  74. ),
  75. TP_fast_assign(
  76. __entry->value1 = value1;
  77. __entry->value2 = value2;
  78. ),
  79. TP_printk("%u %u", __entry->value1, __entry->value2)
  80. );
  81. #define DEFINE_OCFS2_UINT_UINT_EVENT(name) \
  82. DEFINE_EVENT(ocfs2__uint_uint, name, \
  83. TP_PROTO(unsigned int val1, unsigned int val2), \
  84. TP_ARGS(val1, val2))
  85. DECLARE_EVENT_CLASS(ocfs2__ull_uint,
  86. TP_PROTO(unsigned long long value1, unsigned int value2),
  87. TP_ARGS(value1, value2),
  88. TP_STRUCT__entry(
  89. __field(unsigned long long, value1)
  90. __field(unsigned int, value2)
  91. ),
  92. TP_fast_assign(
  93. __entry->value1 = value1;
  94. __entry->value2 = value2;
  95. ),
  96. TP_printk("%llu %u", __entry->value1, __entry->value2)
  97. );
  98. #define DEFINE_OCFS2_ULL_UINT_EVENT(name) \
  99. DEFINE_EVENT(ocfs2__ull_uint, name, \
  100. TP_PROTO(unsigned long long val1, unsigned int val2), \
  101. TP_ARGS(val1, val2))
  102. DECLARE_EVENT_CLASS(ocfs2__ull_ull,
  103. TP_PROTO(unsigned long long value1, unsigned long long value2),
  104. TP_ARGS(value1, value2),
  105. TP_STRUCT__entry(
  106. __field(unsigned long long, value1)
  107. __field(unsigned long long, value2)
  108. ),
  109. TP_fast_assign(
  110. __entry->value1 = value1;
  111. __entry->value2 = value2;
  112. ),
  113. TP_printk("%llu %llu", __entry->value1, __entry->value2)
  114. );
  115. #define DEFINE_OCFS2_ULL_ULL_EVENT(name) \
  116. DEFINE_EVENT(ocfs2__ull_ull, name, \
  117. TP_PROTO(unsigned long long val1, unsigned long long val2), \
  118. TP_ARGS(val1, val2))
  119. DECLARE_EVENT_CLASS(ocfs2__ull_ull_uint,
  120. TP_PROTO(unsigned long long value1,
  121. unsigned long long value2, unsigned int value3),
  122. TP_ARGS(value1, value2, value3),
  123. TP_STRUCT__entry(
  124. __field(unsigned long long, value1)
  125. __field(unsigned long long, value2)
  126. __field(unsigned int, value3)
  127. ),
  128. TP_fast_assign(
  129. __entry->value1 = value1;
  130. __entry->value2 = value2;
  131. __entry->value3 = value3;
  132. ),
  133. TP_printk("%llu %llu %u",
  134. __entry->value1, __entry->value2, __entry->value3)
  135. );
  136. #define DEFINE_OCFS2_ULL_ULL_UINT_EVENT(name) \
  137. DEFINE_EVENT(ocfs2__ull_ull_uint, name, \
  138. TP_PROTO(unsigned long long val1, \
  139. unsigned long long val2, unsigned int val3), \
  140. TP_ARGS(val1, val2, val3))
  141. DECLARE_EVENT_CLASS(ocfs2__ull_uint_uint,
  142. TP_PROTO(unsigned long long value1,
  143. unsigned int value2, unsigned int value3),
  144. TP_ARGS(value1, value2, value3),
  145. TP_STRUCT__entry(
  146. __field(unsigned long long, value1)
  147. __field(unsigned int, value2)
  148. __field(unsigned int, value3)
  149. ),
  150. TP_fast_assign(
  151. __entry->value1 = value1;
  152. __entry->value2 = value2;
  153. __entry->value3 = value3;
  154. ),
  155. TP_printk("%llu %u %u", __entry->value1,
  156. __entry->value2, __entry->value3)
  157. );
  158. #define DEFINE_OCFS2_ULL_UINT_UINT_EVENT(name) \
  159. DEFINE_EVENT(ocfs2__ull_uint_uint, name, \
  160. TP_PROTO(unsigned long long val1, \
  161. unsigned int val2, unsigned int val3), \
  162. TP_ARGS(val1, val2, val3))
  163. DECLARE_EVENT_CLASS(ocfs2__uint_uint_uint,
  164. TP_PROTO(unsigned int value1, unsigned int value2,
  165. unsigned int value3),
  166. TP_ARGS(value1, value2, value3),
  167. TP_STRUCT__entry(
  168. __field( unsigned int, value1 )
  169. __field( unsigned int, value2 )
  170. __field( unsigned int, value3 )
  171. ),
  172. TP_fast_assign(
  173. __entry->value1 = value1;
  174. __entry->value2 = value2;
  175. __entry->value3 = value3;
  176. ),
  177. TP_printk("%u %u %u", __entry->value1, __entry->value2, __entry->value3)
  178. );
  179. #define DEFINE_OCFS2_UINT_UINT_UINT_EVENT(name) \
  180. DEFINE_EVENT(ocfs2__uint_uint_uint, name, \
  181. TP_PROTO(unsigned int value1, unsigned int value2, \
  182. unsigned int value3), \
  183. TP_ARGS(value1, value2, value3))
  184. DECLARE_EVENT_CLASS(ocfs2__ull_int_int_int,
  185. TP_PROTO(unsigned long long ull, int value1, int value2, int value3),
  186. TP_ARGS(ull, value1, value2, value3),
  187. TP_STRUCT__entry(
  188. __field( unsigned long long, ull )
  189. __field( int, value1 )
  190. __field( int, value2 )
  191. __field( int, value3 )
  192. ),
  193. TP_fast_assign(
  194. __entry->ull = ull;
  195. __entry->value1 = value1;
  196. __entry->value2 = value2;
  197. __entry->value3 = value3;
  198. ),
  199. TP_printk("%llu %d %d %d",
  200. __entry->ull, __entry->value1,
  201. __entry->value2, __entry->value3)
  202. );
  203. #define DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(name) \
  204. DEFINE_EVENT(ocfs2__ull_int_int_int, name, \
  205. TP_PROTO(unsigned long long ull, int value1, \
  206. int value2, int value3), \
  207. TP_ARGS(ull, value1, value2, value3))
  208. DECLARE_EVENT_CLASS(ocfs2__ull_uint_uint_uint,
  209. TP_PROTO(unsigned long long ull, unsigned int value1,
  210. unsigned int value2, unsigned int value3),
  211. TP_ARGS(ull, value1, value2, value3),
  212. TP_STRUCT__entry(
  213. __field(unsigned long long, ull)
  214. __field(unsigned int, value1)
  215. __field(unsigned int, value2)
  216. __field(unsigned int, value3)
  217. ),
  218. TP_fast_assign(
  219. __entry->ull = ull;
  220. __entry->value1 = value1;
  221. __entry->value2 = value2;
  222. __entry->value3 = value3;
  223. ),
  224. TP_printk("%llu %u %u %u",
  225. __entry->ull, __entry->value1,
  226. __entry->value2, __entry->value3)
  227. );
  228. #define DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(name) \
  229. DEFINE_EVENT(ocfs2__ull_uint_uint_uint, name, \
  230. TP_PROTO(unsigned long long ull, unsigned int value1, \
  231. unsigned int value2, unsigned int value3), \
  232. TP_ARGS(ull, value1, value2, value3))
  233. /* Trace events for fs/ocfs2/alloc.c. */
  234. DECLARE_EVENT_CLASS(ocfs2__btree_ops,
  235. TP_PROTO(unsigned long long owner,\
  236. unsigned int value1, unsigned int value2),
  237. TP_ARGS(owner, value1, value2),
  238. TP_STRUCT__entry(
  239. __field(unsigned long long, owner)
  240. __field(unsigned int, value1)
  241. __field(unsigned int, value2)
  242. ),
  243. TP_fast_assign(
  244. __entry->owner = owner;
  245. __entry->value1 = value1;
  246. __entry->value2 = value2;
  247. ),
  248. TP_printk("%llu %u %u",
  249. __entry->owner, __entry->value1, __entry->value2)
  250. );
  251. #define DEFINE_OCFS2_BTREE_EVENT(name) \
  252. DEFINE_EVENT(ocfs2__btree_ops, name, \
  253. TP_PROTO(unsigned long long owner, \
  254. unsigned int value1, unsigned int value2), \
  255. TP_ARGS(owner, value1, value2))
  256. DEFINE_OCFS2_BTREE_EVENT(ocfs2_adjust_rightmost_branch);
  257. DEFINE_OCFS2_BTREE_EVENT(ocfs2_rotate_tree_right);
  258. DEFINE_OCFS2_BTREE_EVENT(ocfs2_append_rec_to_path);
  259. DEFINE_OCFS2_BTREE_EVENT(ocfs2_insert_extent_start);
  260. DEFINE_OCFS2_BTREE_EVENT(ocfs2_add_clusters_in_btree);
  261. DEFINE_OCFS2_INT_EVENT(ocfs2_num_free_extents);
  262. DEFINE_OCFS2_INT_EVENT(ocfs2_complete_edge_insert);
  263. TRACE_EVENT(ocfs2_grow_tree,
  264. TP_PROTO(unsigned long long owner, int depth),
  265. TP_ARGS(owner, depth),
  266. TP_STRUCT__entry(
  267. __field(unsigned long long, owner)
  268. __field(int, depth)
  269. ),
  270. TP_fast_assign(
  271. __entry->owner = owner;
  272. __entry->depth = depth;
  273. ),
  274. TP_printk("%llu %d", __entry->owner, __entry->depth)
  275. );
  276. TRACE_EVENT(ocfs2_rotate_subtree,
  277. TP_PROTO(int subtree_root, unsigned long long blkno,
  278. int depth),
  279. TP_ARGS(subtree_root, blkno, depth),
  280. TP_STRUCT__entry(
  281. __field(int, subtree_root)
  282. __field(unsigned long long, blkno)
  283. __field(int, depth)
  284. ),
  285. TP_fast_assign(
  286. __entry->subtree_root = subtree_root;
  287. __entry->blkno = blkno;
  288. __entry->depth = depth;
  289. ),
  290. TP_printk("%d %llu %d", __entry->subtree_root,
  291. __entry->blkno, __entry->depth)
  292. );
  293. TRACE_EVENT(ocfs2_insert_extent,
  294. TP_PROTO(unsigned int ins_appending, unsigned int ins_contig,
  295. int ins_contig_index, int free_records, int ins_tree_depth),
  296. TP_ARGS(ins_appending, ins_contig, ins_contig_index, free_records,
  297. ins_tree_depth),
  298. TP_STRUCT__entry(
  299. __field(unsigned int, ins_appending)
  300. __field(unsigned int, ins_contig)
  301. __field(int, ins_contig_index)
  302. __field(int, free_records)
  303. __field(int, ins_tree_depth)
  304. ),
  305. TP_fast_assign(
  306. __entry->ins_appending = ins_appending;
  307. __entry->ins_contig = ins_contig;
  308. __entry->ins_contig_index = ins_contig_index;
  309. __entry->free_records = free_records;
  310. __entry->ins_tree_depth = ins_tree_depth;
  311. ),
  312. TP_printk("%u %u %d %d %d",
  313. __entry->ins_appending, __entry->ins_contig,
  314. __entry->ins_contig_index, __entry->free_records,
  315. __entry->ins_tree_depth)
  316. );
  317. TRACE_EVENT(ocfs2_split_extent,
  318. TP_PROTO(int split_index, unsigned int c_contig_type,
  319. unsigned int c_has_empty_extent,
  320. unsigned int c_split_covers_rec),
  321. TP_ARGS(split_index, c_contig_type,
  322. c_has_empty_extent, c_split_covers_rec),
  323. TP_STRUCT__entry(
  324. __field(int, split_index)
  325. __field(unsigned int, c_contig_type)
  326. __field(unsigned int, c_has_empty_extent)
  327. __field(unsigned int, c_split_covers_rec)
  328. ),
  329. TP_fast_assign(
  330. __entry->split_index = split_index;
  331. __entry->c_contig_type = c_contig_type;
  332. __entry->c_has_empty_extent = c_has_empty_extent;
  333. __entry->c_split_covers_rec = c_split_covers_rec;
  334. ),
  335. TP_printk("%d %u %u %u", __entry->split_index, __entry->c_contig_type,
  336. __entry->c_has_empty_extent, __entry->c_split_covers_rec)
  337. );
  338. TRACE_EVENT(ocfs2_remove_extent,
  339. TP_PROTO(unsigned long long owner, unsigned int cpos,
  340. unsigned int len, int index,
  341. unsigned int e_cpos, unsigned int clusters),
  342. TP_ARGS(owner, cpos, len, index, e_cpos, clusters),
  343. TP_STRUCT__entry(
  344. __field(unsigned long long, owner)
  345. __field(unsigned int, cpos)
  346. __field(unsigned int, len)
  347. __field(int, index)
  348. __field(unsigned int, e_cpos)
  349. __field(unsigned int, clusters)
  350. ),
  351. TP_fast_assign(
  352. __entry->owner = owner;
  353. __entry->cpos = cpos;
  354. __entry->len = len;
  355. __entry->index = index;
  356. __entry->e_cpos = e_cpos;
  357. __entry->clusters = clusters;
  358. ),
  359. TP_printk("%llu %u %u %d %u %u",
  360. __entry->owner, __entry->cpos, __entry->len, __entry->index,
  361. __entry->e_cpos, __entry->clusters)
  362. );
  363. TRACE_EVENT(ocfs2_commit_truncate,
  364. TP_PROTO(unsigned long long ino, unsigned int new_cpos,
  365. unsigned int clusters, unsigned int depth),
  366. TP_ARGS(ino, new_cpos, clusters, depth),
  367. TP_STRUCT__entry(
  368. __field(unsigned long long, ino)
  369. __field(unsigned int, new_cpos)
  370. __field(unsigned int, clusters)
  371. __field(unsigned int, depth)
  372. ),
  373. TP_fast_assign(
  374. __entry->ino = ino;
  375. __entry->new_cpos = new_cpos;
  376. __entry->clusters = clusters;
  377. __entry->depth = depth;
  378. ),
  379. TP_printk("%llu %u %u %u",
  380. __entry->ino, __entry->new_cpos,
  381. __entry->clusters, __entry->depth)
  382. );
  383. TRACE_EVENT(ocfs2_validate_extent_block,
  384. TP_PROTO(unsigned long long blkno),
  385. TP_ARGS(blkno),
  386. TP_STRUCT__entry(
  387. __field(unsigned long long, blkno)
  388. ),
  389. TP_fast_assign(
  390. __entry->blkno = blkno;
  391. ),
  392. TP_printk("%llu ", __entry->blkno)
  393. );
  394. TRACE_EVENT(ocfs2_rotate_leaf,
  395. TP_PROTO(unsigned int insert_cpos, int insert_index,
  396. int has_empty, int next_free,
  397. unsigned int l_count),
  398. TP_ARGS(insert_cpos, insert_index, has_empty,
  399. next_free, l_count),
  400. TP_STRUCT__entry(
  401. __field(unsigned int, insert_cpos)
  402. __field(int, insert_index)
  403. __field(int, has_empty)
  404. __field(int, next_free)
  405. __field(unsigned int, l_count)
  406. ),
  407. TP_fast_assign(
  408. __entry->insert_cpos = insert_cpos;
  409. __entry->insert_index = insert_index;
  410. __entry->has_empty = has_empty;
  411. __entry->next_free = next_free;
  412. __entry->l_count = l_count;
  413. ),
  414. TP_printk("%u %d %d %d %u", __entry->insert_cpos,
  415. __entry->insert_index, __entry->has_empty,
  416. __entry->next_free, __entry->l_count)
  417. );
  418. TRACE_EVENT(ocfs2_add_clusters_in_btree_ret,
  419. TP_PROTO(int status, int reason, int err),
  420. TP_ARGS(status, reason, err),
  421. TP_STRUCT__entry(
  422. __field(int, status)
  423. __field(int, reason)
  424. __field(int, err)
  425. ),
  426. TP_fast_assign(
  427. __entry->status = status;
  428. __entry->reason = reason;
  429. __entry->err = err;
  430. ),
  431. TP_printk("%d %d %d", __entry->status,
  432. __entry->reason, __entry->err)
  433. );
  434. TRACE_EVENT(ocfs2_mark_extent_written,
  435. TP_PROTO(unsigned long long owner, unsigned int cpos,
  436. unsigned int len, unsigned int phys),
  437. TP_ARGS(owner, cpos, len, phys),
  438. TP_STRUCT__entry(
  439. __field(unsigned long long, owner)
  440. __field(unsigned int, cpos)
  441. __field(unsigned int, len)
  442. __field(unsigned int, phys)
  443. ),
  444. TP_fast_assign(
  445. __entry->owner = owner;
  446. __entry->cpos = cpos;
  447. __entry->len = len;
  448. __entry->phys = phys;
  449. ),
  450. TP_printk("%llu %u %u %u",
  451. __entry->owner, __entry->cpos,
  452. __entry->len, __entry->phys)
  453. );
  454. DECLARE_EVENT_CLASS(ocfs2__truncate_log_ops,
  455. TP_PROTO(unsigned long long blkno, int index,
  456. unsigned int start, unsigned int num),
  457. TP_ARGS(blkno, index, start, num),
  458. TP_STRUCT__entry(
  459. __field(unsigned long long, blkno)
  460. __field(int, index)
  461. __field(unsigned int, start)
  462. __field(unsigned int, num)
  463. ),
  464. TP_fast_assign(
  465. __entry->blkno = blkno;
  466. __entry->index = index;
  467. __entry->start = start;
  468. __entry->num = num;
  469. ),
  470. TP_printk("%llu %d %u %u",
  471. __entry->blkno, __entry->index,
  472. __entry->start, __entry->num)
  473. );
  474. #define DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(name) \
  475. DEFINE_EVENT(ocfs2__truncate_log_ops, name, \
  476. TP_PROTO(unsigned long long blkno, int index, \
  477. unsigned int start, unsigned int num), \
  478. TP_ARGS(blkno, index, start, num))
  479. DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(ocfs2_truncate_log_append);
  480. DEFINE_OCFS2_TRUNCATE_LOG_OPS_EVENT(ocfs2_replay_truncate_records);
  481. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_flush_truncate_log);
  482. DEFINE_OCFS2_INT_EVENT(ocfs2_begin_truncate_log_recovery);
  483. DEFINE_OCFS2_INT_EVENT(ocfs2_truncate_log_recovery_num);
  484. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_complete_truncate_log_recovery);
  485. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_free_cached_blocks);
  486. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_cache_cluster_dealloc);
  487. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_run_deallocs);
  488. TRACE_EVENT(ocfs2_cache_block_dealloc,
  489. TP_PROTO(int type, int slot, unsigned long long suballoc,
  490. unsigned long long blkno, unsigned int bit),
  491. TP_ARGS(type, slot, suballoc, blkno, bit),
  492. TP_STRUCT__entry(
  493. __field(int, type)
  494. __field(int, slot)
  495. __field(unsigned long long, suballoc)
  496. __field(unsigned long long, blkno)
  497. __field(unsigned int, bit)
  498. ),
  499. TP_fast_assign(
  500. __entry->type = type;
  501. __entry->slot = slot;
  502. __entry->suballoc = suballoc;
  503. __entry->blkno = blkno;
  504. __entry->bit = bit;
  505. ),
  506. TP_printk("%d %d %llu %llu %u",
  507. __entry->type, __entry->slot, __entry->suballoc,
  508. __entry->blkno, __entry->bit)
  509. );
  510. /* End of trace events for fs/ocfs2/alloc.c. */
  511. /* Trace events for fs/ocfs2/localalloc.c. */
  512. DEFINE_OCFS2_UINT_UINT_UINT_EVENT(ocfs2_la_set_sizes);
  513. DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_alloc_should_use_local);
  514. DEFINE_OCFS2_INT_EVENT(ocfs2_load_local_alloc);
  515. DEFINE_OCFS2_INT_EVENT(ocfs2_begin_local_alloc_recovery);
  516. DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_reserve_local_alloc_bits);
  517. DEFINE_OCFS2_UINT_EVENT(ocfs2_local_alloc_count_bits);
  518. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_local_alloc_find_clear_bits_search_bitmap);
  519. DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_local_alloc_find_clear_bits);
  520. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_sync_local_to_main);
  521. TRACE_EVENT(ocfs2_sync_local_to_main_free,
  522. TP_PROTO(int count, int bit, unsigned long long start_blk,
  523. unsigned long long blkno),
  524. TP_ARGS(count, bit, start_blk, blkno),
  525. TP_STRUCT__entry(
  526. __field(int, count)
  527. __field(int, bit)
  528. __field(unsigned long long, start_blk)
  529. __field(unsigned long long, blkno)
  530. ),
  531. TP_fast_assign(
  532. __entry->count = count;
  533. __entry->bit = bit;
  534. __entry->start_blk = start_blk;
  535. __entry->blkno = blkno;
  536. ),
  537. TP_printk("%d %d %llu %llu",
  538. __entry->count, __entry->bit, __entry->start_blk,
  539. __entry->blkno)
  540. );
  541. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_local_alloc_new_window);
  542. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_local_alloc_new_window_result);
  543. /* End of trace events for fs/ocfs2/localalloc.c. */
  544. /* Trace events for fs/ocfs2/resize.c. */
  545. DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_update_last_group_and_inode);
  546. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_group_extend);
  547. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_group_add);
  548. /* End of trace events for fs/ocfs2/resize.c. */
  549. /* Trace events for fs/ocfs2/suballoc.c. */
  550. DEFINE_OCFS2_ULL_EVENT(ocfs2_validate_group_descriptor);
  551. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_block_group_alloc_contig);
  552. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_block_group_alloc_discontig);
  553. DEFINE_OCFS2_ULL_EVENT(ocfs2_block_group_alloc);
  554. DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_reserve_suballoc_bits_nospc);
  555. DEFINE_OCFS2_UINT_UINT_UINT_EVENT(ocfs2_reserve_suballoc_bits_no_new_group);
  556. DEFINE_OCFS2_ULL_EVENT(ocfs2_reserve_new_inode_new_group);
  557. DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_block_group_set_bits);
  558. TRACE_EVENT(ocfs2_relink_block_group,
  559. TP_PROTO(unsigned long long i_blkno, unsigned int chain,
  560. unsigned long long bg_blkno,
  561. unsigned long long prev_blkno),
  562. TP_ARGS(i_blkno, chain, bg_blkno, prev_blkno),
  563. TP_STRUCT__entry(
  564. __field(unsigned long long, i_blkno)
  565. __field(unsigned int, chain)
  566. __field(unsigned long long, bg_blkno)
  567. __field(unsigned long long, prev_blkno)
  568. ),
  569. TP_fast_assign(
  570. __entry->i_blkno = i_blkno;
  571. __entry->chain = chain;
  572. __entry->bg_blkno = bg_blkno;
  573. __entry->prev_blkno = prev_blkno;
  574. ),
  575. TP_printk("%llu %u %llu %llu",
  576. __entry->i_blkno, __entry->chain, __entry->bg_blkno,
  577. __entry->prev_blkno)
  578. );
  579. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_cluster_group_search_wrong_max_bits);
  580. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_cluster_group_search_max_block);
  581. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_block_group_search_max_block);
  582. DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_search_chain_begin);
  583. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_search_chain_succ);
  584. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_search_chain_end);
  585. DEFINE_OCFS2_UINT_EVENT(ocfs2_claim_suballoc_bits);
  586. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_claim_new_inode_at_loc);
  587. DEFINE_OCFS2_UINT_UINT_EVENT(ocfs2_block_group_clear_bits);
  588. TRACE_EVENT(ocfs2_free_suballoc_bits,
  589. TP_PROTO(unsigned long long inode, unsigned long long group,
  590. unsigned int start_bit, unsigned int count),
  591. TP_ARGS(inode, group, start_bit, count),
  592. TP_STRUCT__entry(
  593. __field(unsigned long long, inode)
  594. __field(unsigned long long, group)
  595. __field(unsigned int, start_bit)
  596. __field(unsigned int, count)
  597. ),
  598. TP_fast_assign(
  599. __entry->inode = inode;
  600. __entry->group = group;
  601. __entry->start_bit = start_bit;
  602. __entry->count = count;
  603. ),
  604. TP_printk("%llu %llu %u %u", __entry->inode, __entry->group,
  605. __entry->start_bit, __entry->count)
  606. );
  607. TRACE_EVENT(ocfs2_free_clusters,
  608. TP_PROTO(unsigned long long bg_blkno, unsigned long long start_blk,
  609. unsigned int start_bit, unsigned int count),
  610. TP_ARGS(bg_blkno, start_blk, start_bit, count),
  611. TP_STRUCT__entry(
  612. __field(unsigned long long, bg_blkno)
  613. __field(unsigned long long, start_blk)
  614. __field(unsigned int, start_bit)
  615. __field(unsigned int, count)
  616. ),
  617. TP_fast_assign(
  618. __entry->bg_blkno = bg_blkno;
  619. __entry->start_blk = start_blk;
  620. __entry->start_bit = start_bit;
  621. __entry->count = count;
  622. ),
  623. TP_printk("%llu %llu %u %u", __entry->bg_blkno, __entry->start_blk,
  624. __entry->start_bit, __entry->count)
  625. );
  626. DEFINE_OCFS2_ULL_EVENT(ocfs2_get_suballoc_slot_bit);
  627. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_test_suballoc_bit);
  628. DEFINE_OCFS2_ULL_EVENT(ocfs2_test_inode_bit);
  629. /* End of trace events for fs/ocfs2/suballoc.c. */
  630. /* Trace events for fs/ocfs2/refcounttree.c. */
  631. DEFINE_OCFS2_ULL_EVENT(ocfs2_validate_refcount_block);
  632. DEFINE_OCFS2_ULL_EVENT(ocfs2_purge_refcount_trees);
  633. DEFINE_OCFS2_ULL_EVENT(ocfs2_create_refcount_tree);
  634. DEFINE_OCFS2_ULL_EVENT(ocfs2_create_refcount_tree_blkno);
  635. DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_change_refcount_rec);
  636. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_expand_inline_ref_root);
  637. DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_divide_leaf_refcount_block);
  638. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_new_leaf_refcount_block);
  639. DECLARE_EVENT_CLASS(ocfs2__refcount_tree_ops,
  640. TP_PROTO(unsigned long long blkno, int index,
  641. unsigned long long cpos,
  642. unsigned int clusters, unsigned int refcount),
  643. TP_ARGS(blkno, index, cpos, clusters, refcount),
  644. TP_STRUCT__entry(
  645. __field(unsigned long long, blkno)
  646. __field(int, index)
  647. __field(unsigned long long, cpos)
  648. __field(unsigned int, clusters)
  649. __field(unsigned int, refcount)
  650. ),
  651. TP_fast_assign(
  652. __entry->blkno = blkno;
  653. __entry->index = index;
  654. __entry->cpos = cpos;
  655. __entry->clusters = clusters;
  656. __entry->refcount = refcount;
  657. ),
  658. TP_printk("%llu %d %llu %u %u", __entry->blkno, __entry->index,
  659. __entry->cpos, __entry->clusters, __entry->refcount)
  660. );
  661. #define DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(name) \
  662. DEFINE_EVENT(ocfs2__refcount_tree_ops, name, \
  663. TP_PROTO(unsigned long long blkno, int index, \
  664. unsigned long long cpos, \
  665. unsigned int count, unsigned int refcount), \
  666. TP_ARGS(blkno, index, cpos, count, refcount))
  667. DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(ocfs2_insert_refcount_rec);
  668. TRACE_EVENT(ocfs2_split_refcount_rec,
  669. TP_PROTO(unsigned long long cpos,
  670. unsigned int clusters, unsigned int refcount,
  671. unsigned long long split_cpos,
  672. unsigned int split_clusters, unsigned int split_refcount),
  673. TP_ARGS(cpos, clusters, refcount,
  674. split_cpos, split_clusters, split_refcount),
  675. TP_STRUCT__entry(
  676. __field(unsigned long long, cpos)
  677. __field(unsigned int, clusters)
  678. __field(unsigned int, refcount)
  679. __field(unsigned long long, split_cpos)
  680. __field(unsigned int, split_clusters)
  681. __field(unsigned int, split_refcount)
  682. ),
  683. TP_fast_assign(
  684. __entry->cpos = cpos;
  685. __entry->clusters = clusters;
  686. __entry->refcount = refcount;
  687. __entry->split_cpos = split_cpos;
  688. __entry->split_clusters = split_clusters;
  689. __entry->split_refcount = split_refcount;
  690. ),
  691. TP_printk("%llu %u %u %llu %u %u",
  692. __entry->cpos, __entry->clusters, __entry->refcount,
  693. __entry->split_cpos, __entry->split_clusters,
  694. __entry->split_refcount)
  695. );
  696. DEFINE_OCFS2_REFCOUNT_TREE_OPS_EVENT(ocfs2_split_refcount_rec_insert);
  697. DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_increase_refcount_begin);
  698. DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_increase_refcount_change);
  699. DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_increase_refcount_insert);
  700. DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_increase_refcount_split);
  701. DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_remove_refcount_extent);
  702. DEFINE_OCFS2_ULL_EVENT(ocfs2_restore_refcount_block);
  703. DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_decrease_refcount_rec);
  704. TRACE_EVENT(ocfs2_decrease_refcount,
  705. TP_PROTO(unsigned long long owner,
  706. unsigned long long cpos,
  707. unsigned int len, int delete),
  708. TP_ARGS(owner, cpos, len, delete),
  709. TP_STRUCT__entry(
  710. __field(unsigned long long, owner)
  711. __field(unsigned long long, cpos)
  712. __field(unsigned int, len)
  713. __field(int, delete)
  714. ),
  715. TP_fast_assign(
  716. __entry->owner = owner;
  717. __entry->cpos = cpos;
  718. __entry->len = len;
  719. __entry->delete = delete;
  720. ),
  721. TP_printk("%llu %llu %u %d",
  722. __entry->owner, __entry->cpos, __entry->len, __entry->delete)
  723. );
  724. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_mark_extent_refcounted);
  725. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_calc_refcount_meta_credits);
  726. TRACE_EVENT(ocfs2_calc_refcount_meta_credits_iterate,
  727. TP_PROTO(int recs_add, unsigned long long cpos,
  728. unsigned int clusters, unsigned long long r_cpos,
  729. unsigned int r_clusters, unsigned int refcount, int index),
  730. TP_ARGS(recs_add, cpos, clusters, r_cpos, r_clusters, refcount, index),
  731. TP_STRUCT__entry(
  732. __field(int, recs_add)
  733. __field(unsigned long long, cpos)
  734. __field(unsigned int, clusters)
  735. __field(unsigned long long, r_cpos)
  736. __field(unsigned int, r_clusters)
  737. __field(unsigned int, refcount)
  738. __field(int, index)
  739. ),
  740. TP_fast_assign(
  741. __entry->recs_add = recs_add;
  742. __entry->cpos = cpos;
  743. __entry->clusters = clusters;
  744. __entry->r_cpos = r_cpos;
  745. __entry->r_clusters = r_clusters;
  746. __entry->refcount = refcount;
  747. __entry->index = index;
  748. ),
  749. TP_printk("%d %llu %u %llu %u %u %d",
  750. __entry->recs_add, __entry->cpos, __entry->clusters,
  751. __entry->r_cpos, __entry->r_clusters,
  752. __entry->refcount, __entry->index)
  753. );
  754. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_add_refcount_flag);
  755. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_prepare_refcount_change_for_del);
  756. DEFINE_OCFS2_INT_INT_EVENT(ocfs2_lock_refcount_allocators);
  757. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_duplicate_clusters_by_page);
  758. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_duplicate_clusters_by_jbd);
  759. TRACE_EVENT(ocfs2_clear_ext_refcount,
  760. TP_PROTO(unsigned long long ino, unsigned int cpos,
  761. unsigned int len, unsigned int p_cluster,
  762. unsigned int ext_flags),
  763. TP_ARGS(ino, cpos, len, p_cluster, ext_flags),
  764. TP_STRUCT__entry(
  765. __field(unsigned long long, ino)
  766. __field(unsigned int, cpos)
  767. __field(unsigned int, len)
  768. __field(unsigned int, p_cluster)
  769. __field(unsigned int, ext_flags)
  770. ),
  771. TP_fast_assign(
  772. __entry->ino = ino;
  773. __entry->cpos = cpos;
  774. __entry->len = len;
  775. __entry->p_cluster = p_cluster;
  776. __entry->ext_flags = ext_flags;
  777. ),
  778. TP_printk("%llu %u %u %u %u",
  779. __entry->ino, __entry->cpos, __entry->len,
  780. __entry->p_cluster, __entry->ext_flags)
  781. );
  782. TRACE_EVENT(ocfs2_replace_clusters,
  783. TP_PROTO(unsigned long long ino, unsigned int cpos,
  784. unsigned int old, unsigned int new, unsigned int len,
  785. unsigned int ext_flags),
  786. TP_ARGS(ino, cpos, old, new, len, ext_flags),
  787. TP_STRUCT__entry(
  788. __field(unsigned long long, ino)
  789. __field(unsigned int, cpos)
  790. __field(unsigned int, old)
  791. __field(unsigned int, new)
  792. __field(unsigned int, len)
  793. __field(unsigned int, ext_flags)
  794. ),
  795. TP_fast_assign(
  796. __entry->ino = ino;
  797. __entry->cpos = cpos;
  798. __entry->old = old;
  799. __entry->new = new;
  800. __entry->len = len;
  801. __entry->ext_flags = ext_flags;
  802. ),
  803. TP_printk("%llu %u %u %u %u %u",
  804. __entry->ino, __entry->cpos, __entry->old, __entry->new,
  805. __entry->len, __entry->ext_flags)
  806. );
  807. DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_make_clusters_writable);
  808. TRACE_EVENT(ocfs2_refcount_cow_hunk,
  809. TP_PROTO(unsigned long long ino, unsigned int cpos,
  810. unsigned int write_len, unsigned int max_cpos,
  811. unsigned int cow_start, unsigned int cow_len),
  812. TP_ARGS(ino, cpos, write_len, max_cpos, cow_start, cow_len),
  813. TP_STRUCT__entry(
  814. __field(unsigned long long, ino)
  815. __field(unsigned int, cpos)
  816. __field(unsigned int, write_len)
  817. __field(unsigned int, max_cpos)
  818. __field(unsigned int, cow_start)
  819. __field(unsigned int, cow_len)
  820. ),
  821. TP_fast_assign(
  822. __entry->ino = ino;
  823. __entry->cpos = cpos;
  824. __entry->write_len = write_len;
  825. __entry->max_cpos = max_cpos;
  826. __entry->cow_start = cow_start;
  827. __entry->cow_len = cow_len;
  828. ),
  829. TP_printk("%llu %u %u %u %u %u",
  830. __entry->ino, __entry->cpos, __entry->write_len,
  831. __entry->max_cpos, __entry->cow_start, __entry->cow_len)
  832. );
  833. /* End of trace events for fs/ocfs2/refcounttree.c. */
  834. /* Trace events for fs/ocfs2/aops.c. */
  835. DECLARE_EVENT_CLASS(ocfs2__get_block,
  836. TP_PROTO(unsigned long long ino, unsigned long long iblock,
  837. void *bh_result, int create),
  838. TP_ARGS(ino, iblock, bh_result, create),
  839. TP_STRUCT__entry(
  840. __field(unsigned long long, ino)
  841. __field(unsigned long long, iblock)
  842. __field(void *, bh_result)
  843. __field(int, create)
  844. ),
  845. TP_fast_assign(
  846. __entry->ino = ino;
  847. __entry->iblock = iblock;
  848. __entry->bh_result = bh_result;
  849. __entry->create = create;
  850. ),
  851. TP_printk("%llu %llu %p %d",
  852. __entry->ino, __entry->iblock,
  853. __entry->bh_result, __entry->create)
  854. );
  855. #define DEFINE_OCFS2_GET_BLOCK_EVENT(name) \
  856. DEFINE_EVENT(ocfs2__get_block, name, \
  857. TP_PROTO(unsigned long long ino, unsigned long long iblock, \
  858. void *bh_result, int create), \
  859. TP_ARGS(ino, iblock, bh_result, create))
  860. DEFINE_OCFS2_GET_BLOCK_EVENT(ocfs2_symlink_get_block);
  861. DEFINE_OCFS2_GET_BLOCK_EVENT(ocfs2_get_block);
  862. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_get_block_end);
  863. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_readpage);
  864. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_writepage);
  865. DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_bmap);
  866. TRACE_EVENT(ocfs2_try_to_write_inline_data,
  867. TP_PROTO(unsigned long long ino, unsigned int len,
  868. unsigned long long pos, unsigned int flags),
  869. TP_ARGS(ino, len, pos, flags),
  870. TP_STRUCT__entry(
  871. __field(unsigned long long, ino)
  872. __field(unsigned int, len)
  873. __field(unsigned long long, pos)
  874. __field(unsigned int, flags)
  875. ),
  876. TP_fast_assign(
  877. __entry->ino = ino;
  878. __entry->len = len;
  879. __entry->pos = pos;
  880. __entry->flags = flags;
  881. ),
  882. TP_printk("%llu %u %llu 0x%x",
  883. __entry->ino, __entry->len, __entry->pos, __entry->flags)
  884. );
  885. TRACE_EVENT(ocfs2_write_begin_nolock,
  886. TP_PROTO(unsigned long long ino,
  887. long long i_size, unsigned int i_clusters,
  888. unsigned long long pos, unsigned int len,
  889. unsigned int flags, void *page,
  890. unsigned int clusters, unsigned int extents_to_split),
  891. TP_ARGS(ino, i_size, i_clusters, pos, len, flags,
  892. page, clusters, extents_to_split),
  893. TP_STRUCT__entry(
  894. __field(unsigned long long, ino)
  895. __field(long long, i_size)
  896. __field(unsigned int, i_clusters)
  897. __field(unsigned long long, pos)
  898. __field(unsigned int, len)
  899. __field(unsigned int, flags)
  900. __field(void *, page)
  901. __field(unsigned int, clusters)
  902. __field(unsigned int, extents_to_split)
  903. ),
  904. TP_fast_assign(
  905. __entry->ino = ino;
  906. __entry->i_size = i_size;
  907. __entry->i_clusters = i_clusters;
  908. __entry->pos = pos;
  909. __entry->len = len;
  910. __entry->flags = flags;
  911. __entry->page = page;
  912. __entry->clusters = clusters;
  913. __entry->extents_to_split = extents_to_split;
  914. ),
  915. TP_printk("%llu %lld %u %llu %u %u %p %u %u",
  916. __entry->ino, __entry->i_size, __entry->i_clusters,
  917. __entry->pos, __entry->len,
  918. __entry->flags, __entry->page, __entry->clusters,
  919. __entry->extents_to_split)
  920. );
  921. TRACE_EVENT(ocfs2_write_end_inline,
  922. TP_PROTO(unsigned long long ino,
  923. unsigned long long pos, unsigned int copied,
  924. unsigned int id_count, unsigned int features),
  925. TP_ARGS(ino, pos, copied, id_count, features),
  926. TP_STRUCT__entry(
  927. __field(unsigned long long, ino)
  928. __field(unsigned long long, pos)
  929. __field(unsigned int, copied)
  930. __field(unsigned int, id_count)
  931. __field(unsigned int, features)
  932. ),
  933. TP_fast_assign(
  934. __entry->ino = ino;
  935. __entry->pos = pos;
  936. __entry->copied = copied;
  937. __entry->id_count = id_count;
  938. __entry->features = features;
  939. ),
  940. TP_printk("%llu %llu %u %u %u",
  941. __entry->ino, __entry->pos, __entry->copied,
  942. __entry->id_count, __entry->features)
  943. );
  944. /* End of trace events for fs/ocfs2/aops.c. */
  945. /* Trace events for fs/ocfs2/mmap.c. */
  946. TRACE_EVENT(ocfs2_fault,
  947. TP_PROTO(unsigned long long ino,
  948. void *area, void *page, unsigned long pgoff),
  949. TP_ARGS(ino, area, page, pgoff),
  950. TP_STRUCT__entry(
  951. __field(unsigned long long, ino)
  952. __field(void *, area)
  953. __field(void *, page)
  954. __field(unsigned long, pgoff)
  955. ),
  956. TP_fast_assign(
  957. __entry->ino = ino;
  958. __entry->area = area;
  959. __entry->page = page;
  960. __entry->pgoff = pgoff;
  961. ),
  962. TP_printk("%llu %p %p %lu",
  963. __entry->ino, __entry->area, __entry->page, __entry->pgoff)
  964. );
  965. /* End of trace events for fs/ocfs2/mmap.c. */
  966. #endif /* _TRACE_OCFS2_H */
  967. /* This part must be outside protection */
  968. #undef TRACE_INCLUDE_PATH
  969. #define TRACE_INCLUDE_PATH .
  970. #define TRACE_INCLUDE_FILE ocfs2_trace
  971. #include <trace/define_trace.h>