brintos

brintos / linux-shallow public Read only

0
0
Text · 58.6 KiB · 2851c82 Raw
2412 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM f2fs4 5#if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_F2FS_H7 8#include <linux/tracepoint.h>9#include <uapi/linux/f2fs.h>10 11#define show_dev(dev)		MAJOR(dev), MINOR(dev)12#define show_dev_ino(entry)	show_dev(entry->dev), (unsigned long)entry->ino13 14TRACE_DEFINE_ENUM(NODE);15TRACE_DEFINE_ENUM(DATA);16TRACE_DEFINE_ENUM(META);17TRACE_DEFINE_ENUM(META_FLUSH);18TRACE_DEFINE_ENUM(IPU);19TRACE_DEFINE_ENUM(OPU);20TRACE_DEFINE_ENUM(HOT);21TRACE_DEFINE_ENUM(WARM);22TRACE_DEFINE_ENUM(COLD);23TRACE_DEFINE_ENUM(CURSEG_HOT_DATA);24TRACE_DEFINE_ENUM(CURSEG_WARM_DATA);25TRACE_DEFINE_ENUM(CURSEG_COLD_DATA);26TRACE_DEFINE_ENUM(CURSEG_HOT_NODE);27TRACE_DEFINE_ENUM(CURSEG_WARM_NODE);28TRACE_DEFINE_ENUM(CURSEG_COLD_NODE);29TRACE_DEFINE_ENUM(NO_CHECK_TYPE);30TRACE_DEFINE_ENUM(GC_GREEDY);31TRACE_DEFINE_ENUM(GC_CB);32TRACE_DEFINE_ENUM(FG_GC);33TRACE_DEFINE_ENUM(BG_GC);34TRACE_DEFINE_ENUM(LFS);35TRACE_DEFINE_ENUM(SSR);36TRACE_DEFINE_ENUM(__REQ_RAHEAD);37TRACE_DEFINE_ENUM(__REQ_SYNC);38TRACE_DEFINE_ENUM(__REQ_IDLE);39TRACE_DEFINE_ENUM(__REQ_PREFLUSH);40TRACE_DEFINE_ENUM(__REQ_FUA);41TRACE_DEFINE_ENUM(__REQ_PRIO);42TRACE_DEFINE_ENUM(__REQ_META);43TRACE_DEFINE_ENUM(CP_UMOUNT);44TRACE_DEFINE_ENUM(CP_FASTBOOT);45TRACE_DEFINE_ENUM(CP_SYNC);46TRACE_DEFINE_ENUM(CP_RECOVERY);47TRACE_DEFINE_ENUM(CP_DISCARD);48TRACE_DEFINE_ENUM(CP_TRIMMED);49TRACE_DEFINE_ENUM(CP_PAUSE);50TRACE_DEFINE_ENUM(CP_RESIZE);51TRACE_DEFINE_ENUM(EX_READ);52TRACE_DEFINE_ENUM(EX_BLOCK_AGE);53 54#define show_block_type(type)						\55	__print_symbolic(type,						\56		{ NODE,		"NODE" },				\57		{ DATA,		"DATA" },				\58		{ META,		"META" },				\59		{ META_FLUSH,	"META_FLUSH" },				\60		{ IPU,		"IN-PLACE" },				\61		{ OPU,		"OUT-OF-PLACE" })62 63#define show_block_temp(temp)						\64	__print_symbolic(temp,						\65		{ HOT,		"HOT" },				\66		{ WARM,		"WARM" },				\67		{ COLD,		"COLD" })68 69#define F2FS_OP_FLAGS (REQ_RAHEAD | REQ_SYNC | REQ_META | REQ_PRIO |	\70			REQ_PREFLUSH | REQ_FUA)71#define F2FS_BIO_FLAG_MASK(t) (__force u32)((t) & F2FS_OP_FLAGS)72 73#define show_bio_type(op,op_flags)	show_bio_op(op),		\74						show_bio_op_flags(op_flags)75 76#define show_bio_op(op)		blk_op_str(op)77 78#define show_bio_op_flags(flags)					\79	__print_flags(F2FS_BIO_FLAG_MASK(flags), "|",			\80		{ (__force u32)REQ_RAHEAD,	"R" },			\81		{ (__force u32)REQ_SYNC,	"S" },			\82		{ (__force u32)REQ_META,	"M" },			\83		{ (__force u32)REQ_PRIO,	"P" },			\84		{ (__force u32)REQ_PREFLUSH,	"PF" },			\85		{ (__force u32)REQ_FUA,		"FUA" })86 87#define show_data_type(type)						\88	__print_symbolic(type,						\89		{ CURSEG_HOT_DATA, 	"Hot DATA" },			\90		{ CURSEG_WARM_DATA, 	"Warm DATA" },			\91		{ CURSEG_COLD_DATA, 	"Cold DATA" },			\92		{ CURSEG_HOT_NODE, 	"Hot NODE" },			\93		{ CURSEG_WARM_NODE, 	"Warm NODE" },			\94		{ CURSEG_COLD_NODE, 	"Cold NODE" },			\95		{ NO_CHECK_TYPE, 	"No TYPE" })96 97#define show_file_type(type)						\98	__print_symbolic(type,						\99		{ 0,		"FILE" },				\100		{ 1,		"DIR" })101 102#define show_gc_type(type)						\103	__print_symbolic(type,						\104		{ FG_GC,	"Foreground GC" },			\105		{ BG_GC,	"Background GC" })106 107#define show_alloc_mode(type)						\108	__print_symbolic(type,						\109		{ LFS,		"LFS-mode" },				\110		{ SSR,		"SSR-mode" },				\111		{ AT_SSR,	"AT_SSR-mode" })112 113#define show_victim_policy(type)					\114	__print_symbolic(type,						\115		{ GC_GREEDY,	"Greedy" },				\116		{ GC_CB,	"Cost-Benefit" },			\117		{ GC_AT,	"Age-threshold" })118 119#define show_cpreason(type)						\120	__print_flags(type, "|",					\121		{ CP_UMOUNT,	"Umount" },				\122		{ CP_FASTBOOT,	"Fastboot" },				\123		{ CP_SYNC,	"Sync" },				\124		{ CP_RECOVERY,	"Recovery" },				\125		{ CP_DISCARD,	"Discard" },				\126		{ CP_PAUSE,	"Pause" },				\127		{ CP_TRIMMED,	"Trimmed" },				\128		{ CP_RESIZE,	"Resize" })129 130#define show_fsync_cpreason(type)					\131	__print_symbolic(type,						\132		{ CP_NO_NEEDED,		"no needed" },			\133		{ CP_NON_REGULAR,	"non regular" },		\134		{ CP_COMPRESSED,	"compressed" },			\135		{ CP_HARDLINK,		"hardlink" },			\136		{ CP_SB_NEED_CP,	"sb needs cp" },		\137		{ CP_WRONG_PINO,	"wrong pino" },			\138		{ CP_NO_SPC_ROLL,	"no space roll forward" },	\139		{ CP_NODE_NEED_CP,	"node needs cp" },		\140		{ CP_FASTBOOT_MODE,	"fastboot mode" },		\141		{ CP_SPEC_LOG_NUM,	"log type is 2" },		\142		{ CP_RECOVER_DIR,	"dir needs recovery" },		\143		{ CP_XATTR_DIR,		"dir's xattr updated" })144 145#define show_shutdown_mode(type)					\146	__print_symbolic(type,						\147		{ F2FS_GOING_DOWN_FULLSYNC,	"full sync" },		\148		{ F2FS_GOING_DOWN_METASYNC,	"meta sync" },		\149		{ F2FS_GOING_DOWN_NOSYNC,	"no sync" },		\150		{ F2FS_GOING_DOWN_METAFLUSH,	"meta flush" },		\151		{ F2FS_GOING_DOWN_NEED_FSCK,	"need fsck" })152 153#define show_compress_algorithm(type)					\154	__print_symbolic(type,						\155		{ COMPRESS_LZO,		"LZO" },			\156		{ COMPRESS_LZ4,		"LZ4" },			\157		{ COMPRESS_ZSTD,	"ZSTD" },			\158		{ COMPRESS_LZORLE,	"LZO-RLE" })159 160#define show_extent_type(type)						\161	__print_symbolic(type,						\162		{ EX_READ,	"Read" },				\163		{ EX_BLOCK_AGE,	"Block Age" })164 165#define show_inode_type(x) \166	__print_symbolic(x, \167		{ S_IFLNK,		"symbolic" }, \168		{ S_IFREG,		"regular" }, \169		{ S_IFDIR,		"directory" }, \170		{ S_IFCHR,		"character" }, \171		{ S_IFBLK,		"block" }, \172		{ S_IFIFO,		"fifo" }, \173		{ S_IFSOCK,		"sock" })174 175#define S_ALL_PERM	(S_ISUID | S_ISGID | S_ISVTX |	\176			S_IRWXU | S_IRWXG | S_IRWXO)177 178struct f2fs_sb_info;179struct f2fs_io_info;180struct extent_info;181struct victim_sel_policy;182struct f2fs_map_blocks;183 184DECLARE_EVENT_CLASS(f2fs__inode,185 186	TP_PROTO(struct inode *inode),187 188	TP_ARGS(inode),189 190	TP_STRUCT__entry(191		__field(dev_t,	dev)192		__field(ino_t,	ino)193		__field(ino_t,	pino)194		__field(umode_t, mode)195		__field(loff_t,	size)196		__field(unsigned int, nlink)197		__field(blkcnt_t, blocks)198		__field(__u8,	advise)199	),200 201	TP_fast_assign(202		__entry->dev	= inode->i_sb->s_dev;203		__entry->ino	= inode->i_ino;204		__entry->pino	= F2FS_I(inode)->i_pino;205		__entry->mode	= inode->i_mode;206		__entry->nlink	= inode->i_nlink;207		__entry->size	= inode->i_size;208		__entry->blocks	= inode->i_blocks;209		__entry->advise	= F2FS_I(inode)->i_advise;210	),211 212	TP_printk("dev = (%d,%d), ino = %lu, pino = %lu, i_mode = 0x%hx, "213		"i_size = %lld, i_nlink = %u, i_blocks = %llu, i_advise = 0x%x",214		show_dev_ino(__entry),215		(unsigned long)__entry->pino,216		__entry->mode,217		__entry->size,218		(unsigned int)__entry->nlink,219		(unsigned long long)__entry->blocks,220		(unsigned char)__entry->advise)221);222 223DECLARE_EVENT_CLASS(f2fs__inode_exit,224 225	TP_PROTO(struct inode *inode, int ret),226 227	TP_ARGS(inode, ret),228 229	TP_STRUCT__entry(230		__field(dev_t,	dev)231		__field(ino_t,	ino)232		__field(umode_t, mode)233		__field(int,	ret)234	),235 236	TP_fast_assign(237		__entry->dev	= inode->i_sb->s_dev;238		__entry->ino	= inode->i_ino;239		__entry->mode	= inode->i_mode;240		__entry->ret	= ret;241	),242 243	TP_printk("dev = (%d,%d), ino = %lu, type: %s, mode = 0%o, ret = %d",244		show_dev_ino(__entry),245		show_inode_type(__entry->mode & S_IFMT),246		__entry->mode & S_ALL_PERM,247		__entry->ret)248);249 250DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,251 252	TP_PROTO(struct inode *inode),253 254	TP_ARGS(inode)255);256 257TRACE_EVENT(f2fs_sync_file_exit,258 259	TP_PROTO(struct inode *inode, int cp_reason, int datasync, int ret),260 261	TP_ARGS(inode, cp_reason, datasync, ret),262 263	TP_STRUCT__entry(264		__field(dev_t,	dev)265		__field(ino_t,	ino)266		__field(int,	cp_reason)267		__field(int,	datasync)268		__field(int,	ret)269	),270 271	TP_fast_assign(272		__entry->dev		= inode->i_sb->s_dev;273		__entry->ino		= inode->i_ino;274		__entry->cp_reason	= cp_reason;275		__entry->datasync	= datasync;276		__entry->ret		= ret;277	),278 279	TP_printk("dev = (%d,%d), ino = %lu, cp_reason: %s, "280		"datasync = %d, ret = %d",281		show_dev_ino(__entry),282		show_fsync_cpreason(__entry->cp_reason),283		__entry->datasync,284		__entry->ret)285);286 287TRACE_EVENT(f2fs_sync_fs,288 289	TP_PROTO(struct super_block *sb, int wait),290 291	TP_ARGS(sb, wait),292 293	TP_STRUCT__entry(294		__field(dev_t,	dev)295		__field(int,	dirty)296		__field(int,	wait)297	),298 299	TP_fast_assign(300		__entry->dev	= sb->s_dev;301		__entry->dirty	= is_sbi_flag_set(F2FS_SB(sb), SBI_IS_DIRTY);302		__entry->wait	= wait;303	),304 305	TP_printk("dev = (%d,%d), superblock is %s, wait = %d",306		show_dev(__entry->dev),307		__entry->dirty ? "dirty" : "not dirty",308		__entry->wait)309);310 311DEFINE_EVENT(f2fs__inode, f2fs_iget,312 313	TP_PROTO(struct inode *inode),314 315	TP_ARGS(inode)316);317 318DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,319 320	TP_PROTO(struct inode *inode, int ret),321 322	TP_ARGS(inode, ret)323);324 325DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,326 327	TP_PROTO(struct inode *inode),328 329	TP_ARGS(inode)330);331 332DEFINE_EVENT(f2fs__inode_exit, f2fs_new_inode,333 334	TP_PROTO(struct inode *inode, int ret),335 336	TP_ARGS(inode, ret)337);338 339TRACE_EVENT(f2fs_unlink_enter,340 341	TP_PROTO(struct inode *dir, struct dentry *dentry),342 343	TP_ARGS(dir, dentry),344 345	TP_STRUCT__entry(346		__field(dev_t,	dev)347		__field(ino_t,	ino)348		__field(loff_t,	size)349		__field(blkcnt_t, blocks)350		__string(name,  dentry->d_name.name)351	),352 353	TP_fast_assign(354		__entry->dev	= dir->i_sb->s_dev;355		__entry->ino	= dir->i_ino;356		__entry->size	= dir->i_size;357		__entry->blocks	= dir->i_blocks;358		__assign_str(name);359	),360 361	TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "362		"i_blocks = %llu, name = %s",363		show_dev_ino(__entry),364		__entry->size,365		(unsigned long long)__entry->blocks,366		__get_str(name))367);368 369DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,370 371	TP_PROTO(struct inode *inode, int ret),372 373	TP_ARGS(inode, ret)374);375 376DEFINE_EVENT(f2fs__inode_exit, f2fs_drop_inode,377 378	TP_PROTO(struct inode *inode, int ret),379 380	TP_ARGS(inode, ret)381);382 383DEFINE_EVENT(f2fs__inode, f2fs_truncate,384 385	TP_PROTO(struct inode *inode),386 387	TP_ARGS(inode)388);389 390TRACE_EVENT(f2fs_truncate_data_blocks_range,391 392	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs, int free),393 394	TP_ARGS(inode, nid,  ofs, free),395 396	TP_STRUCT__entry(397		__field(dev_t,	dev)398		__field(ino_t,	ino)399		__field(nid_t,	nid)400		__field(unsigned int,	ofs)401		__field(int,	free)402	),403 404	TP_fast_assign(405		__entry->dev	= inode->i_sb->s_dev;406		__entry->ino	= inode->i_ino;407		__entry->nid	= nid;408		__entry->ofs	= ofs;409		__entry->free	= free;410	),411 412	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, offset = %u, freed = %d",413		show_dev_ino(__entry),414		(unsigned int)__entry->nid,415		__entry->ofs,416		__entry->free)417);418 419DECLARE_EVENT_CLASS(f2fs__truncate_op,420 421	TP_PROTO(struct inode *inode, u64 from),422 423	TP_ARGS(inode, from),424 425	TP_STRUCT__entry(426		__field(dev_t,	dev)427		__field(ino_t,	ino)428		__field(loff_t,	size)429		__field(blkcnt_t, blocks)430		__field(u64,	from)431	),432 433	TP_fast_assign(434		__entry->dev	= inode->i_sb->s_dev;435		__entry->ino	= inode->i_ino;436		__entry->size	= inode->i_size;437		__entry->blocks	= inode->i_blocks;438		__entry->from	= from;439	),440 441	TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld, i_blocks = %llu, "442		"start file offset = %llu",443		show_dev_ino(__entry),444		__entry->size,445		(unsigned long long)__entry->blocks,446		(unsigned long long)__entry->from)447);448 449DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_blocks_enter,450 451	TP_PROTO(struct inode *inode, u64 from),452 453	TP_ARGS(inode, from)454);455 456DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_blocks_exit,457 458	TP_PROTO(struct inode *inode, int ret),459 460	TP_ARGS(inode, ret)461);462 463DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_inode_blocks_enter,464 465	TP_PROTO(struct inode *inode, u64 from),466 467	TP_ARGS(inode, from)468);469 470DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_inode_blocks_exit,471 472	TP_PROTO(struct inode *inode, int ret),473 474	TP_ARGS(inode, ret)475);476 477DECLARE_EVENT_CLASS(f2fs__truncate_node,478 479	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),480 481	TP_ARGS(inode, nid, blk_addr),482 483	TP_STRUCT__entry(484		__field(dev_t,	dev)485		__field(ino_t,	ino)486		__field(nid_t,	nid)487		__field(block_t,	blk_addr)488	),489 490	TP_fast_assign(491		__entry->dev		= inode->i_sb->s_dev;492		__entry->ino		= inode->i_ino;493		__entry->nid		= nid;494		__entry->blk_addr	= blk_addr;495	),496 497	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, block_address = 0x%llx",498		show_dev_ino(__entry),499		(unsigned int)__entry->nid,500		(unsigned long long)__entry->blk_addr)501);502 503DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_nodes_enter,504 505	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),506 507	TP_ARGS(inode, nid, blk_addr)508);509 510DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_nodes_exit,511 512	TP_PROTO(struct inode *inode, int ret),513 514	TP_ARGS(inode, ret)515);516 517DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_node,518 519	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),520 521	TP_ARGS(inode, nid, blk_addr)522);523 524TRACE_EVENT(f2fs_truncate_partial_nodes,525 526	TP_PROTO(struct inode *inode, nid_t *nid, int depth, int err),527 528	TP_ARGS(inode, nid, depth, err),529 530	TP_STRUCT__entry(531		__field(dev_t,	dev)532		__field(ino_t,	ino)533		__array(nid_t,	nid, 3)534		__field(int,	depth)535		__field(int,	err)536	),537 538	TP_fast_assign(539		__entry->dev	= inode->i_sb->s_dev;540		__entry->ino	= inode->i_ino;541		__entry->nid[0]	= nid[0];542		__entry->nid[1]	= nid[1];543		__entry->nid[2]	= nid[2];544		__entry->depth	= depth;545		__entry->err	= err;546	),547 548	TP_printk("dev = (%d,%d), ino = %lu, "549		"nid[0] = %u, nid[1] = %u, nid[2] = %u, depth = %d, err = %d",550		show_dev_ino(__entry),551		(unsigned int)__entry->nid[0],552		(unsigned int)__entry->nid[1],553		(unsigned int)__entry->nid[2],554		__entry->depth,555		__entry->err)556);557 558TRACE_EVENT(f2fs_file_write_iter,559 560	TP_PROTO(struct inode *inode, loff_t offset, size_t length,561		 ssize_t ret),562 563	TP_ARGS(inode, offset, length, ret),564 565	TP_STRUCT__entry(566		__field(dev_t,	dev)567		__field(ino_t,	ino)568		__field(loff_t, offset)569		__field(size_t, length)570		__field(ssize_t, ret)571	),572 573	TP_fast_assign(574		__entry->dev	= inode->i_sb->s_dev;575		__entry->ino	= inode->i_ino;576		__entry->offset	= offset;577		__entry->length	= length;578		__entry->ret	= ret;579	),580 581	TP_printk("dev = (%d,%d), ino = %lu, "582		"offset = %lld, length = %zu, written(err) = %zd",583		show_dev_ino(__entry),584		__entry->offset,585		__entry->length,586		__entry->ret)587);588 589TRACE_EVENT(f2fs_map_blocks,590	TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,591		 int ret),592 593	TP_ARGS(inode, map, flag, ret),594 595	TP_STRUCT__entry(596		__field(dev_t,	dev)597		__field(ino_t,	ino)598		__field(block_t,	m_lblk)599		__field(block_t,	m_pblk)600		__field(unsigned int,	m_len)601		__field(unsigned int,	m_flags)602		__field(int,	m_seg_type)603		__field(bool,	m_may_create)604		__field(bool,	m_multidev_dio)605		__field(int,	flag)606		__field(int,	ret)607	),608 609	TP_fast_assign(610		__entry->dev		= map->m_bdev->bd_dev;611		__entry->ino		= inode->i_ino;612		__entry->m_lblk		= map->m_lblk;613		__entry->m_pblk		= map->m_pblk;614		__entry->m_len		= map->m_len;615		__entry->m_flags	= map->m_flags;616		__entry->m_seg_type	= map->m_seg_type;617		__entry->m_may_create	= map->m_may_create;618		__entry->m_multidev_dio	= map->m_multidev_dio;619		__entry->flag		= flag;620		__entry->ret		= ret;621	),622 623	TP_printk("dev = (%d,%d), ino = %lu, file offset = %llu, "624		"start blkaddr = 0x%llx, len = 0x%llx, flags = %u, "625		"seg_type = %d, may_create = %d, multidevice = %d, "626		"flag = %d, err = %d",627		show_dev_ino(__entry),628		(unsigned long long)__entry->m_lblk,629		(unsigned long long)__entry->m_pblk,630		(unsigned long long)__entry->m_len,631		__entry->m_flags,632		__entry->m_seg_type,633		__entry->m_may_create,634		__entry->m_multidev_dio,635		__entry->flag,636		__entry->ret)637);638 639TRACE_EVENT(f2fs_background_gc,640 641	TP_PROTO(struct super_block *sb, unsigned int wait_ms,642			unsigned int prefree, unsigned int free),643 644	TP_ARGS(sb, wait_ms, prefree, free),645 646	TP_STRUCT__entry(647		__field(dev_t,	dev)648		__field(unsigned int,	wait_ms)649		__field(unsigned int,	prefree)650		__field(unsigned int,	free)651	),652 653	TP_fast_assign(654		__entry->dev		= sb->s_dev;655		__entry->wait_ms	= wait_ms;656		__entry->prefree	= prefree;657		__entry->free		= free;658	),659 660	TP_printk("dev = (%d,%d), wait_ms = %u, prefree = %u, free = %u",661		show_dev(__entry->dev),662		__entry->wait_ms,663		__entry->prefree,664		__entry->free)665);666 667TRACE_EVENT(f2fs_gc_begin,668 669	TP_PROTO(struct super_block *sb, int gc_type, bool no_bg_gc,670			unsigned int nr_free_secs,671			long long dirty_nodes, long long dirty_dents,672			long long dirty_imeta, unsigned int free_sec,673			unsigned int free_seg, int reserved_seg,674			unsigned int prefree_seg),675 676	TP_ARGS(sb, gc_type, no_bg_gc, nr_free_secs, dirty_nodes,677		dirty_dents, dirty_imeta,678		free_sec, free_seg, reserved_seg, prefree_seg),679 680	TP_STRUCT__entry(681		__field(dev_t,		dev)682		__field(int,		gc_type)683		__field(bool,		no_bg_gc)684		__field(unsigned int,	nr_free_secs)685		__field(long long,	dirty_nodes)686		__field(long long,	dirty_dents)687		__field(long long,	dirty_imeta)688		__field(unsigned int,	free_sec)689		__field(unsigned int,	free_seg)690		__field(int,		reserved_seg)691		__field(unsigned int,	prefree_seg)692	),693 694	TP_fast_assign(695		__entry->dev		= sb->s_dev;696		__entry->gc_type	= gc_type;697		__entry->no_bg_gc	= no_bg_gc;698		__entry->nr_free_secs	= nr_free_secs;699		__entry->dirty_nodes	= dirty_nodes;700		__entry->dirty_dents	= dirty_dents;701		__entry->dirty_imeta	= dirty_imeta;702		__entry->free_sec	= free_sec;703		__entry->free_seg	= free_seg;704		__entry->reserved_seg	= reserved_seg;705		__entry->prefree_seg	= prefree_seg;706	),707 708	TP_printk("dev = (%d,%d), gc_type = %s, no_background_GC = %d, nr_free_secs = %u, "709		"nodes = %lld, dents = %lld, imeta = %lld, free_sec:%u, free_seg:%u, "710		"rsv_seg:%d, prefree_seg:%u",711		show_dev(__entry->dev),712		show_gc_type(__entry->gc_type),713		(__entry->gc_type == BG_GC) ? __entry->no_bg_gc : -1,714		__entry->nr_free_secs,715		__entry->dirty_nodes,716		__entry->dirty_dents,717		__entry->dirty_imeta,718		__entry->free_sec,719		__entry->free_seg,720		__entry->reserved_seg,721		__entry->prefree_seg)722);723 724TRACE_EVENT(f2fs_gc_end,725 726	TP_PROTO(struct super_block *sb, int ret, int seg_freed,727			int sec_freed, long long dirty_nodes,728			long long dirty_dents, long long dirty_imeta,729			unsigned int free_sec, unsigned int free_seg,730			int reserved_seg, unsigned int prefree_seg),731 732	TP_ARGS(sb, ret, seg_freed, sec_freed, dirty_nodes, dirty_dents,733		dirty_imeta, free_sec, free_seg, reserved_seg, prefree_seg),734 735	TP_STRUCT__entry(736		__field(dev_t,		dev)737		__field(int,		ret)738		__field(int,		seg_freed)739		__field(int,		sec_freed)740		__field(long long,	dirty_nodes)741		__field(long long,	dirty_dents)742		__field(long long,	dirty_imeta)743		__field(unsigned int,	free_sec)744		__field(unsigned int,	free_seg)745		__field(int,		reserved_seg)746		__field(unsigned int,	prefree_seg)747	),748 749	TP_fast_assign(750		__entry->dev		= sb->s_dev;751		__entry->ret		= ret;752		__entry->seg_freed	= seg_freed;753		__entry->sec_freed	= sec_freed;754		__entry->dirty_nodes	= dirty_nodes;755		__entry->dirty_dents	= dirty_dents;756		__entry->dirty_imeta	= dirty_imeta;757		__entry->free_sec	= free_sec;758		__entry->free_seg	= free_seg;759		__entry->reserved_seg	= reserved_seg;760		__entry->prefree_seg	= prefree_seg;761	),762 763	TP_printk("dev = (%d,%d), ret = %d, seg_freed = %d, sec_freed = %d, "764		"nodes = %lld, dents = %lld, imeta = %lld, free_sec:%u, "765		"free_seg:%u, rsv_seg:%d, prefree_seg:%u",766		show_dev(__entry->dev),767		__entry->ret,768		__entry->seg_freed,769		__entry->sec_freed,770		__entry->dirty_nodes,771		__entry->dirty_dents,772		__entry->dirty_imeta,773		__entry->free_sec,774		__entry->free_seg,775		__entry->reserved_seg,776		__entry->prefree_seg)777);778 779TRACE_EVENT(f2fs_get_victim,780 781	TP_PROTO(struct super_block *sb, int type, int gc_type,782			struct victim_sel_policy *p, unsigned int pre_victim,783			unsigned int prefree, unsigned int free),784 785	TP_ARGS(sb, type, gc_type, p, pre_victim, prefree, free),786 787	TP_STRUCT__entry(788		__field(dev_t,	dev)789		__field(int,	type)790		__field(int,	gc_type)791		__field(int,	alloc_mode)792		__field(int,	gc_mode)793		__field(unsigned int,	victim)794		__field(unsigned int,	cost)795		__field(unsigned int,	ofs_unit)796		__field(unsigned int,	pre_victim)797		__field(unsigned int,	prefree)798		__field(unsigned int,	free)799	),800 801	TP_fast_assign(802		__entry->dev		= sb->s_dev;803		__entry->type		= type;804		__entry->gc_type	= gc_type;805		__entry->alloc_mode	= p->alloc_mode;806		__entry->gc_mode	= p->gc_mode;807		__entry->victim		= p->min_segno;808		__entry->cost		= p->min_cost;809		__entry->ofs_unit	= p->ofs_unit;810		__entry->pre_victim	= pre_victim;811		__entry->prefree	= prefree;812		__entry->free		= free;813	),814 815	TP_printk("dev = (%d,%d), type = %s, policy = (%s, %s, %s), "816		"victim = %u, cost = %u, ofs_unit = %u, "817		"pre_victim_secno = %d, prefree = %u, free = %u",818		show_dev(__entry->dev),819		show_data_type(__entry->type),820		show_gc_type(__entry->gc_type),821		show_alloc_mode(__entry->alloc_mode),822		show_victim_policy(__entry->gc_mode),823		__entry->victim,824		__entry->cost,825		__entry->ofs_unit,826		(int)__entry->pre_victim,827		__entry->prefree,828		__entry->free)829);830 831TRACE_EVENT(f2fs_lookup_start,832 833	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),834 835	TP_ARGS(dir, dentry, flags),836 837	TP_STRUCT__entry(838		__field(dev_t,	dev)839		__field(ino_t,	ino)840		__string(name,	dentry->d_name.name)841		__field(unsigned int, flags)842	),843 844	TP_fast_assign(845		__entry->dev	= dir->i_sb->s_dev;846		__entry->ino	= dir->i_ino;847		__assign_str(name);848		__entry->flags	= flags;849	),850 851	TP_printk("dev = (%d,%d), pino = %lu, name:%s, flags:%u",852		show_dev_ino(__entry),853		__get_str(name),854		__entry->flags)855);856 857TRACE_EVENT(f2fs_lookup_end,858 859	TP_PROTO(struct inode *dir, struct dentry *dentry, nid_t ino,860		int err),861 862	TP_ARGS(dir, dentry, ino, err),863 864	TP_STRUCT__entry(865		__field(dev_t,	dev)866		__field(ino_t,	ino)867		__string(name,	dentry->d_name.name)868		__field(nid_t,	cino)869		__field(int,	err)870	),871 872	TP_fast_assign(873		__entry->dev	= dir->i_sb->s_dev;874		__entry->ino	= dir->i_ino;875		__assign_str(name);876		__entry->cino	= ino;877		__entry->err	= err;878	),879 880	TP_printk("dev = (%d,%d), pino = %lu, name:%s, ino:%u, err:%d",881		show_dev_ino(__entry),882		__get_str(name),883		__entry->cino,884		__entry->err)885);886 887TRACE_EVENT(f2fs_rename_start,888 889	TP_PROTO(struct inode *old_dir, struct dentry *old_dentry,890			struct inode *new_dir, struct dentry *new_dentry,891			unsigned int flags),892 893	TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, flags),894 895	TP_STRUCT__entry(896		__field(dev_t,		dev)897		__field(ino_t,		ino)898		__string(old_name,	old_dentry->d_name.name)899		__field(ino_t,		new_pino)900		__string(new_name,	new_dentry->d_name.name)901		__field(unsigned int,	flags)902	),903 904	TP_fast_assign(905		__entry->dev		= old_dir->i_sb->s_dev;906		__entry->ino		= old_dir->i_ino;907		__assign_str(old_name);908		__entry->new_pino	= new_dir->i_ino;909		__assign_str(new_name);910		__entry->flags		= flags;911	),912 913	TP_printk("dev = (%d,%d), old_dir = %lu, old_name: %s, "914		"new_dir = %lu, new_name: %s, flags = %u",915		show_dev_ino(__entry),916		__get_str(old_name),917		__entry->new_pino,918		__get_str(new_name),919		__entry->flags)920);921 922TRACE_EVENT(f2fs_rename_end,923 924	TP_PROTO(struct dentry *old_dentry, struct dentry *new_dentry,925			unsigned int flags, int ret),926 927	TP_ARGS(old_dentry, new_dentry, flags, ret),928 929	TP_STRUCT__entry(930		__field(dev_t,		dev)931		__field(ino_t,		ino)932		__string(old_name,	old_dentry->d_name.name)933		__string(new_name,	new_dentry->d_name.name)934		__field(unsigned int,	flags)935		__field(int,		ret)936	),937 938	TP_fast_assign(939		__entry->dev		= old_dentry->d_sb->s_dev;940		__entry->ino		= old_dentry->d_inode->i_ino;941		__assign_str(old_name);942		__assign_str(new_name);943		__entry->flags		= flags;944		__entry->ret		= ret;945	),946 947	TP_printk("dev = (%d,%d), ino = %lu, old_name: %s, "948		"new_name: %s, flags = %u, ret = %d",949		show_dev_ino(__entry),950		__get_str(old_name),951		__get_str(new_name),952		__entry->flags,953		__entry->ret)954);955 956TRACE_EVENT(f2fs_readdir,957 958	TP_PROTO(struct inode *dir, loff_t start_pos, loff_t end_pos, int err),959 960	TP_ARGS(dir, start_pos, end_pos, err),961 962	TP_STRUCT__entry(963		__field(dev_t,	dev)964		__field(ino_t,	ino)965		__field(loff_t,	start)966		__field(loff_t,	end)967		__field(int,	err)968	),969 970	TP_fast_assign(971		__entry->dev	= dir->i_sb->s_dev;972		__entry->ino	= dir->i_ino;973		__entry->start	= start_pos;974		__entry->end	= end_pos;975		__entry->err	= err;976	),977 978	TP_printk("dev = (%d,%d), ino = %lu, start_pos:%llu, end_pos:%llu, err:%d",979		show_dev_ino(__entry),980		__entry->start,981		__entry->end,982		__entry->err)983);984 985TRACE_EVENT(f2fs_fallocate,986 987	TP_PROTO(struct inode *inode, int mode,988				loff_t offset, loff_t len, int ret),989 990	TP_ARGS(inode, mode, offset, len, ret),991 992	TP_STRUCT__entry(993		__field(dev_t,	dev)994		__field(ino_t,	ino)995		__field(int,	mode)996		__field(loff_t,	offset)997		__field(loff_t,	len)998		__field(loff_t, size)999		__field(blkcnt_t, blocks)1000		__field(int,	ret)1001	),1002 1003	TP_fast_assign(1004		__entry->dev	= inode->i_sb->s_dev;1005		__entry->ino	= inode->i_ino;1006		__entry->mode	= mode;1007		__entry->offset	= offset;1008		__entry->len	= len;1009		__entry->size	= inode->i_size;1010		__entry->blocks = inode->i_blocks;1011		__entry->ret	= ret;1012	),1013 1014	TP_printk("dev = (%d,%d), ino = %lu, mode = %x, offset = %lld, "1015		"len = %lld,  i_size = %lld, i_blocks = %llu, ret = %d",1016		show_dev_ino(__entry),1017		__entry->mode,1018		(unsigned long long)__entry->offset,1019		(unsigned long long)__entry->len,1020		(unsigned long long)__entry->size,1021		(unsigned long long)__entry->blocks,1022		__entry->ret)1023);1024 1025TRACE_EVENT(f2fs_direct_IO_enter,1026 1027	TP_PROTO(struct inode *inode, struct kiocb *iocb, long len, int rw),1028 1029	TP_ARGS(inode, iocb, len, rw),1030 1031	TP_STRUCT__entry(1032		__field(dev_t,	dev)1033		__field(ino_t,	ino)1034		__field(loff_t,	ki_pos)1035		__field(int,	ki_flags)1036		__field(u16,	ki_ioprio)1037		__field(unsigned long,	len)1038		__field(int,	rw)1039	),1040 1041	TP_fast_assign(1042		__entry->dev		= inode->i_sb->s_dev;1043		__entry->ino		= inode->i_ino;1044		__entry->ki_pos		= iocb->ki_pos;1045		__entry->ki_flags	= iocb->ki_flags;1046		__entry->ki_ioprio	= iocb->ki_ioprio;1047		__entry->len		= len;1048		__entry->rw		= rw;1049	),1050 1051	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu ki_flags = %x ki_ioprio = %x rw = %d",1052		show_dev_ino(__entry),1053		__entry->ki_pos,1054		__entry->len,1055		__entry->ki_flags,1056		__entry->ki_ioprio,1057		__entry->rw)1058);1059 1060TRACE_EVENT(f2fs_direct_IO_exit,1061 1062	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,1063		 int rw, int ret),1064 1065	TP_ARGS(inode, offset, len, rw, ret),1066 1067	TP_STRUCT__entry(1068		__field(dev_t,	dev)1069		__field(ino_t,	ino)1070		__field(loff_t,	pos)1071		__field(unsigned long,	len)1072		__field(int,	rw)1073		__field(int,	ret)1074	),1075 1076	TP_fast_assign(1077		__entry->dev	= inode->i_sb->s_dev;1078		__entry->ino	= inode->i_ino;1079		__entry->pos	= offset;1080		__entry->len	= len;1081		__entry->rw	= rw;1082		__entry->ret	= ret;1083	),1084 1085	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu "1086		"rw = %d ret = %d",1087		show_dev_ino(__entry),1088		__entry->pos,1089		__entry->len,1090		__entry->rw,1091		__entry->ret)1092);1093 1094TRACE_EVENT(f2fs_reserve_new_blocks,1095 1096	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs_in_node,1097							blkcnt_t count),1098 1099	TP_ARGS(inode, nid, ofs_in_node, count),1100 1101	TP_STRUCT__entry(1102		__field(dev_t,	dev)1103		__field(nid_t, nid)1104		__field(unsigned int, ofs_in_node)1105		__field(blkcnt_t, count)1106	),1107 1108	TP_fast_assign(1109		__entry->dev	= inode->i_sb->s_dev;1110		__entry->nid	= nid;1111		__entry->ofs_in_node = ofs_in_node;1112		__entry->count = count;1113	),1114 1115	TP_printk("dev = (%d,%d), nid = %u, ofs_in_node = %u, count = %llu",1116		show_dev(__entry->dev),1117		(unsigned int)__entry->nid,1118		__entry->ofs_in_node,1119		(unsigned long long)__entry->count)1120);1121 1122DECLARE_EVENT_CLASS(f2fs__submit_page_bio,1123 1124	TP_PROTO(struct page *page, struct f2fs_io_info *fio),1125 1126	TP_ARGS(page, fio),1127 1128	TP_STRUCT__entry(1129		__field(dev_t, dev)1130		__field(ino_t, ino)1131		__field(pgoff_t, index)1132		__field(block_t, old_blkaddr)1133		__field(block_t, new_blkaddr)1134		__field(enum req_op, op)1135		__field(blk_opf_t, op_flags)1136		__field(int, temp)1137		__field(int, type)1138	),1139 1140	TP_fast_assign(1141		__entry->dev		= page_file_mapping(page)->host->i_sb->s_dev;1142		__entry->ino		= page_file_mapping(page)->host->i_ino;1143		__entry->index		= page->index;1144		__entry->old_blkaddr	= fio->old_blkaddr;1145		__entry->new_blkaddr	= fio->new_blkaddr;1146		__entry->op		= fio->op;1147		__entry->op_flags	= fio->op_flags;1148		__entry->temp		= fio->temp;1149		__entry->type		= fio->type;1150	),1151 1152	TP_printk("dev = (%d,%d), ino = %lu, page_index = 0x%lx, "1153		"oldaddr = 0x%llx, newaddr = 0x%llx, rw = %s(%s), type = %s_%s",1154		show_dev_ino(__entry),1155		(unsigned long)__entry->index,1156		(unsigned long long)__entry->old_blkaddr,1157		(unsigned long long)__entry->new_blkaddr,1158		show_bio_type(__entry->op, __entry->op_flags),1159		show_block_temp(__entry->temp),1160		show_block_type(__entry->type))1161);1162 1163DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_bio,1164 1165	TP_PROTO(struct page *page, struct f2fs_io_info *fio),1166 1167	TP_ARGS(page, fio),1168 1169	TP_CONDITION(page->mapping)1170);1171 1172DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_write,1173 1174	TP_PROTO(struct page *page, struct f2fs_io_info *fio),1175 1176	TP_ARGS(page, fio),1177 1178	TP_CONDITION(page->mapping)1179);1180 1181DECLARE_EVENT_CLASS(f2fs__bio,1182 1183	TP_PROTO(struct super_block *sb, int type, struct bio *bio),1184 1185	TP_ARGS(sb, type, bio),1186 1187	TP_STRUCT__entry(1188		__field(dev_t,	dev)1189		__field(dev_t,	target)1190		__field(enum req_op,	op)1191		__field(blk_opf_t,	op_flags)1192		__field(int,	type)1193		__field(sector_t,	sector)1194		__field(unsigned int,	size)1195	),1196 1197	TP_fast_assign(1198		__entry->dev		= sb->s_dev;1199		__entry->target		= bio_dev(bio);1200		__entry->op		= bio_op(bio);1201		__entry->op_flags	= bio->bi_opf;1202		__entry->type		= type;1203		__entry->sector		= bio->bi_iter.bi_sector;1204		__entry->size		= bio->bi_iter.bi_size;1205	),1206 1207	TP_printk("dev = (%d,%d)/(%d,%d), rw = %s(%s), %s, sector = %lld, size = %u",1208		show_dev(__entry->target),1209		show_dev(__entry->dev),1210		show_bio_type(__entry->op, __entry->op_flags),1211		show_block_type(__entry->type),1212		(unsigned long long)__entry->sector,1213		__entry->size)1214);1215 1216DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_prepare_write_bio,1217 1218	TP_PROTO(struct super_block *sb, int type, struct bio *bio),1219 1220	TP_ARGS(sb, type, bio),1221 1222	TP_CONDITION(bio)1223);1224 1225DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_prepare_read_bio,1226 1227	TP_PROTO(struct super_block *sb, int type, struct bio *bio),1228 1229	TP_ARGS(sb, type, bio),1230 1231	TP_CONDITION(bio)1232);1233 1234DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_submit_read_bio,1235 1236	TP_PROTO(struct super_block *sb, int type, struct bio *bio),1237 1238	TP_ARGS(sb, type, bio),1239 1240	TP_CONDITION(bio)1241);1242 1243DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_submit_write_bio,1244 1245	TP_PROTO(struct super_block *sb, int type, struct bio *bio),1246 1247	TP_ARGS(sb, type, bio),1248 1249	TP_CONDITION(bio)1250);1251 1252TRACE_EVENT(f2fs_write_begin,1253 1254	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),1255 1256	TP_ARGS(inode, pos, len),1257 1258	TP_STRUCT__entry(1259		__field(dev_t,	dev)1260		__field(ino_t,	ino)1261		__field(loff_t,	pos)1262		__field(unsigned int, len)1263	),1264 1265	TP_fast_assign(1266		__entry->dev	= inode->i_sb->s_dev;1267		__entry->ino	= inode->i_ino;1268		__entry->pos	= pos;1269		__entry->len	= len;1270	),1271 1272	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u",1273		show_dev_ino(__entry),1274		(unsigned long long)__entry->pos,1275		__entry->len)1276);1277 1278TRACE_EVENT(f2fs_write_end,1279 1280	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,1281				unsigned int copied),1282 1283	TP_ARGS(inode, pos, len, copied),1284 1285	TP_STRUCT__entry(1286		__field(dev_t,	dev)1287		__field(ino_t,	ino)1288		__field(loff_t,	pos)1289		__field(unsigned int, len)1290		__field(unsigned int, copied)1291	),1292 1293	TP_fast_assign(1294		__entry->dev	= inode->i_sb->s_dev;1295		__entry->ino	= inode->i_ino;1296		__entry->pos	= pos;1297		__entry->len	= len;1298		__entry->copied	= copied;1299	),1300 1301	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u, copied = %u",1302		show_dev_ino(__entry),1303		(unsigned long long)__entry->pos,1304		__entry->len,1305		__entry->copied)1306);1307 1308DECLARE_EVENT_CLASS(f2fs__folio,1309 1310	TP_PROTO(struct folio *folio, int type),1311 1312	TP_ARGS(folio, type),1313 1314	TP_STRUCT__entry(1315		__field(dev_t,	dev)1316		__field(ino_t,	ino)1317		__field(int, type)1318		__field(int, dir)1319		__field(pgoff_t, index)1320		__field(int, dirty)1321		__field(int, uptodate)1322	),1323 1324	TP_fast_assign(1325		__entry->dev	= folio_file_mapping(folio)->host->i_sb->s_dev;1326		__entry->ino	= folio_file_mapping(folio)->host->i_ino;1327		__entry->type	= type;1328		__entry->dir	=1329			S_ISDIR(folio_file_mapping(folio)->host->i_mode);1330		__entry->index	= folio_index(folio);1331		__entry->dirty	= folio_test_dirty(folio);1332		__entry->uptodate = folio_test_uptodate(folio);1333	),1334 1335	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, index = %lu, "1336		"dirty = %d, uptodate = %d",1337		show_dev_ino(__entry),1338		show_block_type(__entry->type),1339		show_file_type(__entry->dir),1340		(unsigned long)__entry->index,1341		__entry->dirty,1342		__entry->uptodate)1343);1344 1345DEFINE_EVENT(f2fs__folio, f2fs_writepage,1346 1347	TP_PROTO(struct folio *folio, int type),1348 1349	TP_ARGS(folio, type)1350);1351 1352DEFINE_EVENT(f2fs__folio, f2fs_do_write_data_page,1353 1354	TP_PROTO(struct folio *folio, int type),1355 1356	TP_ARGS(folio, type)1357);1358 1359DEFINE_EVENT(f2fs__folio, f2fs_readpage,1360 1361	TP_PROTO(struct folio *folio, int type),1362 1363	TP_ARGS(folio, type)1364);1365 1366DEFINE_EVENT(f2fs__folio, f2fs_set_page_dirty,1367 1368	TP_PROTO(struct folio *folio, int type),1369 1370	TP_ARGS(folio, type)1371);1372 1373TRACE_EVENT(f2fs_replace_atomic_write_block,1374 1375	TP_PROTO(struct inode *inode, struct inode *cow_inode, pgoff_t index,1376			block_t old_addr, block_t new_addr, bool recovery),1377 1378	TP_ARGS(inode, cow_inode, index, old_addr, new_addr, recovery),1379 1380	TP_STRUCT__entry(1381		__field(dev_t,	dev)1382		__field(ino_t,	ino)1383		__field(ino_t,	cow_ino)1384		__field(pgoff_t, index)1385		__field(block_t, old_addr)1386		__field(block_t, new_addr)1387		__field(bool, recovery)1388	),1389 1390	TP_fast_assign(1391		__entry->dev		= inode->i_sb->s_dev;1392		__entry->ino		= inode->i_ino;1393		__entry->cow_ino	= cow_inode->i_ino;1394		__entry->index		= index;1395		__entry->old_addr	= old_addr;1396		__entry->new_addr	= new_addr;1397		__entry->recovery	= recovery;1398	),1399 1400	TP_printk("dev = (%d,%d), ino = %lu, cow_ino = %lu, index = %lu, "1401			"old_addr = 0x%llx, new_addr = 0x%llx, recovery = %d",1402		show_dev_ino(__entry),1403		__entry->cow_ino,1404		(unsigned long)__entry->index,1405		(unsigned long long)__entry->old_addr,1406		(unsigned long long)__entry->new_addr,1407		__entry->recovery)1408);1409 1410DECLARE_EVENT_CLASS(f2fs_mmap,1411 1412	TP_PROTO(struct inode *inode, pgoff_t index,1413			vm_flags_t flags, vm_fault_t ret),1414 1415	TP_ARGS(inode, index, flags, ret),1416 1417	TP_STRUCT__entry(1418		__field(dev_t,	dev)1419		__field(ino_t,	ino)1420		__field(pgoff_t, index)1421		__field(vm_flags_t, flags)1422		__field(vm_fault_t, ret)1423	),1424 1425	TP_fast_assign(1426		__entry->dev	= inode->i_sb->s_dev;1427		__entry->ino	= inode->i_ino;1428		__entry->index	= index;1429		__entry->flags	= flags;1430		__entry->ret	= ret;1431	),1432 1433	TP_printk("dev = (%d,%d), ino = %lu, index = %lu, flags: %s, ret: %s",1434		show_dev_ino(__entry),1435		(unsigned long)__entry->index,1436		__print_flags(__entry->flags, "|", FAULT_FLAG_TRACE),1437		__print_flags(__entry->ret, "|", VM_FAULT_RESULT_TRACE))1438);1439 1440DEFINE_EVENT(f2fs_mmap, f2fs_filemap_fault,1441 1442	TP_PROTO(struct inode *inode, pgoff_t index,1443			vm_flags_t flags, vm_fault_t ret),1444 1445	TP_ARGS(inode, index, flags, ret)1446);1447 1448DEFINE_EVENT(f2fs_mmap, f2fs_vm_page_mkwrite,1449 1450	TP_PROTO(struct inode *inode, pgoff_t index,1451			vm_flags_t flags, vm_fault_t ret),1452 1453	TP_ARGS(inode, index, flags, ret)1454);1455 1456TRACE_EVENT(f2fs_writepages,1457 1458	TP_PROTO(struct inode *inode, struct writeback_control *wbc, int type),1459 1460	TP_ARGS(inode, wbc, type),1461 1462	TP_STRUCT__entry(1463		__field(dev_t,	dev)1464		__field(ino_t,	ino)1465		__field(int,	type)1466		__field(int,	dir)1467		__field(long,	nr_to_write)1468		__field(long,	pages_skipped)1469		__field(loff_t,	range_start)1470		__field(loff_t,	range_end)1471		__field(pgoff_t, writeback_index)1472		__field(int,	sync_mode)1473		__field(char,	for_kupdate)1474		__field(char,	for_background)1475		__field(char,	tagged_writepages)1476		__field(char,	for_reclaim)1477		__field(char,	range_cyclic)1478		__field(char,	for_sync)1479	),1480 1481	TP_fast_assign(1482		__entry->dev		= inode->i_sb->s_dev;1483		__entry->ino		= inode->i_ino;1484		__entry->type		= type;1485		__entry->dir		= S_ISDIR(inode->i_mode);1486		__entry->nr_to_write	= wbc->nr_to_write;1487		__entry->pages_skipped	= wbc->pages_skipped;1488		__entry->range_start	= wbc->range_start;1489		__entry->range_end	= wbc->range_end;1490		__entry->writeback_index = inode->i_mapping->writeback_index;1491		__entry->sync_mode	= wbc->sync_mode;1492		__entry->for_kupdate	= wbc->for_kupdate;1493		__entry->for_background	= wbc->for_background;1494		__entry->tagged_writepages	= wbc->tagged_writepages;1495		__entry->for_reclaim	= wbc->for_reclaim;1496		__entry->range_cyclic	= wbc->range_cyclic;1497		__entry->for_sync	= wbc->for_sync;1498	),1499 1500	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, nr_to_write %ld, "1501		"skipped %ld, start %lld, end %lld, wb_idx %lu, sync_mode %d, "1502		"kupdate %u background %u tagged %u reclaim %u cyclic %u sync %u",1503		show_dev_ino(__entry),1504		show_block_type(__entry->type),1505		show_file_type(__entry->dir),1506		__entry->nr_to_write,1507		__entry->pages_skipped,1508		__entry->range_start,1509		__entry->range_end,1510		(unsigned long)__entry->writeback_index,1511		__entry->sync_mode,1512		__entry->for_kupdate,1513		__entry->for_background,1514		__entry->tagged_writepages,1515		__entry->for_reclaim,1516		__entry->range_cyclic,1517		__entry->for_sync)1518);1519 1520TRACE_EVENT(f2fs_readpages,1521 1522	TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage),1523 1524	TP_ARGS(inode, start, nrpage),1525 1526	TP_STRUCT__entry(1527		__field(dev_t,	dev)1528		__field(ino_t,	ino)1529		__field(pgoff_t,	start)1530		__field(unsigned int,	nrpage)1531	),1532 1533	TP_fast_assign(1534		__entry->dev	= inode->i_sb->s_dev;1535		__entry->ino	= inode->i_ino;1536		__entry->start	= start;1537		__entry->nrpage	= nrpage;1538	),1539 1540	TP_printk("dev = (%d,%d), ino = %lu, start = %lu nrpage = %u",1541		show_dev_ino(__entry),1542		(unsigned long)__entry->start,1543		__entry->nrpage)1544);1545 1546TRACE_EVENT(f2fs_write_checkpoint,1547 1548	TP_PROTO(struct super_block *sb, int reason, const char *msg),1549 1550	TP_ARGS(sb, reason, msg),1551 1552	TP_STRUCT__entry(1553		__field(dev_t,	dev)1554		__field(int,	reason)1555		__string(dest_msg, msg)1556	),1557 1558	TP_fast_assign(1559		__entry->dev		= sb->s_dev;1560		__entry->reason		= reason;1561		__assign_str(dest_msg);1562	),1563 1564	TP_printk("dev = (%d,%d), checkpoint for %s, state = %s",1565		show_dev(__entry->dev),1566		show_cpreason(__entry->reason),1567		__get_str(dest_msg))1568);1569 1570DECLARE_EVENT_CLASS(f2fs_discard,1571 1572	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),1573 1574	TP_ARGS(dev, blkstart, blklen),1575 1576	TP_STRUCT__entry(1577		__field(dev_t,	dev)1578		__field(block_t, blkstart)1579		__field(block_t, blklen)1580	),1581 1582	TP_fast_assign(1583		__entry->dev	= dev->bd_dev;1584		__entry->blkstart = blkstart;1585		__entry->blklen = blklen;1586	),1587 1588	TP_printk("dev = (%d,%d), blkstart = 0x%llx, blklen = 0x%llx",1589		show_dev(__entry->dev),1590		(unsigned long long)__entry->blkstart,1591		(unsigned long long)__entry->blklen)1592);1593 1594DEFINE_EVENT(f2fs_discard, f2fs_queue_discard,1595 1596	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),1597 1598	TP_ARGS(dev, blkstart, blklen)1599);1600 1601DEFINE_EVENT(f2fs_discard, f2fs_issue_discard,1602 1603	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),1604 1605	TP_ARGS(dev, blkstart, blklen)1606);1607 1608DEFINE_EVENT(f2fs_discard, f2fs_remove_discard,1609 1610	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),1611 1612	TP_ARGS(dev, blkstart, blklen)1613);1614 1615DECLARE_EVENT_CLASS(f2fs_reset_zone,1616 1617	TP_PROTO(struct block_device *dev, block_t blkstart),1618 1619	TP_ARGS(dev, blkstart),1620 1621	TP_STRUCT__entry(1622		__field(dev_t,	dev)1623		__field(block_t, blkstart)1624	),1625 1626	TP_fast_assign(1627		__entry->dev	= dev->bd_dev;1628		__entry->blkstart = blkstart;1629	),1630 1631	TP_printk("dev = (%d,%d), zone at block = 0x%llx",1632		show_dev(__entry->dev),1633		(unsigned long long)__entry->blkstart)1634);1635 1636DEFINE_EVENT(f2fs_reset_zone, f2fs_queue_reset_zone,1637 1638	TP_PROTO(struct block_device *dev, block_t blkstart),1639 1640	TP_ARGS(dev, blkstart)1641);1642 1643DEFINE_EVENT(f2fs_reset_zone, f2fs_issue_reset_zone,1644 1645	TP_PROTO(struct block_device *dev, block_t blkstart),1646 1647	TP_ARGS(dev, blkstart)1648);1649 1650TRACE_EVENT(f2fs_issue_flush,1651 1652	TP_PROTO(struct block_device *dev, unsigned int nobarrier,1653				unsigned int flush_merge, int ret),1654 1655	TP_ARGS(dev, nobarrier, flush_merge, ret),1656 1657	TP_STRUCT__entry(1658		__field(dev_t,	dev)1659		__field(unsigned int, nobarrier)1660		__field(unsigned int, flush_merge)1661		__field(int,  ret)1662	),1663 1664	TP_fast_assign(1665		__entry->dev	= dev->bd_dev;1666		__entry->nobarrier = nobarrier;1667		__entry->flush_merge = flush_merge;1668		__entry->ret = ret;1669	),1670 1671	TP_printk("dev = (%d,%d), %s %s, ret = %d",1672		show_dev(__entry->dev),1673		__entry->nobarrier ? "skip (nobarrier)" : "issue",1674		__entry->flush_merge ? " with flush_merge" : "",1675		__entry->ret)1676);1677 1678TRACE_EVENT(f2fs_lookup_extent_tree_start,1679 1680	TP_PROTO(struct inode *inode, unsigned int pgofs, enum extent_type type),1681 1682	TP_ARGS(inode, pgofs, type),1683 1684	TP_STRUCT__entry(1685		__field(dev_t,	dev)1686		__field(ino_t,	ino)1687		__field(unsigned int, pgofs)1688		__field(enum extent_type, type)1689	),1690 1691	TP_fast_assign(1692		__entry->dev = inode->i_sb->s_dev;1693		__entry->ino = inode->i_ino;1694		__entry->pgofs = pgofs;1695		__entry->type = type;1696	),1697 1698	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, type = %s",1699		show_dev_ino(__entry),1700		__entry->pgofs,1701		show_extent_type(__entry->type))1702);1703 1704TRACE_EVENT_CONDITION(f2fs_lookup_read_extent_tree_end,1705 1706	TP_PROTO(struct inode *inode, unsigned int pgofs,1707						struct extent_info *ei),1708 1709	TP_ARGS(inode, pgofs, ei),1710 1711	TP_CONDITION(ei),1712 1713	TP_STRUCT__entry(1714		__field(dev_t,	dev)1715		__field(ino_t,	ino)1716		__field(unsigned int, pgofs)1717		__field(unsigned int, fofs)1718		__field(unsigned int, len)1719		__field(u32, blk)1720	),1721 1722	TP_fast_assign(1723		__entry->dev = inode->i_sb->s_dev;1724		__entry->ino = inode->i_ino;1725		__entry->pgofs = pgofs;1726		__entry->fofs = ei->fofs;1727		__entry->len = ei->len;1728		__entry->blk = ei->blk;1729	),1730 1731	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "1732		"read_ext_info(fofs: %u, len: %u, blk: %u)",1733		show_dev_ino(__entry),1734		__entry->pgofs,1735		__entry->fofs,1736		__entry->len,1737		__entry->blk)1738);1739 1740TRACE_EVENT_CONDITION(f2fs_lookup_age_extent_tree_end,1741 1742	TP_PROTO(struct inode *inode, unsigned int pgofs,1743						struct extent_info *ei),1744 1745	TP_ARGS(inode, pgofs, ei),1746 1747	TP_CONDITION(ei),1748 1749	TP_STRUCT__entry(1750		__field(dev_t,	dev)1751		__field(ino_t,	ino)1752		__field(unsigned int, pgofs)1753		__field(unsigned int, fofs)1754		__field(unsigned int, len)1755		__field(unsigned long long, age)1756		__field(unsigned long long, blocks)1757	),1758 1759	TP_fast_assign(1760		__entry->dev = inode->i_sb->s_dev;1761		__entry->ino = inode->i_ino;1762		__entry->pgofs = pgofs;1763		__entry->fofs = ei->fofs;1764		__entry->len = ei->len;1765		__entry->age = ei->age;1766		__entry->blocks = ei->last_blocks;1767	),1768 1769	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "1770		"age_ext_info(fofs: %u, len: %u, age: %llu, blocks: %llu)",1771		show_dev_ino(__entry),1772		__entry->pgofs,1773		__entry->fofs,1774		__entry->len,1775		__entry->age,1776		__entry->blocks)1777);1778 1779TRACE_EVENT(f2fs_update_read_extent_tree_range,1780 1781	TP_PROTO(struct inode *inode, unsigned int pgofs, unsigned int len,1782						block_t blkaddr,1783						unsigned int c_len),1784 1785	TP_ARGS(inode, pgofs, len, blkaddr, c_len),1786 1787	TP_STRUCT__entry(1788		__field(dev_t,	dev)1789		__field(ino_t,	ino)1790		__field(unsigned int, pgofs)1791		__field(u32, blk)1792		__field(unsigned int, len)1793		__field(unsigned int, c_len)1794	),1795 1796	TP_fast_assign(1797		__entry->dev = inode->i_sb->s_dev;1798		__entry->ino = inode->i_ino;1799		__entry->pgofs = pgofs;1800		__entry->len = len;1801		__entry->blk = blkaddr;1802		__entry->c_len = c_len;1803	),1804 1805	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "1806				"len = %u, blkaddr = %u, c_len = %u",1807		show_dev_ino(__entry),1808		__entry->pgofs,1809		__entry->len,1810		__entry->blk,1811		__entry->c_len)1812);1813 1814TRACE_EVENT(f2fs_update_age_extent_tree_range,1815 1816	TP_PROTO(struct inode *inode, unsigned int pgofs, unsigned int len,1817					unsigned long long age,1818					unsigned long long last_blks),1819 1820	TP_ARGS(inode, pgofs, len, age, last_blks),1821 1822	TP_STRUCT__entry(1823		__field(dev_t,	dev)1824		__field(ino_t,	ino)1825		__field(unsigned int, pgofs)1826		__field(unsigned int, len)1827		__field(unsigned long long, age)1828		__field(unsigned long long, blocks)1829	),1830 1831	TP_fast_assign(1832		__entry->dev = inode->i_sb->s_dev;1833		__entry->ino = inode->i_ino;1834		__entry->pgofs = pgofs;1835		__entry->len = len;1836		__entry->age = age;1837		__entry->blocks = last_blks;1838	),1839 1840	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "1841				"len = %u, age = %llu, blocks = %llu",1842		show_dev_ino(__entry),1843		__entry->pgofs,1844		__entry->len,1845		__entry->age,1846		__entry->blocks)1847);1848 1849TRACE_EVENT(f2fs_shrink_extent_tree,1850 1851	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt,1852			unsigned int tree_cnt, enum extent_type type),1853 1854	TP_ARGS(sbi, node_cnt, tree_cnt, type),1855 1856	TP_STRUCT__entry(1857		__field(dev_t,	dev)1858		__field(unsigned int, node_cnt)1859		__field(unsigned int, tree_cnt)1860		__field(enum extent_type, type)1861	),1862 1863	TP_fast_assign(1864		__entry->dev = sbi->sb->s_dev;1865		__entry->node_cnt = node_cnt;1866		__entry->tree_cnt = tree_cnt;1867		__entry->type = type;1868	),1869 1870	TP_printk("dev = (%d,%d), shrunk: node_cnt = %u, tree_cnt = %u, type = %s",1871		show_dev(__entry->dev),1872		__entry->node_cnt,1873		__entry->tree_cnt,1874		show_extent_type(__entry->type))1875);1876 1877TRACE_EVENT(f2fs_destroy_extent_tree,1878 1879	TP_PROTO(struct inode *inode, unsigned int node_cnt,1880				enum extent_type type),1881 1882	TP_ARGS(inode, node_cnt, type),1883 1884	TP_STRUCT__entry(1885		__field(dev_t,	dev)1886		__field(ino_t,	ino)1887		__field(unsigned int, node_cnt)1888		__field(enum extent_type, type)1889	),1890 1891	TP_fast_assign(1892		__entry->dev = inode->i_sb->s_dev;1893		__entry->ino = inode->i_ino;1894		__entry->node_cnt = node_cnt;1895		__entry->type = type;1896	),1897 1898	TP_printk("dev = (%d,%d), ino = %lu, destroyed: node_cnt = %u, type = %s",1899		show_dev_ino(__entry),1900		__entry->node_cnt,1901		show_extent_type(__entry->type))1902);1903 1904DECLARE_EVENT_CLASS(f2fs_sync_dirty_inodes,1905 1906	TP_PROTO(struct super_block *sb, int type, s64 count),1907 1908	TP_ARGS(sb, type, count),1909 1910	TP_STRUCT__entry(1911		__field(dev_t, dev)1912		__field(int, type)1913		__field(s64, count)1914	),1915 1916	TP_fast_assign(1917		__entry->dev	= sb->s_dev;1918		__entry->type	= type;1919		__entry->count	= count;1920	),1921 1922	TP_printk("dev = (%d,%d), %s, dirty count = %lld",1923		show_dev(__entry->dev),1924		show_file_type(__entry->type),1925		__entry->count)1926);1927 1928DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_enter,1929 1930	TP_PROTO(struct super_block *sb, int type, s64 count),1931 1932	TP_ARGS(sb, type, count)1933);1934 1935DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_exit,1936 1937	TP_PROTO(struct super_block *sb, int type, s64 count),1938 1939	TP_ARGS(sb, type, count)1940);1941 1942TRACE_EVENT(f2fs_shutdown,1943 1944	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int mode, int ret),1945 1946	TP_ARGS(sbi, mode, ret),1947 1948	TP_STRUCT__entry(1949		__field(dev_t,	dev)1950		__field(unsigned int, mode)1951		__field(int, ret)1952	),1953 1954	TP_fast_assign(1955		__entry->dev = sbi->sb->s_dev;1956		__entry->mode = mode;1957		__entry->ret = ret;1958	),1959 1960	TP_printk("dev = (%d,%d), mode: %s, ret:%d",1961		show_dev(__entry->dev),1962		show_shutdown_mode(__entry->mode),1963		__entry->ret)1964);1965 1966DECLARE_EVENT_CLASS(f2fs_zip_start,1967 1968	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,1969			unsigned int cluster_size, unsigned char algtype),1970 1971	TP_ARGS(inode, cluster_idx, cluster_size, algtype),1972 1973	TP_STRUCT__entry(1974		__field(dev_t,	dev)1975		__field(ino_t,	ino)1976		__field(pgoff_t, idx)1977		__field(unsigned int, size)1978		__field(unsigned int, algtype)1979	),1980 1981	TP_fast_assign(1982		__entry->dev = inode->i_sb->s_dev;1983		__entry->ino = inode->i_ino;1984		__entry->idx = cluster_idx;1985		__entry->size = cluster_size;1986		__entry->algtype = algtype;1987	),1988 1989	TP_printk("dev = (%d,%d), ino = %lu, cluster_idx:%lu, "1990		"cluster_size = %u, algorithm = %s",1991		show_dev_ino(__entry),1992		__entry->idx,1993		__entry->size,1994		show_compress_algorithm(__entry->algtype))1995);1996 1997DECLARE_EVENT_CLASS(f2fs_zip_end,1998 1999	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,2000			unsigned int compressed_size, int ret),2001 2002	TP_ARGS(inode, cluster_idx, compressed_size, ret),2003 2004	TP_STRUCT__entry(2005		__field(dev_t,	dev)2006		__field(ino_t,	ino)2007		__field(pgoff_t, idx)2008		__field(unsigned int, size)2009		__field(unsigned int, ret)2010	),2011 2012	TP_fast_assign(2013		__entry->dev = inode->i_sb->s_dev;2014		__entry->ino = inode->i_ino;2015		__entry->idx = cluster_idx;2016		__entry->size = compressed_size;2017		__entry->ret = ret;2018	),2019 2020	TP_printk("dev = (%d,%d), ino = %lu, cluster_idx:%lu, "2021		"compressed_size = %u, ret = %d",2022		show_dev_ino(__entry),2023		__entry->idx,2024		__entry->size,2025		__entry->ret)2026);2027 2028DEFINE_EVENT(f2fs_zip_start, f2fs_compress_pages_start,2029 2030	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,2031		unsigned int cluster_size, unsigned char algtype),2032 2033	TP_ARGS(inode, cluster_idx, cluster_size, algtype)2034);2035 2036DEFINE_EVENT(f2fs_zip_start, f2fs_decompress_pages_start,2037 2038	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,2039		unsigned int cluster_size, unsigned char algtype),2040 2041	TP_ARGS(inode, cluster_idx, cluster_size, algtype)2042);2043 2044DEFINE_EVENT(f2fs_zip_end, f2fs_compress_pages_end,2045 2046	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,2047			unsigned int compressed_size, int ret),2048 2049	TP_ARGS(inode, cluster_idx, compressed_size, ret)2050);2051 2052DEFINE_EVENT(f2fs_zip_end, f2fs_decompress_pages_end,2053 2054	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,2055			unsigned int compressed_size, int ret),2056 2057	TP_ARGS(inode, cluster_idx, compressed_size, ret)2058);2059 2060#ifdef CONFIG_F2FS_IOSTAT2061TRACE_EVENT(f2fs_iostat,2062 2063	TP_PROTO(struct f2fs_sb_info *sbi, unsigned long long *iostat),2064 2065	TP_ARGS(sbi, iostat),2066 2067	TP_STRUCT__entry(2068		__field(dev_t,	dev)2069		__field(unsigned long long,	app_dio)2070		__field(unsigned long long,	app_bio)2071		__field(unsigned long long,	app_wio)2072		__field(unsigned long long,	app_mio)2073		__field(unsigned long long,	app_bcdio)2074		__field(unsigned long long,	app_mcdio)2075		__field(unsigned long long,	fs_dio)2076		__field(unsigned long long,	fs_cdio)2077		__field(unsigned long long,	fs_nio)2078		__field(unsigned long long,	fs_mio)2079		__field(unsigned long long,	fs_gc_dio)2080		__field(unsigned long long,	fs_gc_nio)2081		__field(unsigned long long,	fs_cp_dio)2082		__field(unsigned long long,	fs_cp_nio)2083		__field(unsigned long long,	fs_cp_mio)2084		__field(unsigned long long,	app_drio)2085		__field(unsigned long long,	app_brio)2086		__field(unsigned long long,	app_rio)2087		__field(unsigned long long,	app_mrio)2088		__field(unsigned long long,	app_bcrio)2089		__field(unsigned long long,	app_mcrio)2090		__field(unsigned long long,	fs_drio)2091		__field(unsigned long long,	fs_gdrio)2092		__field(unsigned long long,	fs_cdrio)2093		__field(unsigned long long,	fs_nrio)2094		__field(unsigned long long,	fs_mrio)2095		__field(unsigned long long,	fs_discard)2096		__field(unsigned long long,	fs_reset_zone)2097	),2098 2099	TP_fast_assign(2100		__entry->dev		= sbi->sb->s_dev;2101		__entry->app_dio	= iostat[APP_DIRECT_IO];2102		__entry->app_bio	= iostat[APP_BUFFERED_IO];2103		__entry->app_wio	= iostat[APP_WRITE_IO];2104		__entry->app_mio	= iostat[APP_MAPPED_IO];2105		__entry->app_bcdio	= iostat[APP_BUFFERED_CDATA_IO];2106		__entry->app_mcdio	= iostat[APP_MAPPED_CDATA_IO];2107		__entry->fs_dio		= iostat[FS_DATA_IO];2108		__entry->fs_cdio	= iostat[FS_CDATA_IO];2109		__entry->fs_nio		= iostat[FS_NODE_IO];2110		__entry->fs_mio		= iostat[FS_META_IO];2111		__entry->fs_gc_dio	= iostat[FS_GC_DATA_IO];2112		__entry->fs_gc_nio	= iostat[FS_GC_NODE_IO];2113		__entry->fs_cp_dio	= iostat[FS_CP_DATA_IO];2114		__entry->fs_cp_nio	= iostat[FS_CP_NODE_IO];2115		__entry->fs_cp_mio	= iostat[FS_CP_META_IO];2116		__entry->app_drio	= iostat[APP_DIRECT_READ_IO];2117		__entry->app_brio	= iostat[APP_BUFFERED_READ_IO];2118		__entry->app_rio	= iostat[APP_READ_IO];2119		__entry->app_mrio	= iostat[APP_MAPPED_READ_IO];2120		__entry->app_bcrio	= iostat[APP_BUFFERED_CDATA_READ_IO];2121		__entry->app_mcrio	= iostat[APP_MAPPED_CDATA_READ_IO];2122		__entry->fs_drio	= iostat[FS_DATA_READ_IO];2123		__entry->fs_gdrio	= iostat[FS_GDATA_READ_IO];2124		__entry->fs_cdrio	= iostat[FS_CDATA_READ_IO];2125		__entry->fs_nrio	= iostat[FS_NODE_READ_IO];2126		__entry->fs_mrio	= iostat[FS_META_READ_IO];2127		__entry->fs_discard	= iostat[FS_DISCARD_IO];2128		__entry->fs_reset_zone	= iostat[FS_ZONE_RESET_IO];2129	),2130 2131	TP_printk("dev = (%d,%d), "2132		"app [write=%llu (direct=%llu, buffered=%llu), mapped=%llu, "2133		"compr(buffered=%llu, mapped=%llu)], "2134		"fs [data=%llu, cdata=%llu, node=%llu, meta=%llu, discard=%llu, "2135		"reset_zone=%llu], "2136		"gc [data=%llu, node=%llu], "2137		"cp [data=%llu, node=%llu, meta=%llu], "2138		"app [read=%llu (direct=%llu, buffered=%llu), mapped=%llu], "2139		"compr(buffered=%llu, mapped=%llu)], "2140		"fs [data=%llu, (gc_data=%llu, cdata=%llu), "2141		"node=%llu, meta=%llu]",2142		show_dev(__entry->dev), __entry->app_wio, __entry->app_dio,2143		__entry->app_bio, __entry->app_mio, __entry->app_bcdio,2144		__entry->app_mcdio, __entry->fs_dio, __entry->fs_cdio,2145		__entry->fs_nio, __entry->fs_mio, __entry->fs_discard,2146		__entry->fs_reset_zone,2147		__entry->fs_gc_dio, __entry->fs_gc_nio, __entry->fs_cp_dio,2148		__entry->fs_cp_nio, __entry->fs_cp_mio,2149		__entry->app_rio, __entry->app_drio, __entry->app_brio,2150		__entry->app_mrio, __entry->app_bcrio, __entry->app_mcrio,2151		__entry->fs_drio, __entry->fs_gdrio,2152		__entry->fs_cdrio, __entry->fs_nrio, __entry->fs_mrio)2153);2154 2155#ifndef __F2FS_IOSTAT_LATENCY_TYPE2156#define __F2FS_IOSTAT_LATENCY_TYPE2157struct f2fs_iostat_latency {2158	unsigned int peak_lat;2159	unsigned int avg_lat;2160	unsigned int cnt;2161};2162#endif /* __F2FS_IOSTAT_LATENCY_TYPE */2163 2164TRACE_EVENT(f2fs_iostat_latency,2165 2166	TP_PROTO(struct f2fs_sb_info *sbi, struct f2fs_iostat_latency (*iostat_lat)[NR_PAGE_TYPE]),2167 2168	TP_ARGS(sbi, iostat_lat),2169 2170	TP_STRUCT__entry(2171		__field(dev_t,	dev)2172		__field(unsigned int,	d_rd_peak)2173		__field(unsigned int,	d_rd_avg)2174		__field(unsigned int,	d_rd_cnt)2175		__field(unsigned int,	n_rd_peak)2176		__field(unsigned int,	n_rd_avg)2177		__field(unsigned int,	n_rd_cnt)2178		__field(unsigned int,	m_rd_peak)2179		__field(unsigned int,	m_rd_avg)2180		__field(unsigned int,	m_rd_cnt)2181		__field(unsigned int,	d_wr_s_peak)2182		__field(unsigned int,	d_wr_s_avg)2183		__field(unsigned int,	d_wr_s_cnt)2184		__field(unsigned int,	n_wr_s_peak)2185		__field(unsigned int,	n_wr_s_avg)2186		__field(unsigned int,	n_wr_s_cnt)2187		__field(unsigned int,	m_wr_s_peak)2188		__field(unsigned int,	m_wr_s_avg)2189		__field(unsigned int,	m_wr_s_cnt)2190		__field(unsigned int,	d_wr_as_peak)2191		__field(unsigned int,	d_wr_as_avg)2192		__field(unsigned int,	d_wr_as_cnt)2193		__field(unsigned int,	n_wr_as_peak)2194		__field(unsigned int,	n_wr_as_avg)2195		__field(unsigned int,	n_wr_as_cnt)2196		__field(unsigned int,	m_wr_as_peak)2197		__field(unsigned int,	m_wr_as_avg)2198		__field(unsigned int,	m_wr_as_cnt)2199	),2200 2201	TP_fast_assign(2202		__entry->dev		= sbi->sb->s_dev;2203		__entry->d_rd_peak	= iostat_lat[READ_IO][DATA].peak_lat;2204		__entry->d_rd_avg	= iostat_lat[READ_IO][DATA].avg_lat;2205		__entry->d_rd_cnt	= iostat_lat[READ_IO][DATA].cnt;2206		__entry->n_rd_peak	= iostat_lat[READ_IO][NODE].peak_lat;2207		__entry->n_rd_avg	= iostat_lat[READ_IO][NODE].avg_lat;2208		__entry->n_rd_cnt	= iostat_lat[READ_IO][NODE].cnt;2209		__entry->m_rd_peak	= iostat_lat[READ_IO][META].peak_lat;2210		__entry->m_rd_avg	= iostat_lat[READ_IO][META].avg_lat;2211		__entry->m_rd_cnt	= iostat_lat[READ_IO][META].cnt;2212		__entry->d_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][DATA].peak_lat;2213		__entry->d_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][DATA].avg_lat;2214		__entry->d_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][DATA].cnt;2215		__entry->n_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][NODE].peak_lat;2216		__entry->n_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][NODE].avg_lat;2217		__entry->n_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][NODE].cnt;2218		__entry->m_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][META].peak_lat;2219		__entry->m_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][META].avg_lat;2220		__entry->m_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][META].cnt;2221		__entry->d_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][DATA].peak_lat;2222		__entry->d_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][DATA].avg_lat;2223		__entry->d_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][DATA].cnt;2224		__entry->n_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][NODE].peak_lat;2225		__entry->n_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][NODE].avg_lat;2226		__entry->n_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][NODE].cnt;2227		__entry->m_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][META].peak_lat;2228		__entry->m_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][META].avg_lat;2229		__entry->m_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][META].cnt;2230	),2231 2232	TP_printk("dev = (%d,%d), "2233		"iotype [peak lat.(ms)/avg lat.(ms)/count], "2234		"rd_data [%u/%u/%u], rd_node [%u/%u/%u], rd_meta [%u/%u/%u], "2235		"wr_sync_data [%u/%u/%u], wr_sync_node [%u/%u/%u], "2236		"wr_sync_meta [%u/%u/%u], wr_async_data [%u/%u/%u], "2237		"wr_async_node [%u/%u/%u], wr_async_meta [%u/%u/%u]",2238		show_dev(__entry->dev),2239		__entry->d_rd_peak, __entry->d_rd_avg, __entry->d_rd_cnt,2240		__entry->n_rd_peak, __entry->n_rd_avg, __entry->n_rd_cnt,2241		__entry->m_rd_peak, __entry->m_rd_avg, __entry->m_rd_cnt,2242		__entry->d_wr_s_peak, __entry->d_wr_s_avg, __entry->d_wr_s_cnt,2243		__entry->n_wr_s_peak, __entry->n_wr_s_avg, __entry->n_wr_s_cnt,2244		__entry->m_wr_s_peak, __entry->m_wr_s_avg, __entry->m_wr_s_cnt,2245		__entry->d_wr_as_peak, __entry->d_wr_as_avg, __entry->d_wr_as_cnt,2246		__entry->n_wr_as_peak, __entry->n_wr_as_avg, __entry->n_wr_as_cnt,2247		__entry->m_wr_as_peak, __entry->m_wr_as_avg, __entry->m_wr_as_cnt)2248);2249#endif2250 2251TRACE_EVENT(f2fs_bmap,2252 2253	TP_PROTO(struct inode *inode, sector_t lblock, sector_t pblock),2254 2255	TP_ARGS(inode, lblock, pblock),2256 2257	TP_STRUCT__entry(2258		__field(dev_t, dev)2259		__field(ino_t, ino)2260		__field(sector_t, lblock)2261		__field(sector_t, pblock)2262	),2263 2264	TP_fast_assign(2265		__entry->dev		= inode->i_sb->s_dev;2266		__entry->ino		= inode->i_ino;2267		__entry->lblock		= lblock;2268		__entry->pblock		= pblock;2269	),2270 2271	TP_printk("dev = (%d,%d), ino = %lu, lblock:%lld, pblock:%lld",2272		show_dev_ino(__entry),2273		(unsigned long long)__entry->lblock,2274		(unsigned long long)__entry->pblock)2275);2276 2277TRACE_EVENT(f2fs_fiemap,2278 2279	TP_PROTO(struct inode *inode, sector_t lblock, sector_t pblock,2280		unsigned long long len, unsigned int flags, int ret),2281 2282	TP_ARGS(inode, lblock, pblock, len, flags, ret),2283 2284	TP_STRUCT__entry(2285		__field(dev_t, dev)2286		__field(ino_t, ino)2287		__field(sector_t, lblock)2288		__field(sector_t, pblock)2289		__field(unsigned long long, len)2290		__field(unsigned int, flags)2291		__field(int, ret)2292	),2293 2294	TP_fast_assign(2295		__entry->dev		= inode->i_sb->s_dev;2296		__entry->ino		= inode->i_ino;2297		__entry->lblock		= lblock;2298		__entry->pblock		= pblock;2299		__entry->len		= len;2300		__entry->flags		= flags;2301		__entry->ret		= ret;2302	),2303 2304	TP_printk("dev = (%d,%d), ino = %lu, lblock:%lld, pblock:%lld, "2305		"len:%llu, flags:%u, ret:%d",2306		show_dev_ino(__entry),2307		(unsigned long long)__entry->lblock,2308		(unsigned long long)__entry->pblock,2309		__entry->len,2310		__entry->flags,2311		__entry->ret)2312);2313 2314DECLARE_EVENT_CLASS(f2fs__rw_start,2315 2316	TP_PROTO(struct inode *inode, loff_t offset, int bytes,2317			pid_t pid, char *pathname, char *command),2318 2319	TP_ARGS(inode, offset, bytes, pid, pathname, command),2320 2321	TP_STRUCT__entry(2322		__string(pathbuf, pathname)2323		__field(loff_t, offset)2324		__field(int, bytes)2325		__field(loff_t, i_size)2326		__string(cmdline, command)2327		__field(pid_t, pid)2328		__field(ino_t, ino)2329	),2330 2331	TP_fast_assign(2332		/*2333		 * Replace the spaces in filenames and cmdlines2334		 * because this screws up the tooling that parses2335		 * the traces.2336		 */2337		__assign_str(pathbuf);2338		(void)strreplace(__get_str(pathbuf), ' ', '_');2339		__entry->offset = offset;2340		__entry->bytes = bytes;2341		__entry->i_size = i_size_read(inode);2342		__assign_str(cmdline);2343		(void)strreplace(__get_str(cmdline), ' ', '_');2344		__entry->pid = pid;2345		__entry->ino = inode->i_ino;2346	),2347 2348	TP_printk("entry_name %s, offset %llu, bytes %d, cmdline %s,"2349		" pid %d, i_size %llu, ino %lu",2350		__get_str(pathbuf), __entry->offset, __entry->bytes,2351		__get_str(cmdline), __entry->pid, __entry->i_size,2352		(unsigned long) __entry->ino)2353);2354 2355DECLARE_EVENT_CLASS(f2fs__rw_end,2356 2357	TP_PROTO(struct inode *inode, loff_t offset, int bytes),2358 2359	TP_ARGS(inode, offset, bytes),2360 2361	TP_STRUCT__entry(2362		__field(ino_t,	ino)2363		__field(loff_t,	offset)2364		__field(int,	bytes)2365	),2366 2367	TP_fast_assign(2368		__entry->ino		= inode->i_ino;2369		__entry->offset		= offset;2370		__entry->bytes		= bytes;2371	),2372 2373	TP_printk("ino %lu, offset %llu, bytes %d",2374		(unsigned long) __entry->ino,2375		__entry->offset, __entry->bytes)2376);2377 2378DEFINE_EVENT(f2fs__rw_start, f2fs_dataread_start,2379 2380	TP_PROTO(struct inode *inode, loff_t offset, int bytes,2381		pid_t pid, char *pathname, char *command),2382 2383	TP_ARGS(inode, offset, bytes, pid, pathname, command)2384);2385 2386DEFINE_EVENT(f2fs__rw_end, f2fs_dataread_end,2387 2388	TP_PROTO(struct inode *inode, loff_t offset, int bytes),2389 2390	TP_ARGS(inode, offset, bytes)2391);2392 2393DEFINE_EVENT(f2fs__rw_start, f2fs_datawrite_start,2394 2395	TP_PROTO(struct inode *inode, loff_t offset, int bytes,2396		pid_t pid, char *pathname, char *command),2397 2398	TP_ARGS(inode, offset, bytes, pid, pathname, command)2399);2400 2401DEFINE_EVENT(f2fs__rw_end, f2fs_datawrite_end,2402 2403	TP_PROTO(struct inode *inode, loff_t offset, int bytes),2404 2405	TP_ARGS(inode, offset, bytes)2406);2407 2408#endif /* _TRACE_F2FS_H */2409 2410 /* This part must be outside protection */2411#include <trace/define_trace.h>2412