xref: /openbmc/linux/include/trace/events/f2fs.h (revision 4cf18537)
1a2a4a7e4SNamjae Jeon #undef TRACE_SYSTEM
2a2a4a7e4SNamjae Jeon #define TRACE_SYSTEM f2fs
3a2a4a7e4SNamjae Jeon 
4a2a4a7e4SNamjae Jeon #if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)
5a2a4a7e4SNamjae Jeon #define _TRACE_F2FS_H
6a2a4a7e4SNamjae Jeon 
7a2a4a7e4SNamjae Jeon #include <linux/tracepoint.h>
8a2a4a7e4SNamjae Jeon 
9a2a4a7e4SNamjae Jeon #define show_dev(entry)		MAJOR(entry->dev), MINOR(entry->dev)
10a2a4a7e4SNamjae Jeon #define show_dev_ino(entry)	show_dev(entry), (unsigned long)entry->ino
116ec178daSNamjae Jeon 
125511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(NODE);
135511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(DATA);
145511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(META);
155511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(META_FLUSH);
165d799881SJaegeuk Kim TRACE_DEFINE_ENUM(INMEM);
175d799881SJaegeuk Kim TRACE_DEFINE_ENUM(INMEM_DROP);
185d799881SJaegeuk Kim TRACE_DEFINE_ENUM(IPU);
195d799881SJaegeuk Kim TRACE_DEFINE_ENUM(OPU);
205511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_HOT_DATA);
215511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_WARM_DATA);
225511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_COLD_DATA);
235511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_HOT_NODE);
245511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_WARM_NODE);
255511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CURSEG_COLD_NODE);
265511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(NO_CHECK_TYPE);
275511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(GC_GREEDY);
285511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(GC_CB);
295511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(FG_GC);
305511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(BG_GC);
315511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(LFS);
325511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(SSR);
335511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_RAHEAD);
345511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_WRITE);
355511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_SYNC);
365511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_NOIDLE);
375511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_FLUSH);
385511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_FUA);
395511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_PRIO);
405511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(__REQ_META);
415511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CP_UMOUNT);
425511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CP_FASTBOOT);
435511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CP_SYNC);
445d799881SJaegeuk Kim TRACE_DEFINE_ENUM(CP_RECOVERY);
455511b9a4SSteven Rostedt (Red Hat) TRACE_DEFINE_ENUM(CP_DISCARD);
465511b9a4SSteven Rostedt (Red Hat) 
476ec178daSNamjae Jeon #define show_block_type(type)						\
486ec178daSNamjae Jeon 	__print_symbolic(type,						\
496ec178daSNamjae Jeon 		{ NODE,		"NODE" },				\
506ec178daSNamjae Jeon 		{ DATA,		"DATA" },				\
516ec178daSNamjae Jeon 		{ META,		"META" },				\
528ce67cb0SJaegeuk Kim 		{ META_FLUSH,	"META_FLUSH" },				\
538ce67cb0SJaegeuk Kim 		{ INMEM,	"INMEM" },				\
548ce67cb0SJaegeuk Kim 		{ INMEM_DROP,	"INMEM_DROP" },				\
558ce67cb0SJaegeuk Kim 		{ IPU,		"IN-PLACE" },				\
568ce67cb0SJaegeuk Kim 		{ OPU,		"OUT-OF-PLACE" })
576ec178daSNamjae Jeon 
58a709f4a2SJaegeuk Kim #define F2FS_BIO_MASK(t)	(t & (READA | WRITE_FLUSH_FUA))
59a709f4a2SJaegeuk Kim #define F2FS_BIO_EXTRA_MASK(t)	(t & (REQ_META | REQ_PRIO))
60a709f4a2SJaegeuk Kim 
61a709f4a2SJaegeuk Kim #define show_bio_type(type)	show_bio_base(type), show_bio_extra(type)
62a709f4a2SJaegeuk Kim 
63a709f4a2SJaegeuk Kim #define show_bio_base(type)						\
64a709f4a2SJaegeuk Kim 	__print_symbolic(F2FS_BIO_MASK(type),				\
65848753aaSNamjae Jeon 		{ READ, 		"READ" },			\
66848753aaSNamjae Jeon 		{ READA, 		"READAHEAD" },			\
67848753aaSNamjae Jeon 		{ READ_SYNC, 		"READ_SYNC" },			\
68848753aaSNamjae Jeon 		{ WRITE, 		"WRITE" },			\
69848753aaSNamjae Jeon 		{ WRITE_SYNC, 		"WRITE_SYNC" },			\
70848753aaSNamjae Jeon 		{ WRITE_FLUSH,		"WRITE_FLUSH" },		\
71d4d288bcSChao Yu 		{ WRITE_FUA, 		"WRITE_FUA" },			\
72d4d288bcSChao Yu 		{ WRITE_FLUSH_FUA,	"WRITE_FLUSH_FUA" })
73a2a4a7e4SNamjae Jeon 
74a709f4a2SJaegeuk Kim #define show_bio_extra(type)						\
75a709f4a2SJaegeuk Kim 	__print_symbolic(F2FS_BIO_EXTRA_MASK(type),			\
76a709f4a2SJaegeuk Kim 		{ REQ_META, 		"(M)" },			\
77a709f4a2SJaegeuk Kim 		{ REQ_PRIO, 		"(P)" },			\
78a709f4a2SJaegeuk Kim 		{ REQ_META | REQ_PRIO,	"(MP)" },			\
79a709f4a2SJaegeuk Kim 		{ 0, " \b" })
80a709f4a2SJaegeuk Kim 
818e46b3edSNamjae Jeon #define show_data_type(type)						\
828e46b3edSNamjae Jeon 	__print_symbolic(type,						\
838e46b3edSNamjae Jeon 		{ CURSEG_HOT_DATA, 	"Hot DATA" },			\
848e46b3edSNamjae Jeon 		{ CURSEG_WARM_DATA, 	"Warm DATA" },			\
858e46b3edSNamjae Jeon 		{ CURSEG_COLD_DATA, 	"Cold DATA" },			\
868e46b3edSNamjae Jeon 		{ CURSEG_HOT_NODE, 	"Hot NODE" },			\
878e46b3edSNamjae Jeon 		{ CURSEG_WARM_NODE, 	"Warm NODE" },			\
888e46b3edSNamjae Jeon 		{ CURSEG_COLD_NODE, 	"Cold NODE" },			\
898e46b3edSNamjae Jeon 		{ NO_CHECK_TYPE, 	"No TYPE" })
908e46b3edSNamjae Jeon 
9126c6b887SJaegeuk Kim #define show_file_type(type)						\
9226c6b887SJaegeuk Kim 	__print_symbolic(type,						\
9326c6b887SJaegeuk Kim 		{ 0,		"FILE" },				\
9426c6b887SJaegeuk Kim 		{ 1,		"DIR" })
9526c6b887SJaegeuk Kim 
968e46b3edSNamjae Jeon #define show_gc_type(type)						\
978e46b3edSNamjae Jeon 	__print_symbolic(type,						\
988e46b3edSNamjae Jeon 		{ FG_GC,	"Foreground GC" },			\
998e46b3edSNamjae Jeon 		{ BG_GC,	"Background GC" })
1008e46b3edSNamjae Jeon 
1018e46b3edSNamjae Jeon #define show_alloc_mode(type)						\
1028e46b3edSNamjae Jeon 	__print_symbolic(type,						\
1038e46b3edSNamjae Jeon 		{ LFS,	"LFS-mode" },					\
1048e46b3edSNamjae Jeon 		{ SSR,	"SSR-mode" })
1058e46b3edSNamjae Jeon 
1068e46b3edSNamjae Jeon #define show_victim_policy(type)					\
1078e46b3edSNamjae Jeon 	__print_symbolic(type,						\
1088e46b3edSNamjae Jeon 		{ GC_GREEDY,	"Greedy" },				\
1098e46b3edSNamjae Jeon 		{ GC_CB,	"Cost-Benefit" })
1108e46b3edSNamjae Jeon 
11175ab4cb8SJaegeuk Kim #define show_cpreason(type)						\
11275ab4cb8SJaegeuk Kim 	__print_symbolic(type,						\
11375ab4cb8SJaegeuk Kim 		{ CP_UMOUNT,	"Umount" },				\
114119ee914SJaegeuk Kim 		{ CP_FASTBOOT,	"Fastboot" },				\
1154b2fecc8SJaegeuk Kim 		{ CP_SYNC,	"Sync" },				\
11610027551SJaegeuk Kim 		{ CP_RECOVERY,	"Recovery" },				\
1174b2fecc8SJaegeuk Kim 		{ CP_DISCARD,	"Discard" })
11875ab4cb8SJaegeuk Kim 
1198e46b3edSNamjae Jeon struct victim_sel_policy;
120003a3e1dSJaegeuk Kim struct f2fs_map_blocks;
1218e46b3edSNamjae Jeon 
122a2a4a7e4SNamjae Jeon DECLARE_EVENT_CLASS(f2fs__inode,
123a2a4a7e4SNamjae Jeon 
124a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode),
125a2a4a7e4SNamjae Jeon 
126a2a4a7e4SNamjae Jeon 	TP_ARGS(inode),
127a2a4a7e4SNamjae Jeon 
128a2a4a7e4SNamjae Jeon 	TP_STRUCT__entry(
129a2a4a7e4SNamjae Jeon 		__field(dev_t,	dev)
130a2a4a7e4SNamjae Jeon 		__field(ino_t,	ino)
131a2a4a7e4SNamjae Jeon 		__field(ino_t,	pino)
132a2a4a7e4SNamjae Jeon 		__field(umode_t, mode)
133a2a4a7e4SNamjae Jeon 		__field(loff_t,	size)
134a2a4a7e4SNamjae Jeon 		__field(unsigned int, nlink)
135a2a4a7e4SNamjae Jeon 		__field(blkcnt_t, blocks)
136a2a4a7e4SNamjae Jeon 		__field(__u8,	advise)
137a2a4a7e4SNamjae Jeon 	),
138a2a4a7e4SNamjae Jeon 
139a2a4a7e4SNamjae Jeon 	TP_fast_assign(
140a2a4a7e4SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
141a2a4a7e4SNamjae Jeon 		__entry->ino	= inode->i_ino;
142a2a4a7e4SNamjae Jeon 		__entry->pino	= F2FS_I(inode)->i_pino;
143a2a4a7e4SNamjae Jeon 		__entry->mode	= inode->i_mode;
144a2a4a7e4SNamjae Jeon 		__entry->nlink	= inode->i_nlink;
145a2a4a7e4SNamjae Jeon 		__entry->size	= inode->i_size;
146a2a4a7e4SNamjae Jeon 		__entry->blocks	= inode->i_blocks;
147a2a4a7e4SNamjae Jeon 		__entry->advise	= F2FS_I(inode)->i_advise;
148a2a4a7e4SNamjae Jeon 	),
149a2a4a7e4SNamjae Jeon 
150a2a4a7e4SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, pino = %lu, i_mode = 0x%hx, "
151a2a4a7e4SNamjae Jeon 		"i_size = %lld, i_nlink = %u, i_blocks = %llu, i_advise = 0x%x",
152a2a4a7e4SNamjae Jeon 		show_dev_ino(__entry),
153a2a4a7e4SNamjae Jeon 		(unsigned long)__entry->pino,
154a2a4a7e4SNamjae Jeon 		__entry->mode,
155a2a4a7e4SNamjae Jeon 		__entry->size,
156a2a4a7e4SNamjae Jeon 		(unsigned int)__entry->nlink,
157a2a4a7e4SNamjae Jeon 		(unsigned long long)__entry->blocks,
158a2a4a7e4SNamjae Jeon 		(unsigned char)__entry->advise)
159a2a4a7e4SNamjae Jeon );
160a2a4a7e4SNamjae Jeon 
161a2a4a7e4SNamjae Jeon DECLARE_EVENT_CLASS(f2fs__inode_exit,
162a2a4a7e4SNamjae Jeon 
163a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
164a2a4a7e4SNamjae Jeon 
165a2a4a7e4SNamjae Jeon 	TP_ARGS(inode, ret),
166a2a4a7e4SNamjae Jeon 
167a2a4a7e4SNamjae Jeon 	TP_STRUCT__entry(
168a2a4a7e4SNamjae Jeon 		__field(dev_t,	dev)
169a2a4a7e4SNamjae Jeon 		__field(ino_t,	ino)
170a2a4a7e4SNamjae Jeon 		__field(int,	ret)
171a2a4a7e4SNamjae Jeon 	),
172a2a4a7e4SNamjae Jeon 
173a2a4a7e4SNamjae Jeon 	TP_fast_assign(
174a2a4a7e4SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
175a2a4a7e4SNamjae Jeon 		__entry->ino	= inode->i_ino;
176a2a4a7e4SNamjae Jeon 		__entry->ret	= ret;
177a2a4a7e4SNamjae Jeon 	),
178a2a4a7e4SNamjae Jeon 
179a2a4a7e4SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, ret = %d",
180a2a4a7e4SNamjae Jeon 		show_dev_ino(__entry),
181a2a4a7e4SNamjae Jeon 		__entry->ret)
182a2a4a7e4SNamjae Jeon );
183a2a4a7e4SNamjae Jeon 
184a2a4a7e4SNamjae Jeon DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
185a2a4a7e4SNamjae Jeon 
186a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode),
187a2a4a7e4SNamjae Jeon 
188a2a4a7e4SNamjae Jeon 	TP_ARGS(inode)
189a2a4a7e4SNamjae Jeon );
190a2a4a7e4SNamjae Jeon 
191a2a4a7e4SNamjae Jeon TRACE_EVENT(f2fs_sync_file_exit,
192a2a4a7e4SNamjae Jeon 
19329e7043fSJaegeuk Kim 	TP_PROTO(struct inode *inode, int need_cp, int datasync, int ret),
194a2a4a7e4SNamjae Jeon 
195a2a4a7e4SNamjae Jeon 	TP_ARGS(inode, need_cp, datasync, ret),
196a2a4a7e4SNamjae Jeon 
197a2a4a7e4SNamjae Jeon 	TP_STRUCT__entry(
198a2a4a7e4SNamjae Jeon 		__field(dev_t,	dev)
199a2a4a7e4SNamjae Jeon 		__field(ino_t,	ino)
20029e7043fSJaegeuk Kim 		__field(int,	need_cp)
201a2a4a7e4SNamjae Jeon 		__field(int,	datasync)
202a2a4a7e4SNamjae Jeon 		__field(int,	ret)
203a2a4a7e4SNamjae Jeon 	),
204a2a4a7e4SNamjae Jeon 
205a2a4a7e4SNamjae Jeon 	TP_fast_assign(
206a2a4a7e4SNamjae Jeon 		__entry->dev		= inode->i_sb->s_dev;
207a2a4a7e4SNamjae Jeon 		__entry->ino		= inode->i_ino;
208a2a4a7e4SNamjae Jeon 		__entry->need_cp	= need_cp;
209a2a4a7e4SNamjae Jeon 		__entry->datasync	= datasync;
210a2a4a7e4SNamjae Jeon 		__entry->ret		= ret;
211a2a4a7e4SNamjae Jeon 	),
212a2a4a7e4SNamjae Jeon 
213a2a4a7e4SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, checkpoint is %s, "
214a2a4a7e4SNamjae Jeon 		"datasync = %d, ret = %d",
215a2a4a7e4SNamjae Jeon 		show_dev_ino(__entry),
216a2a4a7e4SNamjae Jeon 		__entry->need_cp ? "needed" : "not needed",
217a2a4a7e4SNamjae Jeon 		__entry->datasync,
218a2a4a7e4SNamjae Jeon 		__entry->ret)
219a2a4a7e4SNamjae Jeon );
220a2a4a7e4SNamjae Jeon 
221a2a4a7e4SNamjae Jeon TRACE_EVENT(f2fs_sync_fs,
222a2a4a7e4SNamjae Jeon 
223a2a4a7e4SNamjae Jeon 	TP_PROTO(struct super_block *sb, int wait),
224a2a4a7e4SNamjae Jeon 
225a2a4a7e4SNamjae Jeon 	TP_ARGS(sb, wait),
226a2a4a7e4SNamjae Jeon 
227a2a4a7e4SNamjae Jeon 	TP_STRUCT__entry(
228a2a4a7e4SNamjae Jeon 		__field(dev_t,	dev)
22929e7043fSJaegeuk Kim 		__field(int,	dirty)
230a2a4a7e4SNamjae Jeon 		__field(int,	wait)
231a2a4a7e4SNamjae Jeon 	),
232a2a4a7e4SNamjae Jeon 
233a2a4a7e4SNamjae Jeon 	TP_fast_assign(
234a2a4a7e4SNamjae Jeon 		__entry->dev	= sb->s_dev;
235caf0047eSChao Yu 		__entry->dirty	= is_sbi_flag_set(F2FS_SB(sb), SBI_IS_DIRTY);
236a2a4a7e4SNamjae Jeon 		__entry->wait	= wait;
237a2a4a7e4SNamjae Jeon 	),
238a2a4a7e4SNamjae Jeon 
239a2a4a7e4SNamjae Jeon 	TP_printk("dev = (%d,%d), superblock is %s, wait = %d",
240a2a4a7e4SNamjae Jeon 		show_dev(__entry),
241a2a4a7e4SNamjae Jeon 		__entry->dirty ? "dirty" : "not dirty",
242a2a4a7e4SNamjae Jeon 		__entry->wait)
243a2a4a7e4SNamjae Jeon );
244a2a4a7e4SNamjae Jeon 
245a2a4a7e4SNamjae Jeon DEFINE_EVENT(f2fs__inode, f2fs_iget,
246a2a4a7e4SNamjae Jeon 
247a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode),
248a2a4a7e4SNamjae Jeon 
249a2a4a7e4SNamjae Jeon 	TP_ARGS(inode)
250a2a4a7e4SNamjae Jeon );
251a2a4a7e4SNamjae Jeon 
252a2a4a7e4SNamjae Jeon DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
253a2a4a7e4SNamjae Jeon 
254a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
255a2a4a7e4SNamjae Jeon 
256a2a4a7e4SNamjae Jeon 	TP_ARGS(inode, ret)
257a2a4a7e4SNamjae Jeon );
258a2a4a7e4SNamjae Jeon 
259a2a4a7e4SNamjae Jeon DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
260a2a4a7e4SNamjae Jeon 
261a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode),
262a2a4a7e4SNamjae Jeon 
263a2a4a7e4SNamjae Jeon 	TP_ARGS(inode)
264a2a4a7e4SNamjae Jeon );
265a2a4a7e4SNamjae Jeon 
266d70b4f53SJaegeuk Kim DEFINE_EVENT(f2fs__inode_exit, f2fs_new_inode,
267d70b4f53SJaegeuk Kim 
268d70b4f53SJaegeuk Kim 	TP_PROTO(struct inode *inode, int ret),
269d70b4f53SJaegeuk Kim 
270d70b4f53SJaegeuk Kim 	TP_ARGS(inode, ret)
271d70b4f53SJaegeuk Kim );
272d70b4f53SJaegeuk Kim 
273a2a4a7e4SNamjae Jeon TRACE_EVENT(f2fs_unlink_enter,
274a2a4a7e4SNamjae Jeon 
275a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *dir, struct dentry *dentry),
276a2a4a7e4SNamjae Jeon 
277a2a4a7e4SNamjae Jeon 	TP_ARGS(dir, dentry),
278a2a4a7e4SNamjae Jeon 
279a2a4a7e4SNamjae Jeon 	TP_STRUCT__entry(
280a2a4a7e4SNamjae Jeon 		__field(dev_t,	dev)
281a2a4a7e4SNamjae Jeon 		__field(ino_t,	ino)
282a2a4a7e4SNamjae Jeon 		__field(loff_t,	size)
283a2a4a7e4SNamjae Jeon 		__field(blkcnt_t, blocks)
284a2a4a7e4SNamjae Jeon 		__field(const char *,	name)
285a2a4a7e4SNamjae Jeon 	),
286a2a4a7e4SNamjae Jeon 
287a2a4a7e4SNamjae Jeon 	TP_fast_assign(
288a2a4a7e4SNamjae Jeon 		__entry->dev	= dir->i_sb->s_dev;
289a2a4a7e4SNamjae Jeon 		__entry->ino	= dir->i_ino;
290a2a4a7e4SNamjae Jeon 		__entry->size	= dir->i_size;
291a2a4a7e4SNamjae Jeon 		__entry->blocks	= dir->i_blocks;
292a2a4a7e4SNamjae Jeon 		__entry->name	= dentry->d_name.name;
293a2a4a7e4SNamjae Jeon 	),
294a2a4a7e4SNamjae Jeon 
295a2a4a7e4SNamjae Jeon 	TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
296a2a4a7e4SNamjae Jeon 		"i_blocks = %llu, name = %s",
297a2a4a7e4SNamjae Jeon 		show_dev_ino(__entry),
298a2a4a7e4SNamjae Jeon 		__entry->size,
299a2a4a7e4SNamjae Jeon 		(unsigned long long)__entry->blocks,
300a2a4a7e4SNamjae Jeon 		__entry->name)
301a2a4a7e4SNamjae Jeon );
302a2a4a7e4SNamjae Jeon 
303a2a4a7e4SNamjae Jeon DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
304a2a4a7e4SNamjae Jeon 
305a2a4a7e4SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
306a2a4a7e4SNamjae Jeon 
307a2a4a7e4SNamjae Jeon 	TP_ARGS(inode, ret)
308a2a4a7e4SNamjae Jeon );
30951dd6249SNamjae Jeon 
31051dd6249SNamjae Jeon DEFINE_EVENT(f2fs__inode, f2fs_truncate,
31151dd6249SNamjae Jeon 
31251dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode),
31351dd6249SNamjae Jeon 
31451dd6249SNamjae Jeon 	TP_ARGS(inode)
31551dd6249SNamjae Jeon );
31651dd6249SNamjae Jeon 
31751dd6249SNamjae Jeon TRACE_EVENT(f2fs_truncate_data_blocks_range,
31851dd6249SNamjae Jeon 
31951dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs, int free),
32051dd6249SNamjae Jeon 
32151dd6249SNamjae Jeon 	TP_ARGS(inode, nid,  ofs, free),
32251dd6249SNamjae Jeon 
32351dd6249SNamjae Jeon 	TP_STRUCT__entry(
32451dd6249SNamjae Jeon 		__field(dev_t,	dev)
32551dd6249SNamjae Jeon 		__field(ino_t,	ino)
32651dd6249SNamjae Jeon 		__field(nid_t,	nid)
32751dd6249SNamjae Jeon 		__field(unsigned int,	ofs)
32851dd6249SNamjae Jeon 		__field(int,	free)
32951dd6249SNamjae Jeon 	),
33051dd6249SNamjae Jeon 
33151dd6249SNamjae Jeon 	TP_fast_assign(
33251dd6249SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
33351dd6249SNamjae Jeon 		__entry->ino	= inode->i_ino;
33451dd6249SNamjae Jeon 		__entry->nid	= nid;
33551dd6249SNamjae Jeon 		__entry->ofs	= ofs;
33651dd6249SNamjae Jeon 		__entry->free	= free;
33751dd6249SNamjae Jeon 	),
33851dd6249SNamjae Jeon 
33951dd6249SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, offset = %u, freed = %d",
34051dd6249SNamjae Jeon 		show_dev_ino(__entry),
34151dd6249SNamjae Jeon 		(unsigned int)__entry->nid,
34251dd6249SNamjae Jeon 		__entry->ofs,
34351dd6249SNamjae Jeon 		__entry->free)
34451dd6249SNamjae Jeon );
34551dd6249SNamjae Jeon 
34651dd6249SNamjae Jeon DECLARE_EVENT_CLASS(f2fs__truncate_op,
34751dd6249SNamjae Jeon 
34851dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, u64 from),
34951dd6249SNamjae Jeon 
35051dd6249SNamjae Jeon 	TP_ARGS(inode, from),
35151dd6249SNamjae Jeon 
35251dd6249SNamjae Jeon 	TP_STRUCT__entry(
35351dd6249SNamjae Jeon 		__field(dev_t,	dev)
35451dd6249SNamjae Jeon 		__field(ino_t,	ino)
35551dd6249SNamjae Jeon 		__field(loff_t,	size)
35651dd6249SNamjae Jeon 		__field(blkcnt_t, blocks)
35751dd6249SNamjae Jeon 		__field(u64,	from)
35851dd6249SNamjae Jeon 	),
35951dd6249SNamjae Jeon 
36051dd6249SNamjae Jeon 	TP_fast_assign(
36151dd6249SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
36251dd6249SNamjae Jeon 		__entry->ino	= inode->i_ino;
36351dd6249SNamjae Jeon 		__entry->size	= inode->i_size;
36451dd6249SNamjae Jeon 		__entry->blocks	= inode->i_blocks;
36551dd6249SNamjae Jeon 		__entry->from	= from;
36651dd6249SNamjae Jeon 	),
36751dd6249SNamjae Jeon 
36851dd6249SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld, i_blocks = %llu, "
36951dd6249SNamjae Jeon 		"start file offset = %llu",
37051dd6249SNamjae Jeon 		show_dev_ino(__entry),
37151dd6249SNamjae Jeon 		__entry->size,
37251dd6249SNamjae Jeon 		(unsigned long long)__entry->blocks,
37351dd6249SNamjae Jeon 		(unsigned long long)__entry->from)
37451dd6249SNamjae Jeon );
37551dd6249SNamjae Jeon 
37651dd6249SNamjae Jeon DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_blocks_enter,
37751dd6249SNamjae Jeon 
37851dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, u64 from),
37951dd6249SNamjae Jeon 
38051dd6249SNamjae Jeon 	TP_ARGS(inode, from)
38151dd6249SNamjae Jeon );
38251dd6249SNamjae Jeon 
38351dd6249SNamjae Jeon DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_blocks_exit,
38451dd6249SNamjae Jeon 
38551dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
38651dd6249SNamjae Jeon 
38751dd6249SNamjae Jeon 	TP_ARGS(inode, ret)
38851dd6249SNamjae Jeon );
38951dd6249SNamjae Jeon 
39051dd6249SNamjae Jeon DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_inode_blocks_enter,
39151dd6249SNamjae Jeon 
39251dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, u64 from),
39351dd6249SNamjae Jeon 
39451dd6249SNamjae Jeon 	TP_ARGS(inode, from)
39551dd6249SNamjae Jeon );
39651dd6249SNamjae Jeon 
39751dd6249SNamjae Jeon DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_inode_blocks_exit,
39851dd6249SNamjae Jeon 
39951dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
40051dd6249SNamjae Jeon 
40151dd6249SNamjae Jeon 	TP_ARGS(inode, ret)
40251dd6249SNamjae Jeon );
40351dd6249SNamjae Jeon 
40451dd6249SNamjae Jeon DECLARE_EVENT_CLASS(f2fs__truncate_node,
40551dd6249SNamjae Jeon 
40651dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
40751dd6249SNamjae Jeon 
40851dd6249SNamjae Jeon 	TP_ARGS(inode, nid, blk_addr),
40951dd6249SNamjae Jeon 
41051dd6249SNamjae Jeon 	TP_STRUCT__entry(
41151dd6249SNamjae Jeon 		__field(dev_t,	dev)
41251dd6249SNamjae Jeon 		__field(ino_t,	ino)
41351dd6249SNamjae Jeon 		__field(nid_t,	nid)
41451dd6249SNamjae Jeon 		__field(block_t,	blk_addr)
41551dd6249SNamjae Jeon 	),
41651dd6249SNamjae Jeon 
41751dd6249SNamjae Jeon 	TP_fast_assign(
41851dd6249SNamjae Jeon 		__entry->dev		= inode->i_sb->s_dev;
41951dd6249SNamjae Jeon 		__entry->ino		= inode->i_ino;
42051dd6249SNamjae Jeon 		__entry->nid		= nid;
42151dd6249SNamjae Jeon 		__entry->blk_addr	= blk_addr;
42251dd6249SNamjae Jeon 	),
42351dd6249SNamjae Jeon 
42451dd6249SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, block_address = 0x%llx",
42551dd6249SNamjae Jeon 		show_dev_ino(__entry),
42651dd6249SNamjae Jeon 		(unsigned int)__entry->nid,
42751dd6249SNamjae Jeon 		(unsigned long long)__entry->blk_addr)
42851dd6249SNamjae Jeon );
42951dd6249SNamjae Jeon 
43051dd6249SNamjae Jeon DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_nodes_enter,
43151dd6249SNamjae Jeon 
43251dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
43351dd6249SNamjae Jeon 
43451dd6249SNamjae Jeon 	TP_ARGS(inode, nid, blk_addr)
43551dd6249SNamjae Jeon );
43651dd6249SNamjae Jeon 
43751dd6249SNamjae Jeon DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_nodes_exit,
43851dd6249SNamjae Jeon 
43951dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, int ret),
44051dd6249SNamjae Jeon 
44151dd6249SNamjae Jeon 	TP_ARGS(inode, ret)
44251dd6249SNamjae Jeon );
44351dd6249SNamjae Jeon 
44451dd6249SNamjae Jeon DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_node,
44551dd6249SNamjae Jeon 
44651dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
44751dd6249SNamjae Jeon 
44851dd6249SNamjae Jeon 	TP_ARGS(inode, nid, blk_addr)
44951dd6249SNamjae Jeon );
45051dd6249SNamjae Jeon 
45151dd6249SNamjae Jeon TRACE_EVENT(f2fs_truncate_partial_nodes,
45251dd6249SNamjae Jeon 
45351dd6249SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid[], int depth, int err),
45451dd6249SNamjae Jeon 
45551dd6249SNamjae Jeon 	TP_ARGS(inode, nid, depth, err),
45651dd6249SNamjae Jeon 
45751dd6249SNamjae Jeon 	TP_STRUCT__entry(
45851dd6249SNamjae Jeon 		__field(dev_t,	dev)
45951dd6249SNamjae Jeon 		__field(ino_t,	ino)
46051dd6249SNamjae Jeon 		__field(nid_t,	nid[3])
46151dd6249SNamjae Jeon 		__field(int,	depth)
46251dd6249SNamjae Jeon 		__field(int,	err)
46351dd6249SNamjae Jeon 	),
46451dd6249SNamjae Jeon 
46551dd6249SNamjae Jeon 	TP_fast_assign(
46651dd6249SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
46751dd6249SNamjae Jeon 		__entry->ino	= inode->i_ino;
46851dd6249SNamjae Jeon 		__entry->nid[0]	= nid[0];
46951dd6249SNamjae Jeon 		__entry->nid[1]	= nid[1];
47051dd6249SNamjae Jeon 		__entry->nid[2]	= nid[2];
47151dd6249SNamjae Jeon 		__entry->depth	= depth;
47251dd6249SNamjae Jeon 		__entry->err	= err;
47351dd6249SNamjae Jeon 	),
47451dd6249SNamjae Jeon 
47551dd6249SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, "
47651dd6249SNamjae Jeon 		"nid[0] = %u, nid[1] = %u, nid[2] = %u, depth = %d, err = %d",
47751dd6249SNamjae Jeon 		show_dev_ino(__entry),
47851dd6249SNamjae Jeon 		(unsigned int)__entry->nid[0],
47951dd6249SNamjae Jeon 		(unsigned int)__entry->nid[1],
48051dd6249SNamjae Jeon 		(unsigned int)__entry->nid[2],
48151dd6249SNamjae Jeon 		__entry->depth,
48251dd6249SNamjae Jeon 		__entry->err)
48351dd6249SNamjae Jeon );
48451dd6249SNamjae Jeon 
485003a3e1dSJaegeuk Kim TRACE_EVENT(f2fs_map_blocks,
486003a3e1dSJaegeuk Kim 	TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int ret),
487848753aaSNamjae Jeon 
488003a3e1dSJaegeuk Kim 	TP_ARGS(inode, map, ret),
489848753aaSNamjae Jeon 
490848753aaSNamjae Jeon 	TP_STRUCT__entry(
491848753aaSNamjae Jeon 		__field(dev_t,	dev)
492848753aaSNamjae Jeon 		__field(ino_t,	ino)
493003a3e1dSJaegeuk Kim 		__field(block_t,	m_lblk)
494003a3e1dSJaegeuk Kim 		__field(block_t,	m_pblk)
495003a3e1dSJaegeuk Kim 		__field(unsigned int,	m_len)
496848753aaSNamjae Jeon 		__field(int,	ret)
497848753aaSNamjae Jeon 	),
498848753aaSNamjae Jeon 
499848753aaSNamjae Jeon 	TP_fast_assign(
500848753aaSNamjae Jeon 		__entry->dev		= inode->i_sb->s_dev;
501848753aaSNamjae Jeon 		__entry->ino		= inode->i_ino;
502003a3e1dSJaegeuk Kim 		__entry->m_lblk		= map->m_lblk;
503003a3e1dSJaegeuk Kim 		__entry->m_pblk		= map->m_pblk;
504003a3e1dSJaegeuk Kim 		__entry->m_len		= map->m_len;
505848753aaSNamjae Jeon 		__entry->ret		= ret;
506848753aaSNamjae Jeon 	),
507848753aaSNamjae Jeon 
508848753aaSNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, file offset = %llu, "
509003a3e1dSJaegeuk Kim 		"start blkaddr = 0x%llx, len = 0x%llx, err = %d",
510848753aaSNamjae Jeon 		show_dev_ino(__entry),
511003a3e1dSJaegeuk Kim 		(unsigned long long)__entry->m_lblk,
512003a3e1dSJaegeuk Kim 		(unsigned long long)__entry->m_pblk,
513003a3e1dSJaegeuk Kim 		(unsigned long long)__entry->m_len,
514848753aaSNamjae Jeon 		__entry->ret)
515848753aaSNamjae Jeon );
516848753aaSNamjae Jeon 
5175c267434SJaegeuk Kim TRACE_EVENT(f2fs_background_gc,
5185c267434SJaegeuk Kim 
5195c267434SJaegeuk Kim 	TP_PROTO(struct super_block *sb, long wait_ms,
5205c267434SJaegeuk Kim 			unsigned int prefree, unsigned int free),
5215c267434SJaegeuk Kim 
5225c267434SJaegeuk Kim 	TP_ARGS(sb, wait_ms, prefree, free),
5235c267434SJaegeuk Kim 
5245c267434SJaegeuk Kim 	TP_STRUCT__entry(
5255c267434SJaegeuk Kim 		__field(dev_t,	dev)
5265c267434SJaegeuk Kim 		__field(long,	wait_ms)
5275c267434SJaegeuk Kim 		__field(unsigned int,	prefree)
5285c267434SJaegeuk Kim 		__field(unsigned int,	free)
5295c267434SJaegeuk Kim 	),
5305c267434SJaegeuk Kim 
5315c267434SJaegeuk Kim 	TP_fast_assign(
5325c267434SJaegeuk Kim 		__entry->dev		= sb->s_dev;
5335c267434SJaegeuk Kim 		__entry->wait_ms	= wait_ms;
5345c267434SJaegeuk Kim 		__entry->prefree	= prefree;
5355c267434SJaegeuk Kim 		__entry->free		= free;
5365c267434SJaegeuk Kim 	),
5375c267434SJaegeuk Kim 
5385c267434SJaegeuk Kim 	TP_printk("dev = (%d,%d), wait_ms = %ld, prefree = %u, free = %u",
5395c267434SJaegeuk Kim 		show_dev(__entry),
5405c267434SJaegeuk Kim 		__entry->wait_ms,
5415c267434SJaegeuk Kim 		__entry->prefree,
5425c267434SJaegeuk Kim 		__entry->free)
5435c267434SJaegeuk Kim );
5445c267434SJaegeuk Kim 
5458e46b3edSNamjae Jeon TRACE_EVENT(f2fs_get_victim,
5468e46b3edSNamjae Jeon 
5478e46b3edSNamjae Jeon 	TP_PROTO(struct super_block *sb, int type, int gc_type,
5488e46b3edSNamjae Jeon 			struct victim_sel_policy *p, unsigned int pre_victim,
5498e46b3edSNamjae Jeon 			unsigned int prefree, unsigned int free),
5508e46b3edSNamjae Jeon 
5518e46b3edSNamjae Jeon 	TP_ARGS(sb, type, gc_type, p, pre_victim, prefree, free),
5528e46b3edSNamjae Jeon 
5538e46b3edSNamjae Jeon 	TP_STRUCT__entry(
5548e46b3edSNamjae Jeon 		__field(dev_t,	dev)
5558e46b3edSNamjae Jeon 		__field(int,	type)
5568e46b3edSNamjae Jeon 		__field(int,	gc_type)
5578e46b3edSNamjae Jeon 		__field(int,	alloc_mode)
5588e46b3edSNamjae Jeon 		__field(int,	gc_mode)
5598e46b3edSNamjae Jeon 		__field(unsigned int,	victim)
5608e46b3edSNamjae Jeon 		__field(unsigned int,	ofs_unit)
5618e46b3edSNamjae Jeon 		__field(unsigned int,	pre_victim)
5628e46b3edSNamjae Jeon 		__field(unsigned int,	prefree)
5638e46b3edSNamjae Jeon 		__field(unsigned int,	free)
5648e46b3edSNamjae Jeon 	),
5658e46b3edSNamjae Jeon 
5668e46b3edSNamjae Jeon 	TP_fast_assign(
5678e46b3edSNamjae Jeon 		__entry->dev		= sb->s_dev;
5688e46b3edSNamjae Jeon 		__entry->type		= type;
5698e46b3edSNamjae Jeon 		__entry->gc_type	= gc_type;
5708e46b3edSNamjae Jeon 		__entry->alloc_mode	= p->alloc_mode;
5718e46b3edSNamjae Jeon 		__entry->gc_mode	= p->gc_mode;
5728e46b3edSNamjae Jeon 		__entry->victim		= p->min_segno;
5738e46b3edSNamjae Jeon 		__entry->ofs_unit	= p->ofs_unit;
5748e46b3edSNamjae Jeon 		__entry->pre_victim	= pre_victim;
5758e46b3edSNamjae Jeon 		__entry->prefree	= prefree;
5768e46b3edSNamjae Jeon 		__entry->free		= free;
5778e46b3edSNamjae Jeon 	),
5788e46b3edSNamjae Jeon 
5798e46b3edSNamjae Jeon 	TP_printk("dev = (%d,%d), type = %s, policy = (%s, %s, %s), victim = %u "
5808e46b3edSNamjae Jeon 		"ofs_unit = %u, pre_victim_secno = %d, prefree = %u, free = %u",
5818e46b3edSNamjae Jeon 		show_dev(__entry),
5828e46b3edSNamjae Jeon 		show_data_type(__entry->type),
5838e46b3edSNamjae Jeon 		show_gc_type(__entry->gc_type),
5848e46b3edSNamjae Jeon 		show_alloc_mode(__entry->alloc_mode),
5858e46b3edSNamjae Jeon 		show_victim_policy(__entry->gc_mode),
5868e46b3edSNamjae Jeon 		__entry->victim,
5878e46b3edSNamjae Jeon 		__entry->ofs_unit,
5888e46b3edSNamjae Jeon 		(int)__entry->pre_victim,
5898e46b3edSNamjae Jeon 		__entry->prefree,
5908e46b3edSNamjae Jeon 		__entry->free)
5918e46b3edSNamjae Jeon );
5928e46b3edSNamjae Jeon 
593c01e2853SNamjae Jeon TRACE_EVENT(f2fs_fallocate,
594c01e2853SNamjae Jeon 
595c01e2853SNamjae Jeon 	TP_PROTO(struct inode *inode, int mode,
596c01e2853SNamjae Jeon 				loff_t offset, loff_t len, int ret),
597c01e2853SNamjae Jeon 
598c01e2853SNamjae Jeon 	TP_ARGS(inode, mode, offset, len, ret),
599c01e2853SNamjae Jeon 
600c01e2853SNamjae Jeon 	TP_STRUCT__entry(
601c01e2853SNamjae Jeon 		__field(dev_t,	dev)
602c01e2853SNamjae Jeon 		__field(ino_t,	ino)
603c01e2853SNamjae Jeon 		__field(int,	mode)
604c01e2853SNamjae Jeon 		__field(loff_t,	offset)
605c01e2853SNamjae Jeon 		__field(loff_t,	len)
606c01e2853SNamjae Jeon 		__field(loff_t, size)
607c01e2853SNamjae Jeon 		__field(blkcnt_t, blocks)
608c01e2853SNamjae Jeon 		__field(int,	ret)
609c01e2853SNamjae Jeon 	),
610c01e2853SNamjae Jeon 
611c01e2853SNamjae Jeon 	TP_fast_assign(
612c01e2853SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
613c01e2853SNamjae Jeon 		__entry->ino	= inode->i_ino;
614c01e2853SNamjae Jeon 		__entry->mode	= mode;
615c01e2853SNamjae Jeon 		__entry->offset	= offset;
616c01e2853SNamjae Jeon 		__entry->len	= len;
617c01e2853SNamjae Jeon 		__entry->size	= inode->i_size;
618c01e2853SNamjae Jeon 		__entry->blocks = inode->i_blocks;
619c01e2853SNamjae Jeon 		__entry->ret	= ret;
620c01e2853SNamjae Jeon 	),
621c01e2853SNamjae Jeon 
622c01e2853SNamjae Jeon 	TP_printk("dev = (%d,%d), ino = %lu, mode = %x, offset = %lld, "
623c01e2853SNamjae Jeon 		"len = %lld,  i_size = %lld, i_blocks = %llu, ret = %d",
624c01e2853SNamjae Jeon 		show_dev_ino(__entry),
625c01e2853SNamjae Jeon 		__entry->mode,
626c01e2853SNamjae Jeon 		(unsigned long long)__entry->offset,
627c01e2853SNamjae Jeon 		(unsigned long long)__entry->len,
628c01e2853SNamjae Jeon 		(unsigned long long)__entry->size,
629c01e2853SNamjae Jeon 		(unsigned long long)__entry->blocks,
630c01e2853SNamjae Jeon 		__entry->ret)
631c01e2853SNamjae Jeon );
632c01e2853SNamjae Jeon 
63370407fadSChao Yu TRACE_EVENT(f2fs_direct_IO_enter,
63470407fadSChao Yu 
63570407fadSChao Yu 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
63670407fadSChao Yu 
63770407fadSChao Yu 	TP_ARGS(inode, offset, len, rw),
63870407fadSChao Yu 
63970407fadSChao Yu 	TP_STRUCT__entry(
64070407fadSChao Yu 		__field(dev_t,	dev)
64170407fadSChao Yu 		__field(ino_t,	ino)
64270407fadSChao Yu 		__field(loff_t,	pos)
64370407fadSChao Yu 		__field(unsigned long,	len)
64470407fadSChao Yu 		__field(int,	rw)
64570407fadSChao Yu 	),
64670407fadSChao Yu 
64770407fadSChao Yu 	TP_fast_assign(
64870407fadSChao Yu 		__entry->dev	= inode->i_sb->s_dev;
64970407fadSChao Yu 		__entry->ino	= inode->i_ino;
65070407fadSChao Yu 		__entry->pos	= offset;
65170407fadSChao Yu 		__entry->len	= len;
65270407fadSChao Yu 		__entry->rw	= rw;
65370407fadSChao Yu 	),
65470407fadSChao Yu 
65570407fadSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu rw = %d",
65670407fadSChao Yu 		show_dev_ino(__entry),
65770407fadSChao Yu 		__entry->pos,
65870407fadSChao Yu 		__entry->len,
65970407fadSChao Yu 		__entry->rw)
66070407fadSChao Yu );
66170407fadSChao Yu 
66270407fadSChao Yu TRACE_EVENT(f2fs_direct_IO_exit,
66370407fadSChao Yu 
66470407fadSChao Yu 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
66570407fadSChao Yu 		 int rw, int ret),
66670407fadSChao Yu 
66770407fadSChao Yu 	TP_ARGS(inode, offset, len, rw, ret),
66870407fadSChao Yu 
66970407fadSChao Yu 	TP_STRUCT__entry(
67070407fadSChao Yu 		__field(dev_t,	dev)
67170407fadSChao Yu 		__field(ino_t,	ino)
67270407fadSChao Yu 		__field(loff_t,	pos)
67370407fadSChao Yu 		__field(unsigned long,	len)
67470407fadSChao Yu 		__field(int,	rw)
67570407fadSChao Yu 		__field(int,	ret)
67670407fadSChao Yu 	),
67770407fadSChao Yu 
67870407fadSChao Yu 	TP_fast_assign(
67970407fadSChao Yu 		__entry->dev	= inode->i_sb->s_dev;
68070407fadSChao Yu 		__entry->ino	= inode->i_ino;
68170407fadSChao Yu 		__entry->pos	= offset;
68270407fadSChao Yu 		__entry->len	= len;
68370407fadSChao Yu 		__entry->rw	= rw;
68470407fadSChao Yu 		__entry->ret	= ret;
68570407fadSChao Yu 	),
68670407fadSChao Yu 
68770407fadSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu "
68870407fadSChao Yu 		"rw = %d ret = %d",
68970407fadSChao Yu 		show_dev_ino(__entry),
69070407fadSChao Yu 		__entry->pos,
69170407fadSChao Yu 		__entry->len,
69270407fadSChao Yu 		__entry->rw,
69370407fadSChao Yu 		__entry->ret)
69470407fadSChao Yu );
69570407fadSChao Yu 
696c01e2853SNamjae Jeon TRACE_EVENT(f2fs_reserve_new_block,
697c01e2853SNamjae Jeon 
698c01e2853SNamjae Jeon 	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs_in_node),
699c01e2853SNamjae Jeon 
700c01e2853SNamjae Jeon 	TP_ARGS(inode, nid, ofs_in_node),
701c01e2853SNamjae Jeon 
702c01e2853SNamjae Jeon 	TP_STRUCT__entry(
703c01e2853SNamjae Jeon 		__field(dev_t,	dev)
704c01e2853SNamjae Jeon 		__field(nid_t, nid)
705c01e2853SNamjae Jeon 		__field(unsigned int, ofs_in_node)
706c01e2853SNamjae Jeon 	),
707c01e2853SNamjae Jeon 
708c01e2853SNamjae Jeon 	TP_fast_assign(
709c01e2853SNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
710c01e2853SNamjae Jeon 		__entry->nid	= nid;
711c01e2853SNamjae Jeon 		__entry->ofs_in_node = ofs_in_node;
712c01e2853SNamjae Jeon 	),
713c01e2853SNamjae Jeon 
714c01e2853SNamjae Jeon 	TP_printk("dev = (%d,%d), nid = %u, ofs_in_node = %u",
715c01e2853SNamjae Jeon 		show_dev(__entry),
716c01e2853SNamjae Jeon 		(unsigned int)__entry->nid,
717c01e2853SNamjae Jeon 		__entry->ofs_in_node)
718c01e2853SNamjae Jeon );
719c01e2853SNamjae Jeon 
7203e1c8f12SChao Yu DECLARE_EVENT_CLASS(f2fs__submit_page_bio,
7213e1c8f12SChao Yu 
7222ace38e0SChao Yu 	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
7233e1c8f12SChao Yu 
7242ace38e0SChao Yu 	TP_ARGS(page, fio),
7253e1c8f12SChao Yu 
7263e1c8f12SChao Yu 	TP_STRUCT__entry(
7273e1c8f12SChao Yu 		__field(dev_t, dev)
7283e1c8f12SChao Yu 		__field(ino_t, ino)
7293e1c8f12SChao Yu 		__field(pgoff_t, index)
7303e1c8f12SChao Yu 		__field(block_t, blkaddr)
7313e1c8f12SChao Yu 		__field(int, rw)
7323e1c8f12SChao Yu 		__field(int, type)
7333e1c8f12SChao Yu 	),
7343e1c8f12SChao Yu 
7353e1c8f12SChao Yu 	TP_fast_assign(
7363e1c8f12SChao Yu 		__entry->dev		= page->mapping->host->i_sb->s_dev;
7373e1c8f12SChao Yu 		__entry->ino		= page->mapping->host->i_ino;
7383e1c8f12SChao Yu 		__entry->index		= page->index;
7392ace38e0SChao Yu 		__entry->blkaddr	= fio->blk_addr;
7402ace38e0SChao Yu 		__entry->rw		= fio->rw;
7412ace38e0SChao Yu 		__entry->type		= fio->type;
7423e1c8f12SChao Yu 	),
7433e1c8f12SChao Yu 
7443e1c8f12SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, page_index = 0x%lx, "
7453e1c8f12SChao Yu 		"blkaddr = 0x%llx, rw = %s%s, type = %s",
7463e1c8f12SChao Yu 		show_dev_ino(__entry),
7473e1c8f12SChao Yu 		(unsigned long)__entry->index,
7483e1c8f12SChao Yu 		(unsigned long long)__entry->blkaddr,
7493e1c8f12SChao Yu 		show_bio_type(__entry->rw),
7503e1c8f12SChao Yu 		show_block_type(__entry->type))
7513e1c8f12SChao Yu );
7523e1c8f12SChao Yu 
7533e1c8f12SChao Yu DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_bio,
7543e1c8f12SChao Yu 
7552ace38e0SChao Yu 	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
7563e1c8f12SChao Yu 
7572ace38e0SChao Yu 	TP_ARGS(page, fio),
7583e1c8f12SChao Yu 
7593e1c8f12SChao Yu 	TP_CONDITION(page->mapping)
7603e1c8f12SChao Yu );
7613e1c8f12SChao Yu 
7623e1c8f12SChao Yu DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_mbio,
7633e1c8f12SChao Yu 
7642ace38e0SChao Yu 	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
7653e1c8f12SChao Yu 
7662ace38e0SChao Yu 	TP_ARGS(page, fio),
7673e1c8f12SChao Yu 
7683e1c8f12SChao Yu 	TP_CONDITION(page->mapping)
7693e1c8f12SChao Yu );
7703e1c8f12SChao Yu 
771d4d288bcSChao Yu DECLARE_EVENT_CLASS(f2fs__submit_bio,
7726ec178daSNamjae Jeon 
7732ace38e0SChao Yu 	TP_PROTO(struct super_block *sb, struct f2fs_io_info *fio,
7742ace38e0SChao Yu 						struct bio *bio),
7756ec178daSNamjae Jeon 
7762ace38e0SChao Yu 	TP_ARGS(sb, fio, bio),
7776ec178daSNamjae Jeon 
7786ec178daSNamjae Jeon 	TP_STRUCT__entry(
7796ec178daSNamjae Jeon 		__field(dev_t,	dev)
780d4d288bcSChao Yu 		__field(int,	rw)
781d4d288bcSChao Yu 		__field(int,	type)
7826ec178daSNamjae Jeon 		__field(sector_t,	sector)
7836ec178daSNamjae Jeon 		__field(unsigned int,	size)
7846ec178daSNamjae Jeon 	),
7856ec178daSNamjae Jeon 
7866ec178daSNamjae Jeon 	TP_fast_assign(
7876ec178daSNamjae Jeon 		__entry->dev		= sb->s_dev;
7882ace38e0SChao Yu 		__entry->rw		= fio->rw;
7892ace38e0SChao Yu 		__entry->type		= fio->type;
7904f024f37SKent Overstreet 		__entry->sector		= bio->bi_iter.bi_sector;
7914f024f37SKent Overstreet 		__entry->size		= bio->bi_iter.bi_size;
7926ec178daSNamjae Jeon 	),
7936ec178daSNamjae Jeon 
794a709f4a2SJaegeuk Kim 	TP_printk("dev = (%d,%d), %s%s, %s, sector = %lld, size = %u",
7956ec178daSNamjae Jeon 		show_dev(__entry),
796d4d288bcSChao Yu 		show_bio_type(__entry->rw),
797d4d288bcSChao Yu 		show_block_type(__entry->type),
7986ec178daSNamjae Jeon 		(unsigned long long)__entry->sector,
7996ec178daSNamjae Jeon 		__entry->size)
8006ec178daSNamjae Jeon );
8016ec178daSNamjae Jeon 
80293dfe2acSJaegeuk Kim DEFINE_EVENT_CONDITION(f2fs__submit_bio, f2fs_submit_write_bio,
803d4d288bcSChao Yu 
8042ace38e0SChao Yu 	TP_PROTO(struct super_block *sb, struct f2fs_io_info *fio,
8052ace38e0SChao Yu 							struct bio *bio),
806d4d288bcSChao Yu 
8072ace38e0SChao Yu 	TP_ARGS(sb, fio, bio),
80893dfe2acSJaegeuk Kim 
80993dfe2acSJaegeuk Kim 	TP_CONDITION(bio)
810d4d288bcSChao Yu );
811d4d288bcSChao Yu 
81293dfe2acSJaegeuk Kim DEFINE_EVENT_CONDITION(f2fs__submit_bio, f2fs_submit_read_bio,
813d4d288bcSChao Yu 
8142ace38e0SChao Yu 	TP_PROTO(struct super_block *sb, struct f2fs_io_info *fio,
8152ace38e0SChao Yu 							struct bio *bio),
816d4d288bcSChao Yu 
8172ace38e0SChao Yu 	TP_ARGS(sb, fio, bio),
81893dfe2acSJaegeuk Kim 
81993dfe2acSJaegeuk Kim 	TP_CONDITION(bio)
820d4d288bcSChao Yu );
821d4d288bcSChao Yu 
82262aed044SChao Yu TRACE_EVENT(f2fs_write_begin,
82362aed044SChao Yu 
82462aed044SChao Yu 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
82562aed044SChao Yu 				unsigned int flags),
82662aed044SChao Yu 
82762aed044SChao Yu 	TP_ARGS(inode, pos, len, flags),
82862aed044SChao Yu 
82962aed044SChao Yu 	TP_STRUCT__entry(
83062aed044SChao Yu 		__field(dev_t,	dev)
83162aed044SChao Yu 		__field(ino_t,	ino)
83262aed044SChao Yu 		__field(loff_t,	pos)
83362aed044SChao Yu 		__field(unsigned int, len)
83462aed044SChao Yu 		__field(unsigned int, flags)
83562aed044SChao Yu 	),
83662aed044SChao Yu 
83762aed044SChao Yu 	TP_fast_assign(
83862aed044SChao Yu 		__entry->dev	= inode->i_sb->s_dev;
83962aed044SChao Yu 		__entry->ino	= inode->i_ino;
84062aed044SChao Yu 		__entry->pos	= pos;
84162aed044SChao Yu 		__entry->len	= len;
84262aed044SChao Yu 		__entry->flags	= flags;
84362aed044SChao Yu 	),
84462aed044SChao Yu 
84562aed044SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u, flags = %u",
84662aed044SChao Yu 		show_dev_ino(__entry),
84762aed044SChao Yu 		(unsigned long long)__entry->pos,
84862aed044SChao Yu 		__entry->len,
84962aed044SChao Yu 		__entry->flags)
85062aed044SChao Yu );
85162aed044SChao Yu 
852dfb2bf38SChao Yu TRACE_EVENT(f2fs_write_end,
853dfb2bf38SChao Yu 
854dfb2bf38SChao Yu 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
855dfb2bf38SChao Yu 				unsigned int copied),
856dfb2bf38SChao Yu 
857dfb2bf38SChao Yu 	TP_ARGS(inode, pos, len, copied),
858dfb2bf38SChao Yu 
859dfb2bf38SChao Yu 	TP_STRUCT__entry(
860dfb2bf38SChao Yu 		__field(dev_t,	dev)
861dfb2bf38SChao Yu 		__field(ino_t,	ino)
862dfb2bf38SChao Yu 		__field(loff_t,	pos)
863dfb2bf38SChao Yu 		__field(unsigned int, len)
864dfb2bf38SChao Yu 		__field(unsigned int, copied)
865dfb2bf38SChao Yu 	),
866dfb2bf38SChao Yu 
867dfb2bf38SChao Yu 	TP_fast_assign(
868dfb2bf38SChao Yu 		__entry->dev	= inode->i_sb->s_dev;
869dfb2bf38SChao Yu 		__entry->ino	= inode->i_ino;
870dfb2bf38SChao Yu 		__entry->pos	= pos;
871dfb2bf38SChao Yu 		__entry->len	= len;
872dfb2bf38SChao Yu 		__entry->copied	= copied;
873dfb2bf38SChao Yu 	),
874dfb2bf38SChao Yu 
875dfb2bf38SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u, copied = %u",
876dfb2bf38SChao Yu 		show_dev_ino(__entry),
877dfb2bf38SChao Yu 		(unsigned long long)__entry->pos,
878dfb2bf38SChao Yu 		__entry->len,
879dfb2bf38SChao Yu 		__entry->copied)
880dfb2bf38SChao Yu );
881dfb2bf38SChao Yu 
88226c6b887SJaegeuk Kim DECLARE_EVENT_CLASS(f2fs__page,
88326c6b887SJaegeuk Kim 
88426c6b887SJaegeuk Kim 	TP_PROTO(struct page *page, int type),
88526c6b887SJaegeuk Kim 
88626c6b887SJaegeuk Kim 	TP_ARGS(page, type),
88726c6b887SJaegeuk Kim 
88826c6b887SJaegeuk Kim 	TP_STRUCT__entry(
88926c6b887SJaegeuk Kim 		__field(dev_t,	dev)
89026c6b887SJaegeuk Kim 		__field(ino_t,	ino)
89126c6b887SJaegeuk Kim 		__field(int, type)
89226c6b887SJaegeuk Kim 		__field(int, dir)
89326c6b887SJaegeuk Kim 		__field(pgoff_t, index)
89426c6b887SJaegeuk Kim 		__field(int, dirty)
895c20e89cdSChao Yu 		__field(int, uptodate)
89626c6b887SJaegeuk Kim 	),
89726c6b887SJaegeuk Kim 
89826c6b887SJaegeuk Kim 	TP_fast_assign(
89926c6b887SJaegeuk Kim 		__entry->dev	= page->mapping->host->i_sb->s_dev;
90026c6b887SJaegeuk Kim 		__entry->ino	= page->mapping->host->i_ino;
90126c6b887SJaegeuk Kim 		__entry->type	= type;
90226c6b887SJaegeuk Kim 		__entry->dir	= S_ISDIR(page->mapping->host->i_mode);
90326c6b887SJaegeuk Kim 		__entry->index	= page->index;
90426c6b887SJaegeuk Kim 		__entry->dirty	= PageDirty(page);
905c20e89cdSChao Yu 		__entry->uptodate = PageUptodate(page);
90626c6b887SJaegeuk Kim 	),
90726c6b887SJaegeuk Kim 
908c20e89cdSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, index = %lu, "
909c20e89cdSChao Yu 		"dirty = %d, uptodate = %d",
91026c6b887SJaegeuk Kim 		show_dev_ino(__entry),
91126c6b887SJaegeuk Kim 		show_block_type(__entry->type),
91226c6b887SJaegeuk Kim 		show_file_type(__entry->dir),
91326c6b887SJaegeuk Kim 		(unsigned long)__entry->index,
914c20e89cdSChao Yu 		__entry->dirty,
915c20e89cdSChao Yu 		__entry->uptodate)
91626c6b887SJaegeuk Kim );
91726c6b887SJaegeuk Kim 
918ecda0de3SChao Yu DEFINE_EVENT(f2fs__page, f2fs_writepage,
919ecda0de3SChao Yu 
920ecda0de3SChao Yu 	TP_PROTO(struct page *page, int type),
921ecda0de3SChao Yu 
922ecda0de3SChao Yu 	TP_ARGS(page, type)
923ecda0de3SChao Yu );
924ecda0de3SChao Yu 
9258ce67cb0SJaegeuk Kim DEFINE_EVENT(f2fs__page, f2fs_do_write_data_page,
9268ce67cb0SJaegeuk Kim 
9278ce67cb0SJaegeuk Kim 	TP_PROTO(struct page *page, int type),
9288ce67cb0SJaegeuk Kim 
9298ce67cb0SJaegeuk Kim 	TP_ARGS(page, type)
9308ce67cb0SJaegeuk Kim );
9318ce67cb0SJaegeuk Kim 
932c20e89cdSChao Yu DEFINE_EVENT(f2fs__page, f2fs_readpage,
933c20e89cdSChao Yu 
934c20e89cdSChao Yu 	TP_PROTO(struct page *page, int type),
935c20e89cdSChao Yu 
936c20e89cdSChao Yu 	TP_ARGS(page, type)
937c20e89cdSChao Yu );
938c20e89cdSChao Yu 
93926c6b887SJaegeuk Kim DEFINE_EVENT(f2fs__page, f2fs_set_page_dirty,
94026c6b887SJaegeuk Kim 
94126c6b887SJaegeuk Kim 	TP_PROTO(struct page *page, int type),
94226c6b887SJaegeuk Kim 
94326c6b887SJaegeuk Kim 	TP_ARGS(page, type)
94426c6b887SJaegeuk Kim );
94526c6b887SJaegeuk Kim 
946e943a10dSJaegeuk Kim DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite,
947e943a10dSJaegeuk Kim 
948e943a10dSJaegeuk Kim 	TP_PROTO(struct page *page, int type),
949e943a10dSJaegeuk Kim 
950e943a10dSJaegeuk Kim 	TP_ARGS(page, type)
951e943a10dSJaegeuk Kim );
952e943a10dSJaegeuk Kim 
9538ce67cb0SJaegeuk Kim DEFINE_EVENT(f2fs__page, f2fs_register_inmem_page,
9548ce67cb0SJaegeuk Kim 
9558ce67cb0SJaegeuk Kim 	TP_PROTO(struct page *page, int type),
9568ce67cb0SJaegeuk Kim 
9578ce67cb0SJaegeuk Kim 	TP_ARGS(page, type)
9588ce67cb0SJaegeuk Kim );
9598ce67cb0SJaegeuk Kim 
9608ce67cb0SJaegeuk Kim DEFINE_EVENT(f2fs__page, f2fs_commit_inmem_page,
9618ce67cb0SJaegeuk Kim 
9628ce67cb0SJaegeuk Kim 	TP_PROTO(struct page *page, int type),
9638ce67cb0SJaegeuk Kim 
9648ce67cb0SJaegeuk Kim 	TP_ARGS(page, type)
9658ce67cb0SJaegeuk Kim );
9668ce67cb0SJaegeuk Kim 
967e5748434SChao Yu TRACE_EVENT(f2fs_writepages,
968e5748434SChao Yu 
969e5748434SChao Yu 	TP_PROTO(struct inode *inode, struct writeback_control *wbc, int type),
970e5748434SChao Yu 
971e5748434SChao Yu 	TP_ARGS(inode, wbc, type),
972e5748434SChao Yu 
973e5748434SChao Yu 	TP_STRUCT__entry(
974e5748434SChao Yu 		__field(dev_t,	dev)
975e5748434SChao Yu 		__field(ino_t,	ino)
976e5748434SChao Yu 		__field(int,	type)
977e5748434SChao Yu 		__field(int,	dir)
978e5748434SChao Yu 		__field(long,	nr_to_write)
979e5748434SChao Yu 		__field(long,	pages_skipped)
980e5748434SChao Yu 		__field(loff_t,	range_start)
981e5748434SChao Yu 		__field(loff_t,	range_end)
982e5748434SChao Yu 		__field(pgoff_t, writeback_index)
983e5748434SChao Yu 		__field(int,	sync_mode)
984e5748434SChao Yu 		__field(char,	for_kupdate)
985e5748434SChao Yu 		__field(char,	for_background)
986e5748434SChao Yu 		__field(char,	tagged_writepages)
987e5748434SChao Yu 		__field(char,	for_reclaim)
988e5748434SChao Yu 		__field(char,	range_cyclic)
989e5748434SChao Yu 		__field(char,	for_sync)
990e5748434SChao Yu 	),
991e5748434SChao Yu 
992e5748434SChao Yu 	TP_fast_assign(
993e5748434SChao Yu 		__entry->dev		= inode->i_sb->s_dev;
994e5748434SChao Yu 		__entry->ino		= inode->i_ino;
995e5748434SChao Yu 		__entry->type		= type;
996e5748434SChao Yu 		__entry->dir		= S_ISDIR(inode->i_mode);
997e5748434SChao Yu 		__entry->nr_to_write	= wbc->nr_to_write;
998e5748434SChao Yu 		__entry->pages_skipped	= wbc->pages_skipped;
999e5748434SChao Yu 		__entry->range_start	= wbc->range_start;
1000e5748434SChao Yu 		__entry->range_end	= wbc->range_end;
1001e5748434SChao Yu 		__entry->writeback_index = inode->i_mapping->writeback_index;
1002e5748434SChao Yu 		__entry->sync_mode	= wbc->sync_mode;
1003e5748434SChao Yu 		__entry->for_kupdate	= wbc->for_kupdate;
1004e5748434SChao Yu 		__entry->for_background	= wbc->for_background;
1005e5748434SChao Yu 		__entry->tagged_writepages	= wbc->tagged_writepages;
1006e5748434SChao Yu 		__entry->for_reclaim	= wbc->for_reclaim;
1007e5748434SChao Yu 		__entry->range_cyclic	= wbc->range_cyclic;
1008e5748434SChao Yu 		__entry->for_sync	= wbc->for_sync;
1009e5748434SChao Yu 	),
1010e5748434SChao Yu 
1011e5748434SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, nr_to_write %ld, "
1012e5748434SChao Yu 		"skipped %ld, start %lld, end %lld, wb_idx %lu, sync_mode %d, "
1013e5748434SChao Yu 		"kupdate %u background %u tagged %u reclaim %u cyclic %u sync %u",
1014e5748434SChao Yu 		show_dev_ino(__entry),
1015e5748434SChao Yu 		show_block_type(__entry->type),
1016e5748434SChao Yu 		show_file_type(__entry->dir),
1017e5748434SChao Yu 		__entry->nr_to_write,
1018e5748434SChao Yu 		__entry->pages_skipped,
1019e5748434SChao Yu 		__entry->range_start,
1020e5748434SChao Yu 		__entry->range_end,
1021e5748434SChao Yu 		(unsigned long)__entry->writeback_index,
1022e5748434SChao Yu 		__entry->sync_mode,
1023e5748434SChao Yu 		__entry->for_kupdate,
1024e5748434SChao Yu 		__entry->for_background,
1025e5748434SChao Yu 		__entry->tagged_writepages,
1026e5748434SChao Yu 		__entry->for_reclaim,
1027e5748434SChao Yu 		__entry->range_cyclic,
1028e5748434SChao Yu 		__entry->for_sync)
1029e5748434SChao Yu );
1030e5748434SChao Yu 
1031b8c29400SChao Yu TRACE_EVENT(f2fs_readpages,
1032b8c29400SChao Yu 
1033b8c29400SChao Yu 	TP_PROTO(struct inode *inode, struct page *page, unsigned int nrpage),
1034b8c29400SChao Yu 
1035b8c29400SChao Yu 	TP_ARGS(inode, page, nrpage),
1036b8c29400SChao Yu 
1037b8c29400SChao Yu 	TP_STRUCT__entry(
1038b8c29400SChao Yu 		__field(dev_t,	dev)
1039b8c29400SChao Yu 		__field(ino_t,	ino)
1040b8c29400SChao Yu 		__field(pgoff_t,	start)
1041b8c29400SChao Yu 		__field(unsigned int,	nrpage)
1042b8c29400SChao Yu 	),
1043b8c29400SChao Yu 
1044b8c29400SChao Yu 	TP_fast_assign(
1045b8c29400SChao Yu 		__entry->dev	= inode->i_sb->s_dev;
1046b8c29400SChao Yu 		__entry->ino	= inode->i_ino;
1047b8c29400SChao Yu 		__entry->start	= page->index;
1048b8c29400SChao Yu 		__entry->nrpage	= nrpage;
1049b8c29400SChao Yu 	),
1050b8c29400SChao Yu 
1051b8c29400SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, start = %lu nrpage = %u",
1052b8c29400SChao Yu 		show_dev_ino(__entry),
1053b8c29400SChao Yu 		(unsigned long)__entry->start,
1054b8c29400SChao Yu 		__entry->nrpage)
1055b8c29400SChao Yu );
1056b8c29400SChao Yu 
10572af4bd6cSNamjae Jeon TRACE_EVENT(f2fs_write_checkpoint,
10582af4bd6cSNamjae Jeon 
105975ab4cb8SJaegeuk Kim 	TP_PROTO(struct super_block *sb, int reason, char *msg),
10602af4bd6cSNamjae Jeon 
106175ab4cb8SJaegeuk Kim 	TP_ARGS(sb, reason, msg),
10622af4bd6cSNamjae Jeon 
10632af4bd6cSNamjae Jeon 	TP_STRUCT__entry(
10642af4bd6cSNamjae Jeon 		__field(dev_t,	dev)
106575ab4cb8SJaegeuk Kim 		__field(int,	reason)
10662af4bd6cSNamjae Jeon 		__field(char *,	msg)
10672af4bd6cSNamjae Jeon 	),
10682af4bd6cSNamjae Jeon 
10692af4bd6cSNamjae Jeon 	TP_fast_assign(
10702af4bd6cSNamjae Jeon 		__entry->dev		= sb->s_dev;
107175ab4cb8SJaegeuk Kim 		__entry->reason		= reason;
10722af4bd6cSNamjae Jeon 		__entry->msg		= msg;
10732af4bd6cSNamjae Jeon 	),
10742af4bd6cSNamjae Jeon 
10752af4bd6cSNamjae Jeon 	TP_printk("dev = (%d,%d), checkpoint for %s, state = %s",
10762af4bd6cSNamjae Jeon 		show_dev(__entry),
107775ab4cb8SJaegeuk Kim 		show_cpreason(__entry->reason),
10782af4bd6cSNamjae Jeon 		__entry->msg)
10792af4bd6cSNamjae Jeon );
10802af4bd6cSNamjae Jeon 
10811661d07cSJaegeuk Kim TRACE_EVENT(f2fs_issue_discard,
10821661d07cSJaegeuk Kim 
10831661d07cSJaegeuk Kim 	TP_PROTO(struct super_block *sb, block_t blkstart, block_t blklen),
10841661d07cSJaegeuk Kim 
10851661d07cSJaegeuk Kim 	TP_ARGS(sb, blkstart, blklen),
10861661d07cSJaegeuk Kim 
10871661d07cSJaegeuk Kim 	TP_STRUCT__entry(
10881661d07cSJaegeuk Kim 		__field(dev_t,	dev)
10891661d07cSJaegeuk Kim 		__field(block_t, blkstart)
10901661d07cSJaegeuk Kim 		__field(block_t, blklen)
10911661d07cSJaegeuk Kim 	),
10921661d07cSJaegeuk Kim 
10931661d07cSJaegeuk Kim 	TP_fast_assign(
10941661d07cSJaegeuk Kim 		__entry->dev	= sb->s_dev;
10951661d07cSJaegeuk Kim 		__entry->blkstart = blkstart;
10961661d07cSJaegeuk Kim 		__entry->blklen = blklen;
10971661d07cSJaegeuk Kim 	),
10981661d07cSJaegeuk Kim 
10991661d07cSJaegeuk Kim 	TP_printk("dev = (%d,%d), blkstart = 0x%llx, blklen = 0x%llx",
11001661d07cSJaegeuk Kim 		show_dev(__entry),
11011661d07cSJaegeuk Kim 		(unsigned long long)__entry->blkstart,
11021661d07cSJaegeuk Kim 		(unsigned long long)__entry->blklen)
11031661d07cSJaegeuk Kim );
110424a9ee0fSJaegeuk Kim 
110524a9ee0fSJaegeuk Kim TRACE_EVENT(f2fs_issue_flush,
110624a9ee0fSJaegeuk Kim 
110729e7043fSJaegeuk Kim 	TP_PROTO(struct super_block *sb, unsigned int nobarrier,
110829e7043fSJaegeuk Kim 					unsigned int flush_merge),
110924a9ee0fSJaegeuk Kim 
111024a9ee0fSJaegeuk Kim 	TP_ARGS(sb, nobarrier, flush_merge),
111124a9ee0fSJaegeuk Kim 
111224a9ee0fSJaegeuk Kim 	TP_STRUCT__entry(
111324a9ee0fSJaegeuk Kim 		__field(dev_t,	dev)
111429e7043fSJaegeuk Kim 		__field(unsigned int, nobarrier)
111529e7043fSJaegeuk Kim 		__field(unsigned int, flush_merge)
111624a9ee0fSJaegeuk Kim 	),
111724a9ee0fSJaegeuk Kim 
111824a9ee0fSJaegeuk Kim 	TP_fast_assign(
111924a9ee0fSJaegeuk Kim 		__entry->dev	= sb->s_dev;
112024a9ee0fSJaegeuk Kim 		__entry->nobarrier = nobarrier;
112124a9ee0fSJaegeuk Kim 		__entry->flush_merge = flush_merge;
112224a9ee0fSJaegeuk Kim 	),
112324a9ee0fSJaegeuk Kim 
112424a9ee0fSJaegeuk Kim 	TP_printk("dev = (%d,%d), %s %s",
112524a9ee0fSJaegeuk Kim 		show_dev(__entry),
112624a9ee0fSJaegeuk Kim 		__entry->nobarrier ? "skip (nobarrier)" : "issue",
112724a9ee0fSJaegeuk Kim 		__entry->flush_merge ? " with flush_merge" : "")
112824a9ee0fSJaegeuk Kim );
11291ec4610cSChao Yu 
11301ec4610cSChao Yu TRACE_EVENT(f2fs_lookup_extent_tree_start,
11311ec4610cSChao Yu 
11321ec4610cSChao Yu 	TP_PROTO(struct inode *inode, unsigned int pgofs),
11331ec4610cSChao Yu 
11341ec4610cSChao Yu 	TP_ARGS(inode, pgofs),
11351ec4610cSChao Yu 
11361ec4610cSChao Yu 	TP_STRUCT__entry(
11371ec4610cSChao Yu 		__field(dev_t,	dev)
11381ec4610cSChao Yu 		__field(ino_t,	ino)
11391ec4610cSChao Yu 		__field(unsigned int, pgofs)
11401ec4610cSChao Yu 	),
11411ec4610cSChao Yu 
11421ec4610cSChao Yu 	TP_fast_assign(
11431ec4610cSChao Yu 		__entry->dev = inode->i_sb->s_dev;
11441ec4610cSChao Yu 		__entry->ino = inode->i_ino;
11451ec4610cSChao Yu 		__entry->pgofs = pgofs;
11461ec4610cSChao Yu 	),
11471ec4610cSChao Yu 
11481ec4610cSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u",
11491ec4610cSChao Yu 		show_dev_ino(__entry),
11501ec4610cSChao Yu 		__entry->pgofs)
11511ec4610cSChao Yu );
11521ec4610cSChao Yu 
11531ec4610cSChao Yu TRACE_EVENT_CONDITION(f2fs_lookup_extent_tree_end,
11541ec4610cSChao Yu 
11551ec4610cSChao Yu 	TP_PROTO(struct inode *inode, unsigned int pgofs,
115684bc926cSJaegeuk Kim 						struct extent_info *ei),
11571ec4610cSChao Yu 
115884bc926cSJaegeuk Kim 	TP_ARGS(inode, pgofs, ei),
11591ec4610cSChao Yu 
116084bc926cSJaegeuk Kim 	TP_CONDITION(ei),
11611ec4610cSChao Yu 
11621ec4610cSChao Yu 	TP_STRUCT__entry(
11631ec4610cSChao Yu 		__field(dev_t,	dev)
11641ec4610cSChao Yu 		__field(ino_t,	ino)
11651ec4610cSChao Yu 		__field(unsigned int, pgofs)
11661ec4610cSChao Yu 		__field(unsigned int, fofs)
11671ec4610cSChao Yu 		__field(u32, blk)
11681ec4610cSChao Yu 		__field(unsigned int, len)
11691ec4610cSChao Yu 	),
11701ec4610cSChao Yu 
11711ec4610cSChao Yu 	TP_fast_assign(
11721ec4610cSChao Yu 		__entry->dev = inode->i_sb->s_dev;
11731ec4610cSChao Yu 		__entry->ino = inode->i_ino;
11741ec4610cSChao Yu 		__entry->pgofs = pgofs;
117584bc926cSJaegeuk Kim 		__entry->fofs = ei->fofs;
117684bc926cSJaegeuk Kim 		__entry->blk = ei->blk;
117784bc926cSJaegeuk Kim 		__entry->len = ei->len;
11781ec4610cSChao Yu 	),
11791ec4610cSChao Yu 
11801ec4610cSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
11811ec4610cSChao Yu 		"ext_info(fofs: %u, blk: %u, len: %u)",
11821ec4610cSChao Yu 		show_dev_ino(__entry),
11831ec4610cSChao Yu 		__entry->pgofs,
11841ec4610cSChao Yu 		__entry->fofs,
11851ec4610cSChao Yu 		__entry->blk,
11861ec4610cSChao Yu 		__entry->len)
11871ec4610cSChao Yu );
11881ec4610cSChao Yu 
1189744288c7SChao Yu TRACE_EVENT(f2fs_update_extent_tree_range,
11901ec4610cSChao Yu 
1191744288c7SChao Yu 	TP_PROTO(struct inode *inode, unsigned int pgofs, block_t blkaddr,
1192744288c7SChao Yu 						unsigned int len),
11931ec4610cSChao Yu 
1194744288c7SChao Yu 	TP_ARGS(inode, pgofs, blkaddr, len),
11951ec4610cSChao Yu 
11961ec4610cSChao Yu 	TP_STRUCT__entry(
11971ec4610cSChao Yu 		__field(dev_t,	dev)
11981ec4610cSChao Yu 		__field(ino_t,	ino)
11991ec4610cSChao Yu 		__field(unsigned int, pgofs)
12001ec4610cSChao Yu 		__field(u32, blk)
1201744288c7SChao Yu 		__field(unsigned int, len)
12021ec4610cSChao Yu 	),
12031ec4610cSChao Yu 
12041ec4610cSChao Yu 	TP_fast_assign(
12051ec4610cSChao Yu 		__entry->dev = inode->i_sb->s_dev;
12061ec4610cSChao Yu 		__entry->ino = inode->i_ino;
12071ec4610cSChao Yu 		__entry->pgofs = pgofs;
12081ec4610cSChao Yu 		__entry->blk = blkaddr;
1209744288c7SChao Yu 		__entry->len = len;
12101ec4610cSChao Yu 	),
12111ec4610cSChao Yu 
1212744288c7SChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
1213744288c7SChao Yu 					"blkaddr = %u, len = %u",
12141ec4610cSChao Yu 		show_dev_ino(__entry),
12151ec4610cSChao Yu 		__entry->pgofs,
1216744288c7SChao Yu 		__entry->blk,
1217744288c7SChao Yu 		__entry->len)
12181ec4610cSChao Yu );
12191ec4610cSChao Yu 
12201ec4610cSChao Yu TRACE_EVENT(f2fs_shrink_extent_tree,
12211ec4610cSChao Yu 
12221ec4610cSChao Yu 	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt,
12231ec4610cSChao Yu 						unsigned int tree_cnt),
12241ec4610cSChao Yu 
12251ec4610cSChao Yu 	TP_ARGS(sbi, node_cnt, tree_cnt),
12261ec4610cSChao Yu 
12271ec4610cSChao Yu 	TP_STRUCT__entry(
12281ec4610cSChao Yu 		__field(dev_t,	dev)
12291ec4610cSChao Yu 		__field(unsigned int, node_cnt)
12301ec4610cSChao Yu 		__field(unsigned int, tree_cnt)
12311ec4610cSChao Yu 	),
12321ec4610cSChao Yu 
12331ec4610cSChao Yu 	TP_fast_assign(
12341ec4610cSChao Yu 		__entry->dev = sbi->sb->s_dev;
12351ec4610cSChao Yu 		__entry->node_cnt = node_cnt;
12361ec4610cSChao Yu 		__entry->tree_cnt = tree_cnt;
12371ec4610cSChao Yu 	),
12381ec4610cSChao Yu 
12391ec4610cSChao Yu 	TP_printk("dev = (%d,%d), shrunk: node_cnt = %u, tree_cnt = %u",
12401ec4610cSChao Yu 		show_dev(__entry),
12411ec4610cSChao Yu 		__entry->node_cnt,
12421ec4610cSChao Yu 		__entry->tree_cnt)
12431ec4610cSChao Yu );
12441ec4610cSChao Yu 
12451ec4610cSChao Yu TRACE_EVENT(f2fs_destroy_extent_tree,
12461ec4610cSChao Yu 
12471ec4610cSChao Yu 	TP_PROTO(struct inode *inode, unsigned int node_cnt),
12481ec4610cSChao Yu 
12491ec4610cSChao Yu 	TP_ARGS(inode, node_cnt),
12501ec4610cSChao Yu 
12511ec4610cSChao Yu 	TP_STRUCT__entry(
12521ec4610cSChao Yu 		__field(dev_t,	dev)
12531ec4610cSChao Yu 		__field(ino_t,	ino)
12541ec4610cSChao Yu 		__field(unsigned int, node_cnt)
12551ec4610cSChao Yu 	),
12561ec4610cSChao Yu 
12571ec4610cSChao Yu 	TP_fast_assign(
12581ec4610cSChao Yu 		__entry->dev = inode->i_sb->s_dev;
12591ec4610cSChao Yu 		__entry->ino = inode->i_ino;
12601ec4610cSChao Yu 		__entry->node_cnt = node_cnt;
12611ec4610cSChao Yu 	),
12621ec4610cSChao Yu 
12631ec4610cSChao Yu 	TP_printk("dev = (%d,%d), ino = %lu, destroyed: node_cnt = %u",
12641ec4610cSChao Yu 		show_dev_ino(__entry),
12651ec4610cSChao Yu 		__entry->node_cnt)
12661ec4610cSChao Yu );
12671ec4610cSChao Yu 
12684cf18537SChao Yu DECLARE_EVENT_CLASS(f2fs_sync_dirty_inodes,
12694cf18537SChao Yu 
12704cf18537SChao Yu 	TP_PROTO(struct super_block *sb, int type, int count),
12714cf18537SChao Yu 
12724cf18537SChao Yu 	TP_ARGS(sb, type, count),
12734cf18537SChao Yu 
12744cf18537SChao Yu 	TP_STRUCT__entry(
12754cf18537SChao Yu 		__field(dev_t, dev)
12764cf18537SChao Yu 		__field(int, type)
12774cf18537SChao Yu 		__field(int, count)
12784cf18537SChao Yu 	),
12794cf18537SChao Yu 
12804cf18537SChao Yu 	TP_fast_assign(
12814cf18537SChao Yu 		__entry->dev	= sb->s_dev;
12824cf18537SChao Yu 		__entry->type	= type;
12834cf18537SChao Yu 		__entry->count	= count;
12844cf18537SChao Yu 	),
12854cf18537SChao Yu 
12864cf18537SChao Yu 	TP_printk("dev = (%d,%d), %s, dirty count = %d",
12874cf18537SChao Yu 		show_dev(__entry),
12884cf18537SChao Yu 		show_file_type(__entry->type),
12894cf18537SChao Yu 		__entry->count)
12904cf18537SChao Yu );
12914cf18537SChao Yu 
12924cf18537SChao Yu DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_enter,
12934cf18537SChao Yu 
12944cf18537SChao Yu 	TP_PROTO(struct super_block *sb, int type, int count),
12954cf18537SChao Yu 
12964cf18537SChao Yu 	TP_ARGS(sb, type, count)
12974cf18537SChao Yu );
12984cf18537SChao Yu 
12994cf18537SChao Yu DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_exit,
13004cf18537SChao Yu 
13014cf18537SChao Yu 	TP_PROTO(struct super_block *sb, int type, int count),
13024cf18537SChao Yu 
13034cf18537SChao Yu 	TP_ARGS(sb, type, count)
13044cf18537SChao Yu );
13054cf18537SChao Yu 
1306a2a4a7e4SNamjae Jeon #endif /* _TRACE_F2FS_H */
1307a2a4a7e4SNamjae Jeon 
1308a2a4a7e4SNamjae Jeon  /* This part must be outside protection */
1309a2a4a7e4SNamjae Jeon #include <trace/define_trace.h>
1310