ext3.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM ext3
  3. #if !defined(_TRACE_EXT3_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_EXT3_H
  5. #include <linux/tracepoint.h>
  6. TRACE_EVENT(ext3_free_inode,
  7. TP_PROTO(struct inode *inode),
  8. TP_ARGS(inode),
  9. TP_STRUCT__entry(
  10. __field( dev_t, dev )
  11. __field( ino_t, ino )
  12. __field( umode_t, mode )
  13. __field( uid_t, uid )
  14. __field( gid_t, gid )
  15. __field( blkcnt_t, blocks )
  16. ),
  17. TP_fast_assign(
  18. __entry->dev = inode->i_sb->s_dev;
  19. __entry->ino = inode->i_ino;
  20. __entry->mode = inode->i_mode;
  21. __entry->uid = i_uid_read(inode);
  22. __entry->gid = i_gid_read(inode);
  23. __entry->blocks = inode->i_blocks;
  24. ),
  25. TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %lu",
  26. MAJOR(__entry->dev), MINOR(__entry->dev),
  27. (unsigned long) __entry->ino,
  28. __entry->mode, __entry->uid, __entry->gid,
  29. (unsigned long) __entry->blocks)
  30. );
  31. TRACE_EVENT(ext3_request_inode,
  32. TP_PROTO(struct inode *dir, int mode),
  33. TP_ARGS(dir, mode),
  34. TP_STRUCT__entry(
  35. __field( dev_t, dev )
  36. __field( ino_t, dir )
  37. __field( umode_t, mode )
  38. ),
  39. TP_fast_assign(
  40. __entry->dev = dir->i_sb->s_dev;
  41. __entry->dir = dir->i_ino;
  42. __entry->mode = mode;
  43. ),
  44. TP_printk("dev %d,%d dir %lu mode 0%o",
  45. MAJOR(__entry->dev), MINOR(__entry->dev),
  46. (unsigned long) __entry->dir, __entry->mode)
  47. );
  48. TRACE_EVENT(ext3_allocate_inode,
  49. TP_PROTO(struct inode *inode, struct inode *dir, int mode),
  50. TP_ARGS(inode, dir, mode),
  51. TP_STRUCT__entry(
  52. __field( dev_t, dev )
  53. __field( ino_t, ino )
  54. __field( ino_t, dir )
  55. __field( umode_t, mode )
  56. ),
  57. TP_fast_assign(
  58. __entry->dev = inode->i_sb->s_dev;
  59. __entry->ino = inode->i_ino;
  60. __entry->dir = dir->i_ino;
  61. __entry->mode = mode;
  62. ),
  63. TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
  64. MAJOR(__entry->dev), MINOR(__entry->dev),
  65. (unsigned long) __entry->ino,
  66. (unsigned long) __entry->dir, __entry->mode)
  67. );
  68. TRACE_EVENT(ext3_evict_inode,
  69. TP_PROTO(struct inode *inode),
  70. TP_ARGS(inode),
  71. TP_STRUCT__entry(
  72. __field( dev_t, dev )
  73. __field( ino_t, ino )
  74. __field( int, nlink )
  75. ),
  76. TP_fast_assign(
  77. __entry->dev = inode->i_sb->s_dev;
  78. __entry->ino = inode->i_ino;
  79. __entry->nlink = inode->i_nlink;
  80. ),
  81. TP_printk("dev %d,%d ino %lu nlink %d",
  82. MAJOR(__entry->dev), MINOR(__entry->dev),
  83. (unsigned long) __entry->ino, __entry->nlink)
  84. );
  85. TRACE_EVENT(ext3_drop_inode,
  86. TP_PROTO(struct inode *inode, int drop),
  87. TP_ARGS(inode, drop),
  88. TP_STRUCT__entry(
  89. __field( dev_t, dev )
  90. __field( ino_t, ino )
  91. __field( int, drop )
  92. ),
  93. TP_fast_assign(
  94. __entry->dev = inode->i_sb->s_dev;
  95. __entry->ino = inode->i_ino;
  96. __entry->drop = drop;
  97. ),
  98. TP_printk("dev %d,%d ino %lu drop %d",
  99. MAJOR(__entry->dev), MINOR(__entry->dev),
  100. (unsigned long) __entry->ino, __entry->drop)
  101. );
  102. TRACE_EVENT(ext3_mark_inode_dirty,
  103. TP_PROTO(struct inode *inode, unsigned long IP),
  104. TP_ARGS(inode, IP),
  105. TP_STRUCT__entry(
  106. __field( dev_t, dev )
  107. __field( ino_t, ino )
  108. __field(unsigned long, ip )
  109. ),
  110. TP_fast_assign(
  111. __entry->dev = inode->i_sb->s_dev;
  112. __entry->ino = inode->i_ino;
  113. __entry->ip = IP;
  114. ),
  115. TP_printk("dev %d,%d ino %lu caller %pS",
  116. MAJOR(__entry->dev), MINOR(__entry->dev),
  117. (unsigned long) __entry->ino, (void *)__entry->ip)
  118. );
  119. TRACE_EVENT(ext3_write_begin,
  120. TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
  121. unsigned int flags),
  122. TP_ARGS(inode, pos, len, flags),
  123. TP_STRUCT__entry(
  124. __field( dev_t, dev )
  125. __field( ino_t, ino )
  126. __field( loff_t, pos )
  127. __field( unsigned int, len )
  128. __field( unsigned int, flags )
  129. ),
  130. TP_fast_assign(
  131. __entry->dev = inode->i_sb->s_dev;
  132. __entry->ino = inode->i_ino;
  133. __entry->pos = pos;
  134. __entry->len = len;
  135. __entry->flags = flags;
  136. ),
  137. TP_printk("dev %d,%d ino %lu pos %llu len %u flags %u",
  138. MAJOR(__entry->dev), MINOR(__entry->dev),
  139. (unsigned long) __entry->ino,
  140. (unsigned long long) __entry->pos, __entry->len,
  141. __entry->flags)
  142. );
  143. DECLARE_EVENT_CLASS(ext3__write_end,
  144. TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
  145. unsigned int copied),
  146. TP_ARGS(inode, pos, len, copied),
  147. TP_STRUCT__entry(
  148. __field( dev_t, dev )
  149. __field( ino_t, ino )
  150. __field( loff_t, pos )
  151. __field( unsigned int, len )
  152. __field( unsigned int, copied )
  153. ),
  154. TP_fast_assign(
  155. __entry->dev = inode->i_sb->s_dev;
  156. __entry->ino = inode->i_ino;
  157. __entry->pos = pos;
  158. __entry->len = len;
  159. __entry->copied = copied;
  160. ),
  161. TP_printk("dev %d,%d ino %lu pos %llu len %u copied %u",
  162. MAJOR(__entry->dev), MINOR(__entry->dev),
  163. (unsigned long) __entry->ino,
  164. (unsigned long long) __entry->pos, __entry->len,
  165. __entry->copied)
  166. );
  167. DEFINE_EVENT(ext3__write_end, ext3_ordered_write_end,
  168. TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
  169. unsigned int copied),
  170. TP_ARGS(inode, pos, len, copied)
  171. );
  172. DEFINE_EVENT(ext3__write_end, ext3_writeback_write_end,
  173. TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
  174. unsigned int copied),
  175. TP_ARGS(inode, pos, len, copied)
  176. );
  177. DEFINE_EVENT(ext3__write_end, ext3_journalled_write_end,
  178. TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
  179. unsigned int copied),
  180. TP_ARGS(inode, pos, len, copied)
  181. );
  182. DECLARE_EVENT_CLASS(ext3__page_op,
  183. TP_PROTO(struct page *page),
  184. TP_ARGS(page),
  185. TP_STRUCT__entry(
  186. __field( dev_t, dev )
  187. __field( ino_t, ino )
  188. __field( pgoff_t, index )
  189. ),
  190. TP_fast_assign(
  191. __entry->index = page->index;
  192. __entry->ino = page->mapping->host->i_ino;
  193. __entry->dev = page->mapping->host->i_sb->s_dev;
  194. ),
  195. TP_printk("dev %d,%d ino %lu page_index %lu",
  196. MAJOR(__entry->dev), MINOR(__entry->dev),
  197. (unsigned long) __entry->ino, __entry->index)
  198. );
  199. DEFINE_EVENT(ext3__page_op, ext3_ordered_writepage,
  200. TP_PROTO(struct page *page),
  201. TP_ARGS(page)
  202. );
  203. DEFINE_EVENT(ext3__page_op, ext3_writeback_writepage,
  204. TP_PROTO(struct page *page),
  205. TP_ARGS(page)
  206. );
  207. DEFINE_EVENT(ext3__page_op, ext3_journalled_writepage,
  208. TP_PROTO(struct page *page),
  209. TP_ARGS(page)
  210. );
  211. DEFINE_EVENT(ext3__page_op, ext3_readpage,
  212. TP_PROTO(struct page *page),
  213. TP_ARGS(page)
  214. );
  215. DEFINE_EVENT(ext3__page_op, ext3_releasepage,
  216. TP_PROTO(struct page *page),
  217. TP_ARGS(page)
  218. );
  219. TRACE_EVENT(ext3_invalidatepage,
  220. TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
  221. TP_ARGS(page, offset, length),
  222. TP_STRUCT__entry(
  223. __field( pgoff_t, index )
  224. __field( unsigned int, offset )
  225. __field( unsigned int, length )
  226. __field( ino_t, ino )
  227. __field( dev_t, dev )
  228. ),
  229. TP_fast_assign(
  230. __entry->index = page->index;
  231. __entry->offset = offset;
  232. __entry->length = length;
  233. __entry->ino = page->mapping->host->i_ino;
  234. __entry->dev = page->mapping->host->i_sb->s_dev;
  235. ),
  236. TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
  237. MAJOR(__entry->dev), MINOR(__entry->dev),
  238. (unsigned long) __entry->ino,
  239. __entry->index, __entry->offset, __entry->length)
  240. );
  241. TRACE_EVENT(ext3_discard_blocks,
  242. TP_PROTO(struct super_block *sb, unsigned long blk,
  243. unsigned long count),
  244. TP_ARGS(sb, blk, count),
  245. TP_STRUCT__entry(
  246. __field( dev_t, dev )
  247. __field( unsigned long, blk )
  248. __field( unsigned long, count )
  249. ),
  250. TP_fast_assign(
  251. __entry->dev = sb->s_dev;
  252. __entry->blk = blk;
  253. __entry->count = count;
  254. ),
  255. TP_printk("dev %d,%d blk %lu count %lu",
  256. MAJOR(__entry->dev), MINOR(__entry->dev),
  257. __entry->blk, __entry->count)
  258. );
  259. TRACE_EVENT(ext3_request_blocks,
  260. TP_PROTO(struct inode *inode, unsigned long goal,
  261. unsigned long count),
  262. TP_ARGS(inode, goal, count),
  263. TP_STRUCT__entry(
  264. __field( dev_t, dev )
  265. __field( ino_t, ino )
  266. __field( unsigned long, count )
  267. __field( unsigned long, goal )
  268. ),
  269. TP_fast_assign(
  270. __entry->dev = inode->i_sb->s_dev;
  271. __entry->ino = inode->i_ino;
  272. __entry->count = count;
  273. __entry->goal = goal;
  274. ),
  275. TP_printk("dev %d,%d ino %lu count %lu goal %lu ",
  276. MAJOR(__entry->dev), MINOR(__entry->dev),
  277. (unsigned long) __entry->ino,
  278. __entry->count, __entry->goal)
  279. );
  280. TRACE_EVENT(ext3_allocate_blocks,
  281. TP_PROTO(struct inode *inode, unsigned long goal,
  282. unsigned long count, unsigned long block),
  283. TP_ARGS(inode, goal, count, block),
  284. TP_STRUCT__entry(
  285. __field( dev_t, dev )
  286. __field( ino_t, ino )
  287. __field( unsigned long, block )
  288. __field( unsigned long, count )
  289. __field( unsigned long, goal )
  290. ),
  291. TP_fast_assign(
  292. __entry->dev = inode->i_sb->s_dev;
  293. __entry->ino = inode->i_ino;
  294. __entry->block = block;
  295. __entry->count = count;
  296. __entry->goal = goal;
  297. ),
  298. TP_printk("dev %d,%d ino %lu count %lu block %lu goal %lu",
  299. MAJOR(__entry->dev), MINOR(__entry->dev),
  300. (unsigned long) __entry->ino,
  301. __entry->count, __entry->block,
  302. __entry->goal)
  303. );
  304. TRACE_EVENT(ext3_free_blocks,
  305. TP_PROTO(struct inode *inode, unsigned long block,
  306. unsigned long count),
  307. TP_ARGS(inode, block, count),
  308. TP_STRUCT__entry(
  309. __field( dev_t, dev )
  310. __field( ino_t, ino )
  311. __field( umode_t, mode )
  312. __field( unsigned long, block )
  313. __field( unsigned long, count )
  314. ),
  315. TP_fast_assign(
  316. __entry->dev = inode->i_sb->s_dev;
  317. __entry->ino = inode->i_ino;
  318. __entry->mode = inode->i_mode;
  319. __entry->block = block;
  320. __entry->count = count;
  321. ),
  322. TP_printk("dev %d,%d ino %lu mode 0%o block %lu count %lu",
  323. MAJOR(__entry->dev), MINOR(__entry->dev),
  324. (unsigned long) __entry->ino,
  325. __entry->mode, __entry->block, __entry->count)
  326. );
  327. TRACE_EVENT(ext3_sync_file_enter,
  328. TP_PROTO(struct file *file, int datasync),
  329. TP_ARGS(file, datasync),
  330. TP_STRUCT__entry(
  331. __field( dev_t, dev )
  332. __field( ino_t, ino )
  333. __field( ino_t, parent )
  334. __field( int, datasync )
  335. ),
  336. TP_fast_assign(
  337. struct dentry *dentry = file->f_path.dentry;
  338. __entry->dev = d_inode(dentry)->i_sb->s_dev;
  339. __entry->ino = d_inode(dentry)->i_ino;
  340. __entry->datasync = datasync;
  341. __entry->parent = d_inode(dentry->d_parent)->i_ino;
  342. ),
  343. TP_printk("dev %d,%d ino %lu parent %ld datasync %d ",
  344. MAJOR(__entry->dev), MINOR(__entry->dev),
  345. (unsigned long) __entry->ino,
  346. (unsigned long) __entry->parent, __entry->datasync)
  347. );
  348. TRACE_EVENT(ext3_sync_file_exit,
  349. TP_PROTO(struct inode *inode, int ret),
  350. TP_ARGS(inode, ret),
  351. TP_STRUCT__entry(
  352. __field( int, ret )
  353. __field( ino_t, ino )
  354. __field( dev_t, dev )
  355. ),
  356. TP_fast_assign(
  357. __entry->ret = ret;
  358. __entry->ino = inode->i_ino;
  359. __entry->dev = inode->i_sb->s_dev;
  360. ),
  361. TP_printk("dev %d,%d ino %lu ret %d",
  362. MAJOR(__entry->dev), MINOR(__entry->dev),
  363. (unsigned long) __entry->ino,
  364. __entry->ret)
  365. );
  366. TRACE_EVENT(ext3_sync_fs,
  367. TP_PROTO(struct super_block *sb, int wait),
  368. TP_ARGS(sb, wait),
  369. TP_STRUCT__entry(
  370. __field( dev_t, dev )
  371. __field( int, wait )
  372. ),
  373. TP_fast_assign(
  374. __entry->dev = sb->s_dev;
  375. __entry->wait = wait;
  376. ),
  377. TP_printk("dev %d,%d wait %d",
  378. MAJOR(__entry->dev), MINOR(__entry->dev),
  379. __entry->wait)
  380. );
  381. TRACE_EVENT(ext3_rsv_window_add,
  382. TP_PROTO(struct super_block *sb,
  383. struct ext3_reserve_window_node *rsv_node),
  384. TP_ARGS(sb, rsv_node),
  385. TP_STRUCT__entry(
  386. __field( unsigned long, start )
  387. __field( unsigned long, end )
  388. __field( dev_t, dev )
  389. ),
  390. TP_fast_assign(
  391. __entry->dev = sb->s_dev;
  392. __entry->start = rsv_node->rsv_window._rsv_start;
  393. __entry->end = rsv_node->rsv_window._rsv_end;
  394. ),
  395. TP_printk("dev %d,%d start %lu end %lu",
  396. MAJOR(__entry->dev), MINOR(__entry->dev),
  397. __entry->start, __entry->end)
  398. );
  399. TRACE_EVENT(ext3_discard_reservation,
  400. TP_PROTO(struct inode *inode,
  401. struct ext3_reserve_window_node *rsv_node),
  402. TP_ARGS(inode, rsv_node),
  403. TP_STRUCT__entry(
  404. __field( unsigned long, start )
  405. __field( unsigned long, end )
  406. __field( ino_t, ino )
  407. __field( dev_t, dev )
  408. ),
  409. TP_fast_assign(
  410. __entry->start = rsv_node->rsv_window._rsv_start;
  411. __entry->end = rsv_node->rsv_window._rsv_end;
  412. __entry->ino = inode->i_ino;
  413. __entry->dev = inode->i_sb->s_dev;
  414. ),
  415. TP_printk("dev %d,%d ino %lu start %lu end %lu",
  416. MAJOR(__entry->dev), MINOR(__entry->dev),
  417. (unsigned long)__entry->ino, __entry->start,
  418. __entry->end)
  419. );
  420. TRACE_EVENT(ext3_alloc_new_reservation,
  421. TP_PROTO(struct super_block *sb, unsigned long goal),
  422. TP_ARGS(sb, goal),
  423. TP_STRUCT__entry(
  424. __field( dev_t, dev )
  425. __field( unsigned long, goal )
  426. ),
  427. TP_fast_assign(
  428. __entry->dev = sb->s_dev;
  429. __entry->goal = goal;
  430. ),
  431. TP_printk("dev %d,%d goal %lu",
  432. MAJOR(__entry->dev), MINOR(__entry->dev),
  433. __entry->goal)
  434. );
  435. TRACE_EVENT(ext3_reserved,
  436. TP_PROTO(struct super_block *sb, unsigned long block,
  437. struct ext3_reserve_window_node *rsv_node),
  438. TP_ARGS(sb, block, rsv_node),
  439. TP_STRUCT__entry(
  440. __field( unsigned long, block )
  441. __field( unsigned long, start )
  442. __field( unsigned long, end )
  443. __field( dev_t, dev )
  444. ),
  445. TP_fast_assign(
  446. __entry->block = block;
  447. __entry->start = rsv_node->rsv_window._rsv_start;
  448. __entry->end = rsv_node->rsv_window._rsv_end;
  449. __entry->dev = sb->s_dev;
  450. ),
  451. TP_printk("dev %d,%d block %lu, start %lu end %lu",
  452. MAJOR(__entry->dev), MINOR(__entry->dev),
  453. __entry->block, __entry->start, __entry->end)
  454. );
  455. TRACE_EVENT(ext3_forget,
  456. TP_PROTO(struct inode *inode, int is_metadata, unsigned long block),
  457. TP_ARGS(inode, is_metadata, block),
  458. TP_STRUCT__entry(
  459. __field( dev_t, dev )
  460. __field( ino_t, ino )
  461. __field( umode_t, mode )
  462. __field( int, is_metadata )
  463. __field( unsigned long, block )
  464. ),
  465. TP_fast_assign(
  466. __entry->dev = inode->i_sb->s_dev;
  467. __entry->ino = inode->i_ino;
  468. __entry->mode = inode->i_mode;
  469. __entry->is_metadata = is_metadata;
  470. __entry->block = block;
  471. ),
  472. TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %lu",
  473. MAJOR(__entry->dev), MINOR(__entry->dev),
  474. (unsigned long) __entry->ino,
  475. __entry->mode, __entry->is_metadata, __entry->block)
  476. );
  477. TRACE_EVENT(ext3_read_block_bitmap,
  478. TP_PROTO(struct super_block *sb, unsigned int group),
  479. TP_ARGS(sb, group),
  480. TP_STRUCT__entry(
  481. __field( dev_t, dev )
  482. __field( __u32, group )
  483. ),
  484. TP_fast_assign(
  485. __entry->dev = sb->s_dev;
  486. __entry->group = group;
  487. ),
  488. TP_printk("dev %d,%d group %u",
  489. MAJOR(__entry->dev), MINOR(__entry->dev),
  490. __entry->group)
  491. );
  492. TRACE_EVENT(ext3_direct_IO_enter,
  493. TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
  494. TP_ARGS(inode, offset, len, rw),
  495. TP_STRUCT__entry(
  496. __field( ino_t, ino )
  497. __field( dev_t, dev )
  498. __field( loff_t, pos )
  499. __field( unsigned long, len )
  500. __field( int, rw )
  501. ),
  502. TP_fast_assign(
  503. __entry->ino = inode->i_ino;
  504. __entry->dev = inode->i_sb->s_dev;
  505. __entry->pos = offset;
  506. __entry->len = len;
  507. __entry->rw = rw;
  508. ),
  509. TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d",
  510. MAJOR(__entry->dev), MINOR(__entry->dev),
  511. (unsigned long) __entry->ino,
  512. (unsigned long long) __entry->pos, __entry->len,
  513. __entry->rw)
  514. );
  515. TRACE_EVENT(ext3_direct_IO_exit,
  516. TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
  517. int rw, int ret),
  518. TP_ARGS(inode, offset, len, rw, ret),
  519. TP_STRUCT__entry(
  520. __field( ino_t, ino )
  521. __field( dev_t, dev )
  522. __field( loff_t, pos )
  523. __field( unsigned long, len )
  524. __field( int, rw )
  525. __field( int, ret )
  526. ),
  527. TP_fast_assign(
  528. __entry->ino = inode->i_ino;
  529. __entry->dev = inode->i_sb->s_dev;
  530. __entry->pos = offset;
  531. __entry->len = len;
  532. __entry->rw = rw;
  533. __entry->ret = ret;
  534. ),
  535. TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d ret %d",
  536. MAJOR(__entry->dev), MINOR(__entry->dev),
  537. (unsigned long) __entry->ino,
  538. (unsigned long long) __entry->pos, __entry->len,
  539. __entry->rw, __entry->ret)
  540. );
  541. TRACE_EVENT(ext3_unlink_enter,
  542. TP_PROTO(struct inode *parent, struct dentry *dentry),
  543. TP_ARGS(parent, dentry),
  544. TP_STRUCT__entry(
  545. __field( ino_t, parent )
  546. __field( ino_t, ino )
  547. __field( loff_t, size )
  548. __field( dev_t, dev )
  549. ),
  550. TP_fast_assign(
  551. __entry->parent = parent->i_ino;
  552. __entry->ino = d_inode(dentry)->i_ino;
  553. __entry->size = d_inode(dentry)->i_size;
  554. __entry->dev = d_inode(dentry)->i_sb->s_dev;
  555. ),
  556. TP_printk("dev %d,%d ino %lu size %lld parent %ld",
  557. MAJOR(__entry->dev), MINOR(__entry->dev),
  558. (unsigned long) __entry->ino,
  559. (unsigned long long)__entry->size,
  560. (unsigned long) __entry->parent)
  561. );
  562. TRACE_EVENT(ext3_unlink_exit,
  563. TP_PROTO(struct dentry *dentry, int ret),
  564. TP_ARGS(dentry, ret),
  565. TP_STRUCT__entry(
  566. __field( ino_t, ino )
  567. __field( dev_t, dev )
  568. __field( int, ret )
  569. ),
  570. TP_fast_assign(
  571. __entry->ino = d_inode(dentry)->i_ino;
  572. __entry->dev = d_inode(dentry)->i_sb->s_dev;
  573. __entry->ret = ret;
  574. ),
  575. TP_printk("dev %d,%d ino %lu ret %d",
  576. MAJOR(__entry->dev), MINOR(__entry->dev),
  577. (unsigned long) __entry->ino,
  578. __entry->ret)
  579. );
  580. DECLARE_EVENT_CLASS(ext3__truncate,
  581. TP_PROTO(struct inode *inode),
  582. TP_ARGS(inode),
  583. TP_STRUCT__entry(
  584. __field( ino_t, ino )
  585. __field( dev_t, dev )
  586. __field( blkcnt_t, blocks )
  587. ),
  588. TP_fast_assign(
  589. __entry->ino = inode->i_ino;
  590. __entry->dev = inode->i_sb->s_dev;
  591. __entry->blocks = inode->i_blocks;
  592. ),
  593. TP_printk("dev %d,%d ino %lu blocks %lu",
  594. MAJOR(__entry->dev), MINOR(__entry->dev),
  595. (unsigned long) __entry->ino, (unsigned long) __entry->blocks)
  596. );
  597. DEFINE_EVENT(ext3__truncate, ext3_truncate_enter,
  598. TP_PROTO(struct inode *inode),
  599. TP_ARGS(inode)
  600. );
  601. DEFINE_EVENT(ext3__truncate, ext3_truncate_exit,
  602. TP_PROTO(struct inode *inode),
  603. TP_ARGS(inode)
  604. );
  605. TRACE_EVENT(ext3_get_blocks_enter,
  606. TP_PROTO(struct inode *inode, unsigned long lblk,
  607. unsigned long len, int create),
  608. TP_ARGS(inode, lblk, len, create),
  609. TP_STRUCT__entry(
  610. __field( ino_t, ino )
  611. __field( dev_t, dev )
  612. __field( unsigned long, lblk )
  613. __field( unsigned long, len )
  614. __field( int, create )
  615. ),
  616. TP_fast_assign(
  617. __entry->ino = inode->i_ino;
  618. __entry->dev = inode->i_sb->s_dev;
  619. __entry->lblk = lblk;
  620. __entry->len = len;
  621. __entry->create = create;
  622. ),
  623. TP_printk("dev %d,%d ino %lu lblk %lu len %lu create %u",
  624. MAJOR(__entry->dev), MINOR(__entry->dev),
  625. (unsigned long) __entry->ino,
  626. __entry->lblk, __entry->len, __entry->create)
  627. );
  628. TRACE_EVENT(ext3_get_blocks_exit,
  629. TP_PROTO(struct inode *inode, unsigned long lblk,
  630. unsigned long pblk, unsigned long len, int ret),
  631. TP_ARGS(inode, lblk, pblk, len, ret),
  632. TP_STRUCT__entry(
  633. __field( ino_t, ino )
  634. __field( dev_t, dev )
  635. __field( unsigned long, lblk )
  636. __field( unsigned long, pblk )
  637. __field( unsigned long, len )
  638. __field( int, ret )
  639. ),
  640. TP_fast_assign(
  641. __entry->ino = inode->i_ino;
  642. __entry->dev = inode->i_sb->s_dev;
  643. __entry->lblk = lblk;
  644. __entry->pblk = pblk;
  645. __entry->len = len;
  646. __entry->ret = ret;
  647. ),
  648. TP_printk("dev %d,%d ino %lu lblk %lu pblk %lu len %lu ret %d",
  649. MAJOR(__entry->dev), MINOR(__entry->dev),
  650. (unsigned long) __entry->ino,
  651. __entry->lblk, __entry->pblk,
  652. __entry->len, __entry->ret)
  653. );
  654. TRACE_EVENT(ext3_load_inode,
  655. TP_PROTO(struct inode *inode),
  656. TP_ARGS(inode),
  657. TP_STRUCT__entry(
  658. __field( ino_t, ino )
  659. __field( dev_t, dev )
  660. ),
  661. TP_fast_assign(
  662. __entry->ino = inode->i_ino;
  663. __entry->dev = inode->i_sb->s_dev;
  664. ),
  665. TP_printk("dev %d,%d ino %lu",
  666. MAJOR(__entry->dev), MINOR(__entry->dev),
  667. (unsigned long) __entry->ino)
  668. );
  669. #endif /* _TRACE_EXT3_H */
  670. /* This part must be outside protection */
  671. #include <trace/define_trace.h>