xref: /openbmc/linux/include/trace/events/erofs.h (revision c33ad3b2)
147e4937aSGao Xiang /* SPDX-License-Identifier: GPL-2.0-only */
247e4937aSGao Xiang #undef TRACE_SYSTEM
347e4937aSGao Xiang #define TRACE_SYSTEM erofs
447e4937aSGao Xiang 
547e4937aSGao Xiang #if !defined(_TRACE_EROFS_H) || defined(TRACE_HEADER_MULTI_READ)
647e4937aSGao Xiang #define _TRACE_EROFS_H
747e4937aSGao Xiang 
847e4937aSGao Xiang #include <linux/tracepoint.h>
9a1db98f2SGao Xiang #include <linux/fs.h>
10a1db98f2SGao Xiang 
11a1db98f2SGao Xiang struct erofs_map_blocks;
1247e4937aSGao Xiang 
1347e4937aSGao Xiang #define show_dev(dev)		MAJOR(dev), MINOR(dev)
1447e4937aSGao Xiang #define show_dev_nid(entry)	show_dev(entry->dev), entry->nid
1547e4937aSGao Xiang 
1647e4937aSGao Xiang #define show_file_type(type)						\
1747e4937aSGao Xiang 	__print_symbolic(type,						\
1847e4937aSGao Xiang 		{ 0,		"FILE" },				\
1947e4937aSGao Xiang 		{ 1,		"DIR" })
2047e4937aSGao Xiang 
2147e4937aSGao Xiang #define show_map_flags(flags) __print_flags(flags, "|",	\
22d60b8760SJingbo Xu 	{ EROFS_GET_BLOCKS_FIEMAP,	"FIEMAP" },	\
23d60b8760SJingbo Xu 	{ EROFS_GET_BLOCKS_READMORE,	"READMORE" },	\
24d60b8760SJingbo Xu 	{ EROFS_GET_BLOCKS_FINDTAIL,	"FINDTAIL" })
2547e4937aSGao Xiang 
2647e4937aSGao Xiang #define show_mflags(flags) __print_flags(flags, "",	\
2747e4937aSGao Xiang 	{ EROFS_MAP_MAPPED,		"M" },		\
2847e4937aSGao Xiang 	{ EROFS_MAP_META,		"I" },		\
29d60b8760SJingbo Xu 	{ EROFS_MAP_ENCODED,		"E" },		\
30d60b8760SJingbo Xu 	{ EROFS_MAP_FULL_MAPPED,	"F" },		\
31d60b8760SJingbo Xu 	{ EROFS_MAP_FRAGMENT,		"R" },		\
32d60b8760SJingbo Xu 	{ EROFS_MAP_PARTIAL_REF,	"P" })
3347e4937aSGao Xiang 
3447e4937aSGao Xiang TRACE_EVENT(erofs_lookup,
3547e4937aSGao Xiang 
3647e4937aSGao Xiang 	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
3747e4937aSGao Xiang 
3847e4937aSGao Xiang 	TP_ARGS(dir, dentry, flags),
3947e4937aSGao Xiang 
4047e4937aSGao Xiang 	TP_STRUCT__entry(
4147e4937aSGao Xiang 		__field(dev_t,		dev	)
4247e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
4393368aabSGao Xiang 		__string(name,		dentry->d_name.name	)
4447e4937aSGao Xiang 		__field(unsigned int,	flags	)
4547e4937aSGao Xiang 	),
4647e4937aSGao Xiang 
4747e4937aSGao Xiang 	TP_fast_assign(
4847e4937aSGao Xiang 		__entry->dev	= dir->i_sb->s_dev;
49a5876e24SGao Xiang 		__entry->nid	= EROFS_I(dir)->nid;
5093368aabSGao Xiang 		__assign_str(name, dentry->d_name.name);
5147e4937aSGao Xiang 		__entry->flags	= flags;
5247e4937aSGao Xiang 	),
5347e4937aSGao Xiang 
5447e4937aSGao Xiang 	TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",
5547e4937aSGao Xiang 		show_dev_nid(__entry),
5693368aabSGao Xiang 		__get_str(name),
5747e4937aSGao Xiang 		__entry->flags)
5847e4937aSGao Xiang );
5947e4937aSGao Xiang 
6047e4937aSGao Xiang TRACE_EVENT(erofs_fill_inode,
61312fe643SGao Xiang 	TP_PROTO(struct inode *inode),
62312fe643SGao Xiang 	TP_ARGS(inode),
6347e4937aSGao Xiang 
6447e4937aSGao Xiang 	TP_STRUCT__entry(
6547e4937aSGao Xiang 		__field(dev_t,		dev	)
6647e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
6747e4937aSGao Xiang 		__field(erofs_blk_t,	blkaddr )
6847e4937aSGao Xiang 		__field(unsigned int,	ofs	)
6947e4937aSGao Xiang 	),
7047e4937aSGao Xiang 
7147e4937aSGao Xiang 	TP_fast_assign(
7247e4937aSGao Xiang 		__entry->dev		= inode->i_sb->s_dev;
73a5876e24SGao Xiang 		__entry->nid		= EROFS_I(inode)->nid;
743acea5fcSJingbo Xu 		__entry->blkaddr	= erofs_blknr(inode->i_sb, erofs_iloc(inode));
753acea5fcSJingbo Xu 		__entry->ofs		= erofs_blkoff(inode->i_sb, erofs_iloc(inode));
7647e4937aSGao Xiang 	),
7747e4937aSGao Xiang 
78312fe643SGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u",
7947e4937aSGao Xiang 		  show_dev_nid(__entry),
80312fe643SGao Xiang 		  __entry->blkaddr, __entry->ofs)
8147e4937aSGao Xiang );
8247e4937aSGao Xiang 
83*c33ad3b2SGao Xiang TRACE_EVENT(erofs_read_folio,
8447e4937aSGao Xiang 
85*c33ad3b2SGao Xiang 	TP_PROTO(struct folio *folio, bool raw),
8647e4937aSGao Xiang 
87*c33ad3b2SGao Xiang 	TP_ARGS(folio, raw),
8847e4937aSGao Xiang 
8947e4937aSGao Xiang 	TP_STRUCT__entry(
9047e4937aSGao Xiang 		__field(dev_t,		dev	)
9147e4937aSGao Xiang 		__field(erofs_nid_t,    nid     )
9247e4937aSGao Xiang 		__field(int,		dir	)
9347e4937aSGao Xiang 		__field(pgoff_t,	index	)
9447e4937aSGao Xiang 		__field(int,		uptodate)
9547e4937aSGao Xiang 		__field(bool,		raw	)
9647e4937aSGao Xiang 	),
9747e4937aSGao Xiang 
9847e4937aSGao Xiang 	TP_fast_assign(
99*c33ad3b2SGao Xiang 		__entry->dev	= folio->mapping->host->i_sb->s_dev;
100*c33ad3b2SGao Xiang 		__entry->nid	= EROFS_I(folio->mapping->host)->nid;
101*c33ad3b2SGao Xiang 		__entry->dir	= S_ISDIR(folio->mapping->host->i_mode);
102*c33ad3b2SGao Xiang 		__entry->index	= folio->index;
103*c33ad3b2SGao Xiang 		__entry->uptodate = folio_test_uptodate(folio);
10447e4937aSGao Xiang 		__entry->raw = raw;
10547e4937aSGao Xiang 	),
10647e4937aSGao Xiang 
10747e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "
10847e4937aSGao Xiang 		"raw = %d",
10947e4937aSGao Xiang 		show_dev_nid(__entry),
11047e4937aSGao Xiang 		show_file_type(__entry->dir),
11147e4937aSGao Xiang 		(unsigned long)__entry->index,
11247e4937aSGao Xiang 		__entry->uptodate,
11347e4937aSGao Xiang 		__entry->raw)
11447e4937aSGao Xiang );
11547e4937aSGao Xiang 
11647e4937aSGao Xiang TRACE_EVENT(erofs_readpages,
11747e4937aSGao Xiang 
1180c07a9f9SMatthew Wilcox (Oracle) 	TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage,
11947e4937aSGao Xiang 		bool raw),
12047e4937aSGao Xiang 
1210c07a9f9SMatthew Wilcox (Oracle) 	TP_ARGS(inode, start, nrpage, raw),
12247e4937aSGao Xiang 
12347e4937aSGao Xiang 	TP_STRUCT__entry(
12447e4937aSGao Xiang 		__field(dev_t,		dev	)
12547e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
12647e4937aSGao Xiang 		__field(pgoff_t,	start	)
12747e4937aSGao Xiang 		__field(unsigned int,	nrpage	)
12847e4937aSGao Xiang 		__field(bool,		raw	)
12947e4937aSGao Xiang 	),
13047e4937aSGao Xiang 
13147e4937aSGao Xiang 	TP_fast_assign(
13247e4937aSGao Xiang 		__entry->dev	= inode->i_sb->s_dev;
133a5876e24SGao Xiang 		__entry->nid	= EROFS_I(inode)->nid;
1340c07a9f9SMatthew Wilcox (Oracle) 		__entry->start	= start;
13547e4937aSGao Xiang 		__entry->nrpage	= nrpage;
13647e4937aSGao Xiang 		__entry->raw	= raw;
13747e4937aSGao Xiang 	),
13847e4937aSGao Xiang 
13947e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",
14047e4937aSGao Xiang 		show_dev_nid(__entry),
14147e4937aSGao Xiang 		(unsigned long)__entry->start,
14247e4937aSGao Xiang 		__entry->nrpage,
14347e4937aSGao Xiang 		__entry->raw)
14447e4937aSGao Xiang );
14547e4937aSGao Xiang 
14647e4937aSGao Xiang DECLARE_EVENT_CLASS(erofs__map_blocks_enter,
14747e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
14847e4937aSGao Xiang 		 unsigned int flags),
14947e4937aSGao Xiang 
15047e4937aSGao Xiang 	TP_ARGS(inode, map, flags),
15147e4937aSGao Xiang 
15247e4937aSGao Xiang 	TP_STRUCT__entry(
15347e4937aSGao Xiang 		__field(	dev_t,		dev		)
15447e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
15547e4937aSGao Xiang 		__field(	erofs_off_t,	la		)
15647e4937aSGao Xiang 		__field(	u64,		llen		)
15747e4937aSGao Xiang 		__field(	unsigned int,	flags		)
15847e4937aSGao Xiang 	),
15947e4937aSGao Xiang 
16047e4937aSGao Xiang 	TP_fast_assign(
16147e4937aSGao Xiang 		__entry->dev    = inode->i_sb->s_dev;
162a5876e24SGao Xiang 		__entry->nid    = EROFS_I(inode)->nid;
16347e4937aSGao Xiang 		__entry->la	= map->m_la;
16447e4937aSGao Xiang 		__entry->llen	= map->m_llen;
16547e4937aSGao Xiang 		__entry->flags	= flags;
16647e4937aSGao Xiang 	),
16747e4937aSGao Xiang 
16847e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
16947e4937aSGao Xiang 		  show_dev_nid(__entry),
17047e4937aSGao Xiang 		  __entry->la, __entry->llen,
17147e4937aSGao Xiang 		  __entry->flags ? show_map_flags(__entry->flags) : "NULL")
17247e4937aSGao Xiang );
17347e4937aSGao Xiang 
174469407a3SGao Xiang DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_enter,
17547e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
17647e4937aSGao Xiang 		 unsigned flags),
17747e4937aSGao Xiang 
17847e4937aSGao Xiang 	TP_ARGS(inode, map, flags)
17947e4937aSGao Xiang );
18047e4937aSGao Xiang 
18147e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_enter, z_erofs_map_blocks_iter_enter,
18247e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
18347e4937aSGao Xiang 		 unsigned int flags),
18447e4937aSGao Xiang 
18547e4937aSGao Xiang 	TP_ARGS(inode, map, flags)
18647e4937aSGao Xiang );
18747e4937aSGao Xiang 
18847e4937aSGao Xiang DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
18947e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
19047e4937aSGao Xiang 		 unsigned int flags, int ret),
19147e4937aSGao Xiang 
19247e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret),
19347e4937aSGao Xiang 
19447e4937aSGao Xiang 	TP_STRUCT__entry(
19547e4937aSGao Xiang 		__field(	dev_t,		dev		)
19647e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
19747e4937aSGao Xiang 		__field(        unsigned int,   flags           )
19847e4937aSGao Xiang 		__field(	erofs_off_t,	la		)
19947e4937aSGao Xiang 		__field(	erofs_off_t,	pa		)
20047e4937aSGao Xiang 		__field(	u64,		llen		)
20147e4937aSGao Xiang 		__field(	u64,		plen		)
20247e4937aSGao Xiang 		__field(        unsigned int,	mflags		)
20347e4937aSGao Xiang 		__field(	int,		ret		)
20447e4937aSGao Xiang 	),
20547e4937aSGao Xiang 
20647e4937aSGao Xiang 	TP_fast_assign(
20747e4937aSGao Xiang 		__entry->dev    = inode->i_sb->s_dev;
208a5876e24SGao Xiang 		__entry->nid    = EROFS_I(inode)->nid;
20947e4937aSGao Xiang 		__entry->flags	= flags;
21047e4937aSGao Xiang 		__entry->la	= map->m_la;
21147e4937aSGao Xiang 		__entry->pa	= map->m_pa;
21247e4937aSGao Xiang 		__entry->llen	= map->m_llen;
21347e4937aSGao Xiang 		__entry->plen	= map->m_plen;
21447e4937aSGao Xiang 		__entry->mflags	= map->m_flags;
21547e4937aSGao Xiang 		__entry->ret	= ret;
21647e4937aSGao Xiang 	),
21747e4937aSGao Xiang 
21847e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, flags %s "
21947e4937aSGao Xiang 		  "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
22047e4937aSGao Xiang 		  show_dev_nid(__entry),
22147e4937aSGao Xiang 		  __entry->flags ? show_map_flags(__entry->flags) : "NULL",
22247e4937aSGao Xiang 		  __entry->la, __entry->pa, __entry->llen, __entry->plen,
22347e4937aSGao Xiang 		  show_mflags(__entry->mflags), __entry->ret)
22447e4937aSGao Xiang );
22547e4937aSGao Xiang 
226469407a3SGao Xiang DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_exit,
22747e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
22847e4937aSGao Xiang 		 unsigned flags, int ret),
22947e4937aSGao Xiang 
23047e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret)
23147e4937aSGao Xiang );
23247e4937aSGao Xiang 
23347e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_exit, z_erofs_map_blocks_iter_exit,
23447e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
23547e4937aSGao Xiang 		 unsigned int flags, int ret),
23647e4937aSGao Xiang 
23747e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret)
23847e4937aSGao Xiang );
23947e4937aSGao Xiang 
24047e4937aSGao Xiang TRACE_EVENT(erofs_destroy_inode,
24147e4937aSGao Xiang 	TP_PROTO(struct inode *inode),
24247e4937aSGao Xiang 
24347e4937aSGao Xiang 	TP_ARGS(inode),
24447e4937aSGao Xiang 
24547e4937aSGao Xiang 	TP_STRUCT__entry(
24647e4937aSGao Xiang 		__field(	dev_t,		dev		)
24747e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
24847e4937aSGao Xiang 	),
24947e4937aSGao Xiang 
25047e4937aSGao Xiang 	TP_fast_assign(
25147e4937aSGao Xiang 		__entry->dev	= inode->i_sb->s_dev;
252a5876e24SGao Xiang 		__entry->nid	= EROFS_I(inode)->nid;
25347e4937aSGao Xiang 	),
25447e4937aSGao Xiang 
25547e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry))
25647e4937aSGao Xiang );
25747e4937aSGao Xiang 
25847e4937aSGao Xiang #endif /* _TRACE_EROFS_H */
25947e4937aSGao Xiang 
26047e4937aSGao Xiang  /* This part must be outside protection */
26147e4937aSGao Xiang #include <trace/define_trace.h>
262