xref: /openbmc/linux/include/trace/events/erofs.h (revision 47e4937a)
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>
947e4937aSGao Xiang 
1047e4937aSGao Xiang #define show_dev(dev)		MAJOR(dev), MINOR(dev)
1147e4937aSGao Xiang #define show_dev_nid(entry)	show_dev(entry->dev), entry->nid
1247e4937aSGao Xiang 
1347e4937aSGao Xiang #define show_file_type(type)						\
1447e4937aSGao Xiang 	__print_symbolic(type,						\
1547e4937aSGao Xiang 		{ 0,		"FILE" },				\
1647e4937aSGao Xiang 		{ 1,		"DIR" })
1747e4937aSGao Xiang 
1847e4937aSGao Xiang #define show_map_flags(flags) __print_flags(flags, "|",	\
1947e4937aSGao Xiang 	{ EROFS_GET_BLOCKS_RAW,	"RAW" })
2047e4937aSGao Xiang 
2147e4937aSGao Xiang #define show_mflags(flags) __print_flags(flags, "",	\
2247e4937aSGao Xiang 	{ EROFS_MAP_MAPPED,	"M" },			\
2347e4937aSGao Xiang 	{ EROFS_MAP_META,	"I" },			\
2447e4937aSGao Xiang 	{ EROFS_MAP_ZIPPED,	"Z" })
2547e4937aSGao Xiang 
2647e4937aSGao Xiang TRACE_EVENT(erofs_lookup,
2747e4937aSGao Xiang 
2847e4937aSGao Xiang 	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
2947e4937aSGao Xiang 
3047e4937aSGao Xiang 	TP_ARGS(dir, dentry, flags),
3147e4937aSGao Xiang 
3247e4937aSGao Xiang 	TP_STRUCT__entry(
3347e4937aSGao Xiang 		__field(dev_t,		dev	)
3447e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
3547e4937aSGao Xiang 		__field(const char *,	name	)
3647e4937aSGao Xiang 		__field(unsigned int,	flags	)
3747e4937aSGao Xiang 	),
3847e4937aSGao Xiang 
3947e4937aSGao Xiang 	TP_fast_assign(
4047e4937aSGao Xiang 		__entry->dev	= dir->i_sb->s_dev;
4147e4937aSGao Xiang 		__entry->nid	= EROFS_V(dir)->nid;
4247e4937aSGao Xiang 		__entry->name	= dentry->d_name.name;
4347e4937aSGao Xiang 		__entry->flags	= flags;
4447e4937aSGao Xiang 	),
4547e4937aSGao Xiang 
4647e4937aSGao Xiang 	TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",
4747e4937aSGao Xiang 		show_dev_nid(__entry),
4847e4937aSGao Xiang 		__entry->name,
4947e4937aSGao Xiang 		__entry->flags)
5047e4937aSGao Xiang );
5147e4937aSGao Xiang 
5247e4937aSGao Xiang TRACE_EVENT(erofs_fill_inode,
5347e4937aSGao Xiang 	TP_PROTO(struct inode *inode, int isdir),
5447e4937aSGao Xiang 	TP_ARGS(inode, isdir),
5547e4937aSGao Xiang 
5647e4937aSGao Xiang 	TP_STRUCT__entry(
5747e4937aSGao Xiang 		__field(dev_t,		dev	)
5847e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
5947e4937aSGao Xiang 		__field(erofs_blk_t,	blkaddr )
6047e4937aSGao Xiang 		__field(unsigned int,	ofs	)
6147e4937aSGao Xiang 		__field(int,		isdir	)
6247e4937aSGao Xiang 	),
6347e4937aSGao Xiang 
6447e4937aSGao Xiang 	TP_fast_assign(
6547e4937aSGao Xiang 		__entry->dev		= inode->i_sb->s_dev;
6647e4937aSGao Xiang 		__entry->nid		= EROFS_V(inode)->nid;
6747e4937aSGao Xiang 		__entry->blkaddr	= erofs_blknr(iloc(EROFS_I_SB(inode), __entry->nid));
6847e4937aSGao Xiang 		__entry->ofs		= erofs_blkoff(iloc(EROFS_I_SB(inode), __entry->nid));
6947e4937aSGao Xiang 		__entry->isdir		= isdir;
7047e4937aSGao Xiang 	),
7147e4937aSGao Xiang 
7247e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u, isdir %d",
7347e4937aSGao Xiang 		  show_dev_nid(__entry),
7447e4937aSGao Xiang 		  __entry->blkaddr, __entry->ofs,
7547e4937aSGao Xiang 		  __entry->isdir)
7647e4937aSGao Xiang );
7747e4937aSGao Xiang 
7847e4937aSGao Xiang TRACE_EVENT(erofs_readpage,
7947e4937aSGao Xiang 
8047e4937aSGao Xiang 	TP_PROTO(struct page *page, bool raw),
8147e4937aSGao Xiang 
8247e4937aSGao Xiang 	TP_ARGS(page, raw),
8347e4937aSGao Xiang 
8447e4937aSGao Xiang 	TP_STRUCT__entry(
8547e4937aSGao Xiang 		__field(dev_t,		dev	)
8647e4937aSGao Xiang 		__field(erofs_nid_t,    nid     )
8747e4937aSGao Xiang 		__field(int,		dir	)
8847e4937aSGao Xiang 		__field(pgoff_t,	index	)
8947e4937aSGao Xiang 		__field(int,		uptodate)
9047e4937aSGao Xiang 		__field(bool,		raw	)
9147e4937aSGao Xiang 	),
9247e4937aSGao Xiang 
9347e4937aSGao Xiang 	TP_fast_assign(
9447e4937aSGao Xiang 		__entry->dev	= page->mapping->host->i_sb->s_dev;
9547e4937aSGao Xiang 		__entry->nid	= EROFS_V(page->mapping->host)->nid;
9647e4937aSGao Xiang 		__entry->dir	= S_ISDIR(page->mapping->host->i_mode);
9747e4937aSGao Xiang 		__entry->index	= page->index;
9847e4937aSGao Xiang 		__entry->uptodate = PageUptodate(page);
9947e4937aSGao Xiang 		__entry->raw = raw;
10047e4937aSGao Xiang 	),
10147e4937aSGao Xiang 
10247e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "
10347e4937aSGao Xiang 		"raw = %d",
10447e4937aSGao Xiang 		show_dev_nid(__entry),
10547e4937aSGao Xiang 		show_file_type(__entry->dir),
10647e4937aSGao Xiang 		(unsigned long)__entry->index,
10747e4937aSGao Xiang 		__entry->uptodate,
10847e4937aSGao Xiang 		__entry->raw)
10947e4937aSGao Xiang );
11047e4937aSGao Xiang 
11147e4937aSGao Xiang TRACE_EVENT(erofs_readpages,
11247e4937aSGao Xiang 
11347e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct page *page, unsigned int nrpage,
11447e4937aSGao Xiang 		bool raw),
11547e4937aSGao Xiang 
11647e4937aSGao Xiang 	TP_ARGS(inode, page, nrpage, raw),
11747e4937aSGao Xiang 
11847e4937aSGao Xiang 	TP_STRUCT__entry(
11947e4937aSGao Xiang 		__field(dev_t,		dev	)
12047e4937aSGao Xiang 		__field(erofs_nid_t,	nid	)
12147e4937aSGao Xiang 		__field(pgoff_t,	start	)
12247e4937aSGao Xiang 		__field(unsigned int,	nrpage	)
12347e4937aSGao Xiang 		__field(bool,		raw	)
12447e4937aSGao Xiang 	),
12547e4937aSGao Xiang 
12647e4937aSGao Xiang 	TP_fast_assign(
12747e4937aSGao Xiang 		__entry->dev	= inode->i_sb->s_dev;
12847e4937aSGao Xiang 		__entry->nid	= EROFS_V(inode)->nid;
12947e4937aSGao Xiang 		__entry->start	= page->index;
13047e4937aSGao Xiang 		__entry->nrpage	= nrpage;
13147e4937aSGao Xiang 		__entry->raw	= raw;
13247e4937aSGao Xiang 	),
13347e4937aSGao Xiang 
13447e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",
13547e4937aSGao Xiang 		show_dev_nid(__entry),
13647e4937aSGao Xiang 		(unsigned long)__entry->start,
13747e4937aSGao Xiang 		__entry->nrpage,
13847e4937aSGao Xiang 		__entry->raw)
13947e4937aSGao Xiang );
14047e4937aSGao Xiang 
14147e4937aSGao Xiang DECLARE_EVENT_CLASS(erofs__map_blocks_enter,
14247e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
14347e4937aSGao Xiang 		 unsigned int flags),
14447e4937aSGao Xiang 
14547e4937aSGao Xiang 	TP_ARGS(inode, map, flags),
14647e4937aSGao Xiang 
14747e4937aSGao Xiang 	TP_STRUCT__entry(
14847e4937aSGao Xiang 		__field(	dev_t,		dev		)
14947e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
15047e4937aSGao Xiang 		__field(	erofs_off_t,	la		)
15147e4937aSGao Xiang 		__field(	u64,		llen		)
15247e4937aSGao Xiang 		__field(	unsigned int,	flags		)
15347e4937aSGao Xiang 	),
15447e4937aSGao Xiang 
15547e4937aSGao Xiang 	TP_fast_assign(
15647e4937aSGao Xiang 		__entry->dev    = inode->i_sb->s_dev;
15747e4937aSGao Xiang 		__entry->nid    = EROFS_V(inode)->nid;
15847e4937aSGao Xiang 		__entry->la	= map->m_la;
15947e4937aSGao Xiang 		__entry->llen	= map->m_llen;
16047e4937aSGao Xiang 		__entry->flags	= flags;
16147e4937aSGao Xiang 	),
16247e4937aSGao Xiang 
16347e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
16447e4937aSGao Xiang 		  show_dev_nid(__entry),
16547e4937aSGao Xiang 		  __entry->la, __entry->llen,
16647e4937aSGao Xiang 		  __entry->flags ? show_map_flags(__entry->flags) : "NULL")
16747e4937aSGao Xiang );
16847e4937aSGao Xiang 
16947e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_flatmode_enter,
17047e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
17147e4937aSGao Xiang 		 unsigned flags),
17247e4937aSGao Xiang 
17347e4937aSGao Xiang 	TP_ARGS(inode, map, flags)
17447e4937aSGao Xiang );
17547e4937aSGao Xiang 
17647e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_enter, z_erofs_map_blocks_iter_enter,
17747e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
17847e4937aSGao Xiang 		 unsigned int flags),
17947e4937aSGao Xiang 
18047e4937aSGao Xiang 	TP_ARGS(inode, map, flags)
18147e4937aSGao Xiang );
18247e4937aSGao Xiang 
18347e4937aSGao Xiang DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
18447e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
18547e4937aSGao Xiang 		 unsigned int flags, int ret),
18647e4937aSGao Xiang 
18747e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret),
18847e4937aSGao Xiang 
18947e4937aSGao Xiang 	TP_STRUCT__entry(
19047e4937aSGao Xiang 		__field(	dev_t,		dev		)
19147e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
19247e4937aSGao Xiang 		__field(        unsigned int,   flags           )
19347e4937aSGao Xiang 		__field(	erofs_off_t,	la		)
19447e4937aSGao Xiang 		__field(	erofs_off_t,	pa		)
19547e4937aSGao Xiang 		__field(	u64,		llen		)
19647e4937aSGao Xiang 		__field(	u64,		plen		)
19747e4937aSGao Xiang 		__field(        unsigned int,	mflags		)
19847e4937aSGao Xiang 		__field(	int,		ret		)
19947e4937aSGao Xiang 	),
20047e4937aSGao Xiang 
20147e4937aSGao Xiang 	TP_fast_assign(
20247e4937aSGao Xiang 		__entry->dev    = inode->i_sb->s_dev;
20347e4937aSGao Xiang 		__entry->nid    = EROFS_V(inode)->nid;
20447e4937aSGao Xiang 		__entry->flags	= flags;
20547e4937aSGao Xiang 		__entry->la	= map->m_la;
20647e4937aSGao Xiang 		__entry->pa	= map->m_pa;
20747e4937aSGao Xiang 		__entry->llen	= map->m_llen;
20847e4937aSGao Xiang 		__entry->plen	= map->m_plen;
20947e4937aSGao Xiang 		__entry->mflags	= map->m_flags;
21047e4937aSGao Xiang 		__entry->ret	= ret;
21147e4937aSGao Xiang 	),
21247e4937aSGao Xiang 
21347e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu, flags %s "
21447e4937aSGao Xiang 		  "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
21547e4937aSGao Xiang 		  show_dev_nid(__entry),
21647e4937aSGao Xiang 		  __entry->flags ? show_map_flags(__entry->flags) : "NULL",
21747e4937aSGao Xiang 		  __entry->la, __entry->pa, __entry->llen, __entry->plen,
21847e4937aSGao Xiang 		  show_mflags(__entry->mflags), __entry->ret)
21947e4937aSGao Xiang );
22047e4937aSGao Xiang 
22147e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_flatmode_exit,
22247e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
22347e4937aSGao Xiang 		 unsigned flags, int ret),
22447e4937aSGao Xiang 
22547e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret)
22647e4937aSGao Xiang );
22747e4937aSGao Xiang 
22847e4937aSGao Xiang DEFINE_EVENT(erofs__map_blocks_exit, z_erofs_map_blocks_iter_exit,
22947e4937aSGao Xiang 	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
23047e4937aSGao Xiang 		 unsigned int flags, int ret),
23147e4937aSGao Xiang 
23247e4937aSGao Xiang 	TP_ARGS(inode, map, flags, ret)
23347e4937aSGao Xiang );
23447e4937aSGao Xiang 
23547e4937aSGao Xiang TRACE_EVENT(erofs_destroy_inode,
23647e4937aSGao Xiang 	TP_PROTO(struct inode *inode),
23747e4937aSGao Xiang 
23847e4937aSGao Xiang 	TP_ARGS(inode),
23947e4937aSGao Xiang 
24047e4937aSGao Xiang 	TP_STRUCT__entry(
24147e4937aSGao Xiang 		__field(	dev_t,		dev		)
24247e4937aSGao Xiang 		__field(	erofs_nid_t,	nid		)
24347e4937aSGao Xiang 	),
24447e4937aSGao Xiang 
24547e4937aSGao Xiang 	TP_fast_assign(
24647e4937aSGao Xiang 		__entry->dev	= inode->i_sb->s_dev;
24747e4937aSGao Xiang 		__entry->nid	= EROFS_V(inode)->nid;
24847e4937aSGao Xiang 	),
24947e4937aSGao Xiang 
25047e4937aSGao Xiang 	TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry))
25147e4937aSGao Xiang );
25247e4937aSGao Xiang 
25347e4937aSGao Xiang #endif /* _TRACE_EROFS_H */
25447e4937aSGao Xiang 
25547e4937aSGao Xiang  /* This part must be outside protection */
25647e4937aSGao Xiang #include <trace/define_trace.h>
257