brintos

brintos / linux-shallow public Read only

0
0
Text · 5.6 KiB · 57df384 Raw
236 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM erofs4 5#if !defined(_TRACE_EROFS_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_EROFS_H7 8#include <linux/tracepoint.h>9#include <linux/fs.h>10 11struct erofs_map_blocks;12 13#define show_dev(dev)		MAJOR(dev), MINOR(dev)14#define show_dev_nid(entry)	show_dev(entry->dev), entry->nid15 16#define show_file_type(type)						\17	__print_symbolic(type,						\18		{ 0,		"FILE" },				\19		{ 1,		"DIR" })20 21#define show_map_flags(flags) __print_flags(flags, "|",	\22	{ EROFS_GET_BLOCKS_FIEMAP,	"FIEMAP" },	\23	{ EROFS_GET_BLOCKS_READMORE,	"READMORE" },	\24	{ EROFS_GET_BLOCKS_FINDTAIL,	"FINDTAIL" })25 26#define show_mflags(flags) __print_flags(flags, "",	\27	{ EROFS_MAP_MAPPED,		"M" },		\28	{ EROFS_MAP_META,		"I" },		\29	{ EROFS_MAP_ENCODED,		"E" },		\30	{ EROFS_MAP_FULL_MAPPED,	"F" },		\31	{ EROFS_MAP_FRAGMENT,		"R" },		\32	{ EROFS_MAP_PARTIAL_REF,	"P" })33 34TRACE_EVENT(erofs_lookup,35 36	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),37 38	TP_ARGS(dir, dentry, flags),39 40	TP_STRUCT__entry(41		__field(dev_t,		dev	)42		__field(erofs_nid_t,	nid	)43		__string(name,		dentry->d_name.name	)44		__field(unsigned int,	flags	)45	),46 47	TP_fast_assign(48		__entry->dev	= dir->i_sb->s_dev;49		__entry->nid	= EROFS_I(dir)->nid;50		__assign_str(name);51		__entry->flags	= flags;52	),53 54	TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",55		show_dev_nid(__entry),56		__get_str(name),57		__entry->flags)58);59 60TRACE_EVENT(erofs_fill_inode,61	TP_PROTO(struct inode *inode),62	TP_ARGS(inode),63 64	TP_STRUCT__entry(65		__field(dev_t,		dev	)66		__field(erofs_nid_t,	nid	)67		__field(erofs_blk_t,	blkaddr )68		__field(unsigned int,	ofs	)69	),70 71	TP_fast_assign(72		__entry->dev		= inode->i_sb->s_dev;73		__entry->nid		= EROFS_I(inode)->nid;74		__entry->blkaddr	= erofs_blknr(inode->i_sb, erofs_iloc(inode));75		__entry->ofs		= erofs_blkoff(inode->i_sb, erofs_iloc(inode));76	),77 78	TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u",79		  show_dev_nid(__entry),80		  __entry->blkaddr, __entry->ofs)81);82 83TRACE_EVENT(erofs_read_folio,84 85	TP_PROTO(struct folio *folio, bool raw),86 87	TP_ARGS(folio, raw),88 89	TP_STRUCT__entry(90		__field(dev_t,		dev	)91		__field(erofs_nid_t,    nid     )92		__field(int,		dir	)93		__field(pgoff_t,	index	)94		__field(int,		uptodate)95		__field(bool,		raw	)96	),97 98	TP_fast_assign(99		__entry->dev	= folio->mapping->host->i_sb->s_dev;100		__entry->nid	= EROFS_I(folio->mapping->host)->nid;101		__entry->dir	= S_ISDIR(folio->mapping->host->i_mode);102		__entry->index	= folio->index;103		__entry->uptodate = folio_test_uptodate(folio);104		__entry->raw = raw;105	),106 107	TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "108		"raw = %d",109		show_dev_nid(__entry),110		show_file_type(__entry->dir),111		(unsigned long)__entry->index,112		__entry->uptodate,113		__entry->raw)114);115 116TRACE_EVENT(erofs_readpages,117 118	TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage,119		bool raw),120 121	TP_ARGS(inode, start, nrpage, raw),122 123	TP_STRUCT__entry(124		__field(dev_t,		dev	)125		__field(erofs_nid_t,	nid	)126		__field(pgoff_t,	start	)127		__field(unsigned int,	nrpage	)128		__field(bool,		raw	)129	),130 131	TP_fast_assign(132		__entry->dev	= inode->i_sb->s_dev;133		__entry->nid	= EROFS_I(inode)->nid;134		__entry->start	= start;135		__entry->nrpage	= nrpage;136		__entry->raw	= raw;137	),138 139	TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",140		show_dev_nid(__entry),141		(unsigned long)__entry->start,142		__entry->nrpage,143		__entry->raw)144);145 146TRACE_EVENT(erofs_map_blocks_enter,147 148	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,149		 unsigned int flags),150 151	TP_ARGS(inode, map, flags),152 153	TP_STRUCT__entry(154		__field(	dev_t,		dev		)155		__field(	erofs_nid_t,	nid		)156		__field(	erofs_off_t,	la		)157		__field(	u64,		llen		)158		__field(	unsigned int,	flags		)159	),160 161	TP_fast_assign(162		__entry->dev    = inode->i_sb->s_dev;163		__entry->nid    = EROFS_I(inode)->nid;164		__entry->la	= map->m_la;165		__entry->llen	= map->m_llen;166		__entry->flags	= flags;167	),168 169	TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",170		  show_dev_nid(__entry),171		  __entry->la, __entry->llen,172		  __entry->flags ? show_map_flags(__entry->flags) : "NULL")173);174 175TRACE_EVENT(erofs_map_blocks_exit,176 177	TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,178		 unsigned int flags, int ret),179 180	TP_ARGS(inode, map, flags, ret),181 182	TP_STRUCT__entry(183		__field(	dev_t,		dev		)184		__field(	erofs_nid_t,	nid		)185		__field(        unsigned int,   flags           )186		__field(	erofs_off_t,	la		)187		__field(	erofs_off_t,	pa		)188		__field(	u64,		llen		)189		__field(	u64,		plen		)190		__field(        unsigned int,	mflags		)191		__field(	int,		ret		)192	),193 194	TP_fast_assign(195		__entry->dev    = inode->i_sb->s_dev;196		__entry->nid    = EROFS_I(inode)->nid;197		__entry->flags	= flags;198		__entry->la	= map->m_la;199		__entry->pa	= map->m_pa;200		__entry->llen	= map->m_llen;201		__entry->plen	= map->m_plen;202		__entry->mflags	= map->m_flags;203		__entry->ret	= ret;204	),205 206	TP_printk("dev = (%d,%d), nid = %llu, flags %s "207		  "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",208		  show_dev_nid(__entry),209		  __entry->flags ? show_map_flags(__entry->flags) : "NULL",210		  __entry->la, __entry->pa, __entry->llen, __entry->plen,211		  show_mflags(__entry->mflags), __entry->ret)212);213 214TRACE_EVENT(erofs_destroy_inode,215	TP_PROTO(struct inode *inode),216 217	TP_ARGS(inode),218 219	TP_STRUCT__entry(220		__field(	dev_t,		dev		)221		__field(	erofs_nid_t,	nid		)222	),223 224	TP_fast_assign(225		__entry->dev	= inode->i_sb->s_dev;226		__entry->nid	= EROFS_I(inode)->nid;227	),228 229	TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry))230);231 232#endif /* _TRACE_EROFS_H */233 234 /* This part must be outside protection */235#include <trace/define_trace.h>236