Linux Audio

Check our new training course

Loading...
v6.13.7
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#undef TRACE_SYSTEM
   3#define TRACE_SYSTEM f2fs
   4
   5#if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)
   6#define _TRACE_F2FS_H
   7
   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->ino
  13
  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_IOSTAT
2061TRACE_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_TYPE
2156#define __F2FS_IOSTAT_LATENCY_TYPE
2157struct 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#endif
2250
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 cmdlines
2334		 * because this screws up the tooling that parses
2335		 * 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>
v5.14.15
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#undef TRACE_SYSTEM
   3#define TRACE_SYSTEM f2fs
   4
   5#if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)
   6#define _TRACE_F2FS_H
   7
   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->ino
  13
  14TRACE_DEFINE_ENUM(NODE);
  15TRACE_DEFINE_ENUM(DATA);
  16TRACE_DEFINE_ENUM(META);
  17TRACE_DEFINE_ENUM(META_FLUSH);
  18TRACE_DEFINE_ENUM(INMEM);
  19TRACE_DEFINE_ENUM(INMEM_DROP);
  20TRACE_DEFINE_ENUM(INMEM_INVALIDATE);
  21TRACE_DEFINE_ENUM(INMEM_REVOKE);
  22TRACE_DEFINE_ENUM(IPU);
  23TRACE_DEFINE_ENUM(OPU);
  24TRACE_DEFINE_ENUM(HOT);
  25TRACE_DEFINE_ENUM(WARM);
  26TRACE_DEFINE_ENUM(COLD);
  27TRACE_DEFINE_ENUM(CURSEG_HOT_DATA);
  28TRACE_DEFINE_ENUM(CURSEG_WARM_DATA);
  29TRACE_DEFINE_ENUM(CURSEG_COLD_DATA);
  30TRACE_DEFINE_ENUM(CURSEG_HOT_NODE);
  31TRACE_DEFINE_ENUM(CURSEG_WARM_NODE);
  32TRACE_DEFINE_ENUM(CURSEG_COLD_NODE);
  33TRACE_DEFINE_ENUM(NO_CHECK_TYPE);
  34TRACE_DEFINE_ENUM(GC_GREEDY);
  35TRACE_DEFINE_ENUM(GC_CB);
  36TRACE_DEFINE_ENUM(FG_GC);
  37TRACE_DEFINE_ENUM(BG_GC);
  38TRACE_DEFINE_ENUM(LFS);
  39TRACE_DEFINE_ENUM(SSR);
  40TRACE_DEFINE_ENUM(__REQ_RAHEAD);
  41TRACE_DEFINE_ENUM(__REQ_SYNC);
  42TRACE_DEFINE_ENUM(__REQ_IDLE);
  43TRACE_DEFINE_ENUM(__REQ_PREFLUSH);
  44TRACE_DEFINE_ENUM(__REQ_FUA);
  45TRACE_DEFINE_ENUM(__REQ_PRIO);
  46TRACE_DEFINE_ENUM(__REQ_META);
  47TRACE_DEFINE_ENUM(CP_UMOUNT);
  48TRACE_DEFINE_ENUM(CP_FASTBOOT);
  49TRACE_DEFINE_ENUM(CP_SYNC);
  50TRACE_DEFINE_ENUM(CP_RECOVERY);
  51TRACE_DEFINE_ENUM(CP_DISCARD);
  52TRACE_DEFINE_ENUM(CP_TRIMMED);
  53TRACE_DEFINE_ENUM(CP_PAUSE);
  54TRACE_DEFINE_ENUM(CP_RESIZE);
 
 
  55
  56#define show_block_type(type)						\
  57	__print_symbolic(type,						\
  58		{ NODE,		"NODE" },				\
  59		{ DATA,		"DATA" },				\
  60		{ META,		"META" },				\
  61		{ META_FLUSH,	"META_FLUSH" },				\
  62		{ INMEM,	"INMEM" },				\
  63		{ INMEM_DROP,	"INMEM_DROP" },				\
  64		{ INMEM_INVALIDATE,	"INMEM_INVALIDATE" },		\
  65		{ INMEM_REVOKE,	"INMEM_REVOKE" },			\
  66		{ IPU,		"IN-PLACE" },				\
  67		{ OPU,		"OUT-OF-PLACE" })
  68
  69#define show_block_temp(temp)						\
  70	__print_symbolic(temp,						\
  71		{ HOT,		"HOT" },				\
  72		{ WARM,		"WARM" },				\
  73		{ COLD,		"COLD" })
  74
  75#define F2FS_OP_FLAGS (REQ_RAHEAD | REQ_SYNC | REQ_META | REQ_PRIO |	\
  76			REQ_PREFLUSH | REQ_FUA)
  77#define F2FS_BIO_FLAG_MASK(t)	(t & F2FS_OP_FLAGS)
  78
  79#define show_bio_type(op,op_flags)	show_bio_op(op),		\
  80						show_bio_op_flags(op_flags)
  81
  82#define show_bio_op(op)		blk_op_str(op)
  83
  84#define show_bio_op_flags(flags)					\
  85	__print_flags(F2FS_BIO_FLAG_MASK(flags), "|",			\
  86		{ REQ_RAHEAD,		"R" },				\
  87		{ REQ_SYNC,		"S" },				\
  88		{ REQ_META,		"M" },				\
  89		{ REQ_PRIO,		"P" },				\
  90		{ REQ_PREFLUSH,		"PF" },				\
  91		{ REQ_FUA,		"FUA" })
  92
  93#define show_data_type(type)						\
  94	__print_symbolic(type,						\
  95		{ CURSEG_HOT_DATA, 	"Hot DATA" },			\
  96		{ CURSEG_WARM_DATA, 	"Warm DATA" },			\
  97		{ CURSEG_COLD_DATA, 	"Cold DATA" },			\
  98		{ CURSEG_HOT_NODE, 	"Hot NODE" },			\
  99		{ CURSEG_WARM_NODE, 	"Warm NODE" },			\
 100		{ CURSEG_COLD_NODE, 	"Cold NODE" },			\
 101		{ NO_CHECK_TYPE, 	"No TYPE" })
 102
 103#define show_file_type(type)						\
 104	__print_symbolic(type,						\
 105		{ 0,		"FILE" },				\
 106		{ 1,		"DIR" })
 107
 108#define show_gc_type(type)						\
 109	__print_symbolic(type,						\
 110		{ FG_GC,	"Foreground GC" },			\
 111		{ BG_GC,	"Background GC" })
 112
 113#define show_alloc_mode(type)						\
 114	__print_symbolic(type,						\
 115		{ LFS,		"LFS-mode" },				\
 116		{ SSR,		"SSR-mode" },				\
 117		{ AT_SSR,	"AT_SSR-mode" })
 118
 119#define show_victim_policy(type)					\
 120	__print_symbolic(type,						\
 121		{ GC_GREEDY,	"Greedy" },				\
 122		{ GC_CB,	"Cost-Benefit" },			\
 123		{ GC_AT,	"Age-threshold" })
 124
 125#define show_cpreason(type)						\
 126	__print_flags(type, "|",					\
 127		{ CP_UMOUNT,	"Umount" },				\
 128		{ CP_FASTBOOT,	"Fastboot" },				\
 129		{ CP_SYNC,	"Sync" },				\
 130		{ CP_RECOVERY,	"Recovery" },				\
 131		{ CP_DISCARD,	"Discard" },				\
 132		{ CP_PAUSE,	"Pause" },				\
 133		{ CP_TRIMMED,	"Trimmed" },				\
 134		{ CP_RESIZE,	"Resize" })
 135
 136#define show_fsync_cpreason(type)					\
 137	__print_symbolic(type,						\
 138		{ CP_NO_NEEDED,		"no needed" },			\
 139		{ CP_NON_REGULAR,	"non regular" },		\
 140		{ CP_COMPRESSED,	"compressed" },			\
 141		{ CP_HARDLINK,		"hardlink" },			\
 142		{ CP_SB_NEED_CP,	"sb needs cp" },		\
 143		{ CP_WRONG_PINO,	"wrong pino" },			\
 144		{ CP_NO_SPC_ROLL,	"no space roll forward" },	\
 145		{ CP_NODE_NEED_CP,	"node needs cp" },		\
 146		{ CP_FASTBOOT_MODE,	"fastboot mode" },		\
 147		{ CP_SPEC_LOG_NUM,	"log type is 2" },		\
 148		{ CP_RECOVER_DIR,	"dir needs recovery" })
 
 149
 150#define show_shutdown_mode(type)					\
 151	__print_symbolic(type,						\
 152		{ F2FS_GOING_DOWN_FULLSYNC,	"full sync" },		\
 153		{ F2FS_GOING_DOWN_METASYNC,	"meta sync" },		\
 154		{ F2FS_GOING_DOWN_NOSYNC,	"no sync" },		\
 155		{ F2FS_GOING_DOWN_METAFLUSH,	"meta flush" },		\
 156		{ F2FS_GOING_DOWN_NEED_FSCK,	"need fsck" })
 157
 158#define show_compress_algorithm(type)					\
 159	__print_symbolic(type,						\
 160		{ COMPRESS_LZO,		"LZO" },			\
 161		{ COMPRESS_LZ4,		"LZ4" },			\
 162		{ COMPRESS_ZSTD,	"ZSTD" },			\
 163		{ COMPRESS_LZORLE,	"LZO-RLE" })
 164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 165struct f2fs_sb_info;
 166struct f2fs_io_info;
 167struct extent_info;
 168struct victim_sel_policy;
 169struct f2fs_map_blocks;
 170
 171DECLARE_EVENT_CLASS(f2fs__inode,
 172
 173	TP_PROTO(struct inode *inode),
 174
 175	TP_ARGS(inode),
 176
 177	TP_STRUCT__entry(
 178		__field(dev_t,	dev)
 179		__field(ino_t,	ino)
 180		__field(ino_t,	pino)
 181		__field(umode_t, mode)
 182		__field(loff_t,	size)
 183		__field(unsigned int, nlink)
 184		__field(blkcnt_t, blocks)
 185		__field(__u8,	advise)
 186	),
 187
 188	TP_fast_assign(
 189		__entry->dev	= inode->i_sb->s_dev;
 190		__entry->ino	= inode->i_ino;
 191		__entry->pino	= F2FS_I(inode)->i_pino;
 192		__entry->mode	= inode->i_mode;
 193		__entry->nlink	= inode->i_nlink;
 194		__entry->size	= inode->i_size;
 195		__entry->blocks	= inode->i_blocks;
 196		__entry->advise	= F2FS_I(inode)->i_advise;
 197	),
 198
 199	TP_printk("dev = (%d,%d), ino = %lu, pino = %lu, i_mode = 0x%hx, "
 200		"i_size = %lld, i_nlink = %u, i_blocks = %llu, i_advise = 0x%x",
 201		show_dev_ino(__entry),
 202		(unsigned long)__entry->pino,
 203		__entry->mode,
 204		__entry->size,
 205		(unsigned int)__entry->nlink,
 206		(unsigned long long)__entry->blocks,
 207		(unsigned char)__entry->advise)
 208);
 209
 210DECLARE_EVENT_CLASS(f2fs__inode_exit,
 211
 212	TP_PROTO(struct inode *inode, int ret),
 213
 214	TP_ARGS(inode, ret),
 215
 216	TP_STRUCT__entry(
 217		__field(dev_t,	dev)
 218		__field(ino_t,	ino)
 
 219		__field(int,	ret)
 220	),
 221
 222	TP_fast_assign(
 223		__entry->dev	= inode->i_sb->s_dev;
 224		__entry->ino	= inode->i_ino;
 
 225		__entry->ret	= ret;
 226	),
 227
 228	TP_printk("dev = (%d,%d), ino = %lu, ret = %d",
 229		show_dev_ino(__entry),
 
 
 230		__entry->ret)
 231);
 232
 233DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
 234
 235	TP_PROTO(struct inode *inode),
 236
 237	TP_ARGS(inode)
 238);
 239
 240TRACE_EVENT(f2fs_sync_file_exit,
 241
 242	TP_PROTO(struct inode *inode, int cp_reason, int datasync, int ret),
 243
 244	TP_ARGS(inode, cp_reason, datasync, ret),
 245
 246	TP_STRUCT__entry(
 247		__field(dev_t,	dev)
 248		__field(ino_t,	ino)
 249		__field(int,	cp_reason)
 250		__field(int,	datasync)
 251		__field(int,	ret)
 252	),
 253
 254	TP_fast_assign(
 255		__entry->dev		= inode->i_sb->s_dev;
 256		__entry->ino		= inode->i_ino;
 257		__entry->cp_reason	= cp_reason;
 258		__entry->datasync	= datasync;
 259		__entry->ret		= ret;
 260	),
 261
 262	TP_printk("dev = (%d,%d), ino = %lu, cp_reason: %s, "
 263		"datasync = %d, ret = %d",
 264		show_dev_ino(__entry),
 265		show_fsync_cpreason(__entry->cp_reason),
 266		__entry->datasync,
 267		__entry->ret)
 268);
 269
 270TRACE_EVENT(f2fs_sync_fs,
 271
 272	TP_PROTO(struct super_block *sb, int wait),
 273
 274	TP_ARGS(sb, wait),
 275
 276	TP_STRUCT__entry(
 277		__field(dev_t,	dev)
 278		__field(int,	dirty)
 279		__field(int,	wait)
 280	),
 281
 282	TP_fast_assign(
 283		__entry->dev	= sb->s_dev;
 284		__entry->dirty	= is_sbi_flag_set(F2FS_SB(sb), SBI_IS_DIRTY);
 285		__entry->wait	= wait;
 286	),
 287
 288	TP_printk("dev = (%d,%d), superblock is %s, wait = %d",
 289		show_dev(__entry->dev),
 290		__entry->dirty ? "dirty" : "not dirty",
 291		__entry->wait)
 292);
 293
 294DEFINE_EVENT(f2fs__inode, f2fs_iget,
 295
 296	TP_PROTO(struct inode *inode),
 297
 298	TP_ARGS(inode)
 299);
 300
 301DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
 302
 303	TP_PROTO(struct inode *inode, int ret),
 304
 305	TP_ARGS(inode, ret)
 306);
 307
 308DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
 309
 310	TP_PROTO(struct inode *inode),
 311
 312	TP_ARGS(inode)
 313);
 314
 315DEFINE_EVENT(f2fs__inode_exit, f2fs_new_inode,
 316
 317	TP_PROTO(struct inode *inode, int ret),
 318
 319	TP_ARGS(inode, ret)
 320);
 321
 322TRACE_EVENT(f2fs_unlink_enter,
 323
 324	TP_PROTO(struct inode *dir, struct dentry *dentry),
 325
 326	TP_ARGS(dir, dentry),
 327
 328	TP_STRUCT__entry(
 329		__field(dev_t,	dev)
 330		__field(ino_t,	ino)
 331		__field(loff_t,	size)
 332		__field(blkcnt_t, blocks)
 333		__field(const char *,	name)
 334	),
 335
 336	TP_fast_assign(
 337		__entry->dev	= dir->i_sb->s_dev;
 338		__entry->ino	= dir->i_ino;
 339		__entry->size	= dir->i_size;
 340		__entry->blocks	= dir->i_blocks;
 341		__entry->name	= dentry->d_name.name;
 342	),
 343
 344	TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
 345		"i_blocks = %llu, name = %s",
 346		show_dev_ino(__entry),
 347		__entry->size,
 348		(unsigned long long)__entry->blocks,
 349		__entry->name)
 350);
 351
 352DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
 353
 354	TP_PROTO(struct inode *inode, int ret),
 355
 356	TP_ARGS(inode, ret)
 357);
 358
 359DEFINE_EVENT(f2fs__inode_exit, f2fs_drop_inode,
 360
 361	TP_PROTO(struct inode *inode, int ret),
 362
 363	TP_ARGS(inode, ret)
 364);
 365
 366DEFINE_EVENT(f2fs__inode, f2fs_truncate,
 367
 368	TP_PROTO(struct inode *inode),
 369
 370	TP_ARGS(inode)
 371);
 372
 373TRACE_EVENT(f2fs_truncate_data_blocks_range,
 374
 375	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs, int free),
 376
 377	TP_ARGS(inode, nid,  ofs, free),
 378
 379	TP_STRUCT__entry(
 380		__field(dev_t,	dev)
 381		__field(ino_t,	ino)
 382		__field(nid_t,	nid)
 383		__field(unsigned int,	ofs)
 384		__field(int,	free)
 385	),
 386
 387	TP_fast_assign(
 388		__entry->dev	= inode->i_sb->s_dev;
 389		__entry->ino	= inode->i_ino;
 390		__entry->nid	= nid;
 391		__entry->ofs	= ofs;
 392		__entry->free	= free;
 393	),
 394
 395	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, offset = %u, freed = %d",
 396		show_dev_ino(__entry),
 397		(unsigned int)__entry->nid,
 398		__entry->ofs,
 399		__entry->free)
 400);
 401
 402DECLARE_EVENT_CLASS(f2fs__truncate_op,
 403
 404	TP_PROTO(struct inode *inode, u64 from),
 405
 406	TP_ARGS(inode, from),
 407
 408	TP_STRUCT__entry(
 409		__field(dev_t,	dev)
 410		__field(ino_t,	ino)
 411		__field(loff_t,	size)
 412		__field(blkcnt_t, blocks)
 413		__field(u64,	from)
 414	),
 415
 416	TP_fast_assign(
 417		__entry->dev	= inode->i_sb->s_dev;
 418		__entry->ino	= inode->i_ino;
 419		__entry->size	= inode->i_size;
 420		__entry->blocks	= inode->i_blocks;
 421		__entry->from	= from;
 422	),
 423
 424	TP_printk("dev = (%d,%d), ino = %lu, i_size = %lld, i_blocks = %llu, "
 425		"start file offset = %llu",
 426		show_dev_ino(__entry),
 427		__entry->size,
 428		(unsigned long long)__entry->blocks,
 429		(unsigned long long)__entry->from)
 430);
 431
 432DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_blocks_enter,
 433
 434	TP_PROTO(struct inode *inode, u64 from),
 435
 436	TP_ARGS(inode, from)
 437);
 438
 439DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_blocks_exit,
 440
 441	TP_PROTO(struct inode *inode, int ret),
 442
 443	TP_ARGS(inode, ret)
 444);
 445
 446DEFINE_EVENT(f2fs__truncate_op, f2fs_truncate_inode_blocks_enter,
 447
 448	TP_PROTO(struct inode *inode, u64 from),
 449
 450	TP_ARGS(inode, from)
 451);
 452
 453DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_inode_blocks_exit,
 454
 455	TP_PROTO(struct inode *inode, int ret),
 456
 457	TP_ARGS(inode, ret)
 458);
 459
 460DECLARE_EVENT_CLASS(f2fs__truncate_node,
 461
 462	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
 463
 464	TP_ARGS(inode, nid, blk_addr),
 465
 466	TP_STRUCT__entry(
 467		__field(dev_t,	dev)
 468		__field(ino_t,	ino)
 469		__field(nid_t,	nid)
 470		__field(block_t,	blk_addr)
 471	),
 472
 473	TP_fast_assign(
 474		__entry->dev		= inode->i_sb->s_dev;
 475		__entry->ino		= inode->i_ino;
 476		__entry->nid		= nid;
 477		__entry->blk_addr	= blk_addr;
 478	),
 479
 480	TP_printk("dev = (%d,%d), ino = %lu, nid = %u, block_address = 0x%llx",
 481		show_dev_ino(__entry),
 482		(unsigned int)__entry->nid,
 483		(unsigned long long)__entry->blk_addr)
 484);
 485
 486DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_nodes_enter,
 487
 488	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
 489
 490	TP_ARGS(inode, nid, blk_addr)
 491);
 492
 493DEFINE_EVENT(f2fs__inode_exit, f2fs_truncate_nodes_exit,
 494
 495	TP_PROTO(struct inode *inode, int ret),
 496
 497	TP_ARGS(inode, ret)
 498);
 499
 500DEFINE_EVENT(f2fs__truncate_node, f2fs_truncate_node,
 501
 502	TP_PROTO(struct inode *inode, nid_t nid, block_t blk_addr),
 503
 504	TP_ARGS(inode, nid, blk_addr)
 505);
 506
 507TRACE_EVENT(f2fs_truncate_partial_nodes,
 508
 509	TP_PROTO(struct inode *inode, nid_t *nid, int depth, int err),
 510
 511	TP_ARGS(inode, nid, depth, err),
 512
 513	TP_STRUCT__entry(
 514		__field(dev_t,	dev)
 515		__field(ino_t,	ino)
 516		__field(nid_t,	nid[3])
 517		__field(int,	depth)
 518		__field(int,	err)
 519	),
 520
 521	TP_fast_assign(
 522		__entry->dev	= inode->i_sb->s_dev;
 523		__entry->ino	= inode->i_ino;
 524		__entry->nid[0]	= nid[0];
 525		__entry->nid[1]	= nid[1];
 526		__entry->nid[2]	= nid[2];
 527		__entry->depth	= depth;
 528		__entry->err	= err;
 529	),
 530
 531	TP_printk("dev = (%d,%d), ino = %lu, "
 532		"nid[0] = %u, nid[1] = %u, nid[2] = %u, depth = %d, err = %d",
 533		show_dev_ino(__entry),
 534		(unsigned int)__entry->nid[0],
 535		(unsigned int)__entry->nid[1],
 536		(unsigned int)__entry->nid[2],
 537		__entry->depth,
 538		__entry->err)
 539);
 540
 541TRACE_EVENT(f2fs_file_write_iter,
 542
 543	TP_PROTO(struct inode *inode, unsigned long offset,
 544		unsigned long length, int ret),
 545
 546	TP_ARGS(inode, offset, length, ret),
 547
 548	TP_STRUCT__entry(
 549		__field(dev_t,	dev)
 550		__field(ino_t,	ino)
 551		__field(unsigned long, offset)
 552		__field(unsigned long, length)
 553		__field(int,	ret)
 554	),
 555
 556	TP_fast_assign(
 557		__entry->dev	= inode->i_sb->s_dev;
 558		__entry->ino	= inode->i_ino;
 559		__entry->offset	= offset;
 560		__entry->length	= length;
 561		__entry->ret	= ret;
 562	),
 563
 564	TP_printk("dev = (%d,%d), ino = %lu, "
 565		"offset = %lu, length = %lu, written(err) = %d",
 566		show_dev_ino(__entry),
 567		__entry->offset,
 568		__entry->length,
 569		__entry->ret)
 570);
 571
 572TRACE_EVENT(f2fs_map_blocks,
 573	TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int ret),
 
 574
 575	TP_ARGS(inode, map, ret),
 576
 577	TP_STRUCT__entry(
 578		__field(dev_t,	dev)
 579		__field(ino_t,	ino)
 580		__field(block_t,	m_lblk)
 581		__field(block_t,	m_pblk)
 582		__field(unsigned int,	m_len)
 583		__field(unsigned int,	m_flags)
 584		__field(int,	m_seg_type)
 585		__field(bool,	m_may_create)
 
 
 586		__field(int,	ret)
 587	),
 588
 589	TP_fast_assign(
 590		__entry->dev		= inode->i_sb->s_dev;
 591		__entry->ino		= inode->i_ino;
 592		__entry->m_lblk		= map->m_lblk;
 593		__entry->m_pblk		= map->m_pblk;
 594		__entry->m_len		= map->m_len;
 595		__entry->m_flags	= map->m_flags;
 596		__entry->m_seg_type	= map->m_seg_type;
 597		__entry->m_may_create	= map->m_may_create;
 
 
 598		__entry->ret		= ret;
 599	),
 600
 601	TP_printk("dev = (%d,%d), ino = %lu, file offset = %llu, "
 602		"start blkaddr = 0x%llx, len = 0x%llx, flags = %u,"
 603		"seg_type = %d, may_create = %d, err = %d",
 
 604		show_dev_ino(__entry),
 605		(unsigned long long)__entry->m_lblk,
 606		(unsigned long long)__entry->m_pblk,
 607		(unsigned long long)__entry->m_len,
 608		__entry->m_flags,
 609		__entry->m_seg_type,
 610		__entry->m_may_create,
 
 
 611		__entry->ret)
 612);
 613
 614TRACE_EVENT(f2fs_background_gc,
 615
 616	TP_PROTO(struct super_block *sb, unsigned int wait_ms,
 617			unsigned int prefree, unsigned int free),
 618
 619	TP_ARGS(sb, wait_ms, prefree, free),
 620
 621	TP_STRUCT__entry(
 622		__field(dev_t,	dev)
 623		__field(unsigned int,	wait_ms)
 624		__field(unsigned int,	prefree)
 625		__field(unsigned int,	free)
 626	),
 627
 628	TP_fast_assign(
 629		__entry->dev		= sb->s_dev;
 630		__entry->wait_ms	= wait_ms;
 631		__entry->prefree	= prefree;
 632		__entry->free		= free;
 633	),
 634
 635	TP_printk("dev = (%d,%d), wait_ms = %u, prefree = %u, free = %u",
 636		show_dev(__entry->dev),
 637		__entry->wait_ms,
 638		__entry->prefree,
 639		__entry->free)
 640);
 641
 642TRACE_EVENT(f2fs_gc_begin,
 643
 644	TP_PROTO(struct super_block *sb, bool sync, bool background,
 
 645			long long dirty_nodes, long long dirty_dents,
 646			long long dirty_imeta, unsigned int free_sec,
 647			unsigned int free_seg, int reserved_seg,
 648			unsigned int prefree_seg),
 649
 650	TP_ARGS(sb, sync, background, dirty_nodes, dirty_dents, dirty_imeta,
 
 651		free_sec, free_seg, reserved_seg, prefree_seg),
 652
 653	TP_STRUCT__entry(
 654		__field(dev_t,		dev)
 655		__field(bool,		sync)
 656		__field(bool,		background)
 
 657		__field(long long,	dirty_nodes)
 658		__field(long long,	dirty_dents)
 659		__field(long long,	dirty_imeta)
 660		__field(unsigned int,	free_sec)
 661		__field(unsigned int,	free_seg)
 662		__field(int,		reserved_seg)
 663		__field(unsigned int,	prefree_seg)
 664	),
 665
 666	TP_fast_assign(
 667		__entry->dev		= sb->s_dev;
 668		__entry->sync		= sync;
 669		__entry->background	= background;
 
 670		__entry->dirty_nodes	= dirty_nodes;
 671		__entry->dirty_dents	= dirty_dents;
 672		__entry->dirty_imeta	= dirty_imeta;
 673		__entry->free_sec	= free_sec;
 674		__entry->free_seg	= free_seg;
 675		__entry->reserved_seg	= reserved_seg;
 676		__entry->prefree_seg	= prefree_seg;
 677	),
 678
 679	TP_printk("dev = (%d,%d), sync = %d, background = %d, nodes = %lld, "
 680		"dents = %lld, imeta = %lld, free_sec:%u, free_seg:%u, "
 681		"rsv_seg:%d, prefree_seg:%u",
 682		show_dev(__entry->dev),
 683		__entry->sync,
 684		__entry->background,
 
 685		__entry->dirty_nodes,
 686		__entry->dirty_dents,
 687		__entry->dirty_imeta,
 688		__entry->free_sec,
 689		__entry->free_seg,
 690		__entry->reserved_seg,
 691		__entry->prefree_seg)
 692);
 693
 694TRACE_EVENT(f2fs_gc_end,
 695
 696	TP_PROTO(struct super_block *sb, int ret, int seg_freed,
 697			int sec_freed, long long dirty_nodes,
 698			long long dirty_dents, long long dirty_imeta,
 699			unsigned int free_sec, unsigned int free_seg,
 700			int reserved_seg, unsigned int prefree_seg),
 701
 702	TP_ARGS(sb, ret, seg_freed, sec_freed, dirty_nodes, dirty_dents,
 703		dirty_imeta, free_sec, free_seg, reserved_seg, prefree_seg),
 704
 705	TP_STRUCT__entry(
 706		__field(dev_t,		dev)
 707		__field(int,		ret)
 708		__field(int,		seg_freed)
 709		__field(int,		sec_freed)
 710		__field(long long,	dirty_nodes)
 711		__field(long long,	dirty_dents)
 712		__field(long long,	dirty_imeta)
 713		__field(unsigned int,	free_sec)
 714		__field(unsigned int,	free_seg)
 715		__field(int,		reserved_seg)
 716		__field(unsigned int,	prefree_seg)
 717	),
 718
 719	TP_fast_assign(
 720		__entry->dev		= sb->s_dev;
 721		__entry->ret		= ret;
 722		__entry->seg_freed	= seg_freed;
 723		__entry->sec_freed	= sec_freed;
 724		__entry->dirty_nodes	= dirty_nodes;
 725		__entry->dirty_dents	= dirty_dents;
 726		__entry->dirty_imeta	= dirty_imeta;
 727		__entry->free_sec	= free_sec;
 728		__entry->free_seg	= free_seg;
 729		__entry->reserved_seg	= reserved_seg;
 730		__entry->prefree_seg	= prefree_seg;
 731	),
 732
 733	TP_printk("dev = (%d,%d), ret = %d, seg_freed = %d, sec_freed = %d, "
 734		"nodes = %lld, dents = %lld, imeta = %lld, free_sec:%u, "
 735		"free_seg:%u, rsv_seg:%d, prefree_seg:%u",
 736		show_dev(__entry->dev),
 737		__entry->ret,
 738		__entry->seg_freed,
 739		__entry->sec_freed,
 740		__entry->dirty_nodes,
 741		__entry->dirty_dents,
 742		__entry->dirty_imeta,
 743		__entry->free_sec,
 744		__entry->free_seg,
 745		__entry->reserved_seg,
 746		__entry->prefree_seg)
 747);
 748
 749TRACE_EVENT(f2fs_get_victim,
 750
 751	TP_PROTO(struct super_block *sb, int type, int gc_type,
 752			struct victim_sel_policy *p, unsigned int pre_victim,
 753			unsigned int prefree, unsigned int free),
 754
 755	TP_ARGS(sb, type, gc_type, p, pre_victim, prefree, free),
 756
 757	TP_STRUCT__entry(
 758		__field(dev_t,	dev)
 759		__field(int,	type)
 760		__field(int,	gc_type)
 761		__field(int,	alloc_mode)
 762		__field(int,	gc_mode)
 763		__field(unsigned int,	victim)
 764		__field(unsigned int,	cost)
 765		__field(unsigned int,	ofs_unit)
 766		__field(unsigned int,	pre_victim)
 767		__field(unsigned int,	prefree)
 768		__field(unsigned int,	free)
 769	),
 770
 771	TP_fast_assign(
 772		__entry->dev		= sb->s_dev;
 773		__entry->type		= type;
 774		__entry->gc_type	= gc_type;
 775		__entry->alloc_mode	= p->alloc_mode;
 776		__entry->gc_mode	= p->gc_mode;
 777		__entry->victim		= p->min_segno;
 778		__entry->cost		= p->min_cost;
 779		__entry->ofs_unit	= p->ofs_unit;
 780		__entry->pre_victim	= pre_victim;
 781		__entry->prefree	= prefree;
 782		__entry->free		= free;
 783	),
 784
 785	TP_printk("dev = (%d,%d), type = %s, policy = (%s, %s, %s), "
 786		"victim = %u, cost = %u, ofs_unit = %u, "
 787		"pre_victim_secno = %d, prefree = %u, free = %u",
 788		show_dev(__entry->dev),
 789		show_data_type(__entry->type),
 790		show_gc_type(__entry->gc_type),
 791		show_alloc_mode(__entry->alloc_mode),
 792		show_victim_policy(__entry->gc_mode),
 793		__entry->victim,
 794		__entry->cost,
 795		__entry->ofs_unit,
 796		(int)__entry->pre_victim,
 797		__entry->prefree,
 798		__entry->free)
 799);
 800
 801TRACE_EVENT(f2fs_lookup_start,
 802
 803	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
 804
 805	TP_ARGS(dir, dentry, flags),
 806
 807	TP_STRUCT__entry(
 808		__field(dev_t,	dev)
 809		__field(ino_t,	ino)
 810		__field(const char *,	name)
 811		__field(unsigned int, flags)
 812	),
 813
 814	TP_fast_assign(
 815		__entry->dev	= dir->i_sb->s_dev;
 816		__entry->ino	= dir->i_ino;
 817		__entry->name	= dentry->d_name.name;
 818		__entry->flags	= flags;
 819	),
 820
 821	TP_printk("dev = (%d,%d), pino = %lu, name:%s, flags:%u",
 822		show_dev_ino(__entry),
 823		__entry->name,
 824		__entry->flags)
 825);
 826
 827TRACE_EVENT(f2fs_lookup_end,
 828
 829	TP_PROTO(struct inode *dir, struct dentry *dentry, nid_t ino,
 830		int err),
 831
 832	TP_ARGS(dir, dentry, ino, err),
 833
 834	TP_STRUCT__entry(
 835		__field(dev_t,	dev)
 836		__field(ino_t,	ino)
 837		__field(const char *,	name)
 838		__field(nid_t,	cino)
 839		__field(int,	err)
 840	),
 841
 842	TP_fast_assign(
 843		__entry->dev	= dir->i_sb->s_dev;
 844		__entry->ino	= dir->i_ino;
 845		__entry->name	= dentry->d_name.name;
 846		__entry->cino	= ino;
 847		__entry->err	= err;
 848	),
 849
 850	TP_printk("dev = (%d,%d), pino = %lu, name:%s, ino:%u, err:%d",
 851		show_dev_ino(__entry),
 852		__entry->name,
 853		__entry->cino,
 854		__entry->err)
 855);
 856
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 857TRACE_EVENT(f2fs_readdir,
 858
 859	TP_PROTO(struct inode *dir, loff_t start_pos, loff_t end_pos, int err),
 860
 861	TP_ARGS(dir, start_pos, end_pos, err),
 862
 863	TP_STRUCT__entry(
 864		__field(dev_t,	dev)
 865		__field(ino_t,	ino)
 866		__field(loff_t,	start)
 867		__field(loff_t,	end)
 868		__field(int,	err)
 869	),
 870
 871	TP_fast_assign(
 872		__entry->dev	= dir->i_sb->s_dev;
 873		__entry->ino	= dir->i_ino;
 874		__entry->start	= start_pos;
 875		__entry->end	= end_pos;
 876		__entry->err	= err;
 877	),
 878
 879	TP_printk("dev = (%d,%d), ino = %lu, start_pos:%llu, end_pos:%llu, err:%d",
 880		show_dev_ino(__entry),
 881		__entry->start,
 882		__entry->end,
 883		__entry->err)
 884);
 885
 886TRACE_EVENT(f2fs_fallocate,
 887
 888	TP_PROTO(struct inode *inode, int mode,
 889				loff_t offset, loff_t len, int ret),
 890
 891	TP_ARGS(inode, mode, offset, len, ret),
 892
 893	TP_STRUCT__entry(
 894		__field(dev_t,	dev)
 895		__field(ino_t,	ino)
 896		__field(int,	mode)
 897		__field(loff_t,	offset)
 898		__field(loff_t,	len)
 899		__field(loff_t, size)
 900		__field(blkcnt_t, blocks)
 901		__field(int,	ret)
 902	),
 903
 904	TP_fast_assign(
 905		__entry->dev	= inode->i_sb->s_dev;
 906		__entry->ino	= inode->i_ino;
 907		__entry->mode	= mode;
 908		__entry->offset	= offset;
 909		__entry->len	= len;
 910		__entry->size	= inode->i_size;
 911		__entry->blocks = inode->i_blocks;
 912		__entry->ret	= ret;
 913	),
 914
 915	TP_printk("dev = (%d,%d), ino = %lu, mode = %x, offset = %lld, "
 916		"len = %lld,  i_size = %lld, i_blocks = %llu, ret = %d",
 917		show_dev_ino(__entry),
 918		__entry->mode,
 919		(unsigned long long)__entry->offset,
 920		(unsigned long long)__entry->len,
 921		(unsigned long long)__entry->size,
 922		(unsigned long long)__entry->blocks,
 923		__entry->ret)
 924);
 925
 926TRACE_EVENT(f2fs_direct_IO_enter,
 927
 928	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
 929
 930	TP_ARGS(inode, offset, len, rw),
 931
 932	TP_STRUCT__entry(
 933		__field(dev_t,	dev)
 934		__field(ino_t,	ino)
 935		__field(loff_t,	pos)
 
 
 936		__field(unsigned long,	len)
 937		__field(int,	rw)
 938	),
 939
 940	TP_fast_assign(
 941		__entry->dev	= inode->i_sb->s_dev;
 942		__entry->ino	= inode->i_ino;
 943		__entry->pos	= offset;
 944		__entry->len	= len;
 945		__entry->rw	= rw;
 
 
 946	),
 947
 948	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu rw = %d",
 949		show_dev_ino(__entry),
 950		__entry->pos,
 951		__entry->len,
 
 
 952		__entry->rw)
 953);
 954
 955TRACE_EVENT(f2fs_direct_IO_exit,
 956
 957	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
 958		 int rw, int ret),
 959
 960	TP_ARGS(inode, offset, len, rw, ret),
 961
 962	TP_STRUCT__entry(
 963		__field(dev_t,	dev)
 964		__field(ino_t,	ino)
 965		__field(loff_t,	pos)
 966		__field(unsigned long,	len)
 967		__field(int,	rw)
 968		__field(int,	ret)
 969	),
 970
 971	TP_fast_assign(
 972		__entry->dev	= inode->i_sb->s_dev;
 973		__entry->ino	= inode->i_ino;
 974		__entry->pos	= offset;
 975		__entry->len	= len;
 976		__entry->rw	= rw;
 977		__entry->ret	= ret;
 978	),
 979
 980	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu "
 981		"rw = %d ret = %d",
 982		show_dev_ino(__entry),
 983		__entry->pos,
 984		__entry->len,
 985		__entry->rw,
 986		__entry->ret)
 987);
 988
 989TRACE_EVENT(f2fs_reserve_new_blocks,
 990
 991	TP_PROTO(struct inode *inode, nid_t nid, unsigned int ofs_in_node,
 992							blkcnt_t count),
 993
 994	TP_ARGS(inode, nid, ofs_in_node, count),
 995
 996	TP_STRUCT__entry(
 997		__field(dev_t,	dev)
 998		__field(nid_t, nid)
 999		__field(unsigned int, ofs_in_node)
1000		__field(blkcnt_t, count)
1001	),
1002
1003	TP_fast_assign(
1004		__entry->dev	= inode->i_sb->s_dev;
1005		__entry->nid	= nid;
1006		__entry->ofs_in_node = ofs_in_node;
1007		__entry->count = count;
1008	),
1009
1010	TP_printk("dev = (%d,%d), nid = %u, ofs_in_node = %u, count = %llu",
1011		show_dev(__entry->dev),
1012		(unsigned int)__entry->nid,
1013		__entry->ofs_in_node,
1014		(unsigned long long)__entry->count)
1015);
1016
1017DECLARE_EVENT_CLASS(f2fs__submit_page_bio,
1018
1019	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
1020
1021	TP_ARGS(page, fio),
1022
1023	TP_STRUCT__entry(
1024		__field(dev_t, dev)
1025		__field(ino_t, ino)
1026		__field(pgoff_t, index)
1027		__field(block_t, old_blkaddr)
1028		__field(block_t, new_blkaddr)
1029		__field(int, op)
1030		__field(int, op_flags)
1031		__field(int, temp)
1032		__field(int, type)
1033	),
1034
1035	TP_fast_assign(
1036		__entry->dev		= page_file_mapping(page)->host->i_sb->s_dev;
1037		__entry->ino		= page_file_mapping(page)->host->i_ino;
1038		__entry->index		= page->index;
1039		__entry->old_blkaddr	= fio->old_blkaddr;
1040		__entry->new_blkaddr	= fio->new_blkaddr;
1041		__entry->op		= fio->op;
1042		__entry->op_flags	= fio->op_flags;
1043		__entry->temp		= fio->temp;
1044		__entry->type		= fio->type;
1045	),
1046
1047	TP_printk("dev = (%d,%d), ino = %lu, page_index = 0x%lx, "
1048		"oldaddr = 0x%llx, newaddr = 0x%llx, rw = %s(%s), type = %s_%s",
1049		show_dev_ino(__entry),
1050		(unsigned long)__entry->index,
1051		(unsigned long long)__entry->old_blkaddr,
1052		(unsigned long long)__entry->new_blkaddr,
1053		show_bio_type(__entry->op, __entry->op_flags),
1054		show_block_temp(__entry->temp),
1055		show_block_type(__entry->type))
1056);
1057
1058DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_bio,
1059
1060	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
1061
1062	TP_ARGS(page, fio),
1063
1064	TP_CONDITION(page->mapping)
1065);
1066
1067DEFINE_EVENT_CONDITION(f2fs__submit_page_bio, f2fs_submit_page_write,
1068
1069	TP_PROTO(struct page *page, struct f2fs_io_info *fio),
1070
1071	TP_ARGS(page, fio),
1072
1073	TP_CONDITION(page->mapping)
1074);
1075
1076DECLARE_EVENT_CLASS(f2fs__bio,
1077
1078	TP_PROTO(struct super_block *sb, int type, struct bio *bio),
1079
1080	TP_ARGS(sb, type, bio),
1081
1082	TP_STRUCT__entry(
1083		__field(dev_t,	dev)
1084		__field(dev_t,	target)
1085		__field(int,	op)
1086		__field(int,	op_flags)
1087		__field(int,	type)
1088		__field(sector_t,	sector)
1089		__field(unsigned int,	size)
1090	),
1091
1092	TP_fast_assign(
1093		__entry->dev		= sb->s_dev;
1094		__entry->target		= bio_dev(bio);
1095		__entry->op		= bio_op(bio);
1096		__entry->op_flags	= bio->bi_opf;
1097		__entry->type		= type;
1098		__entry->sector		= bio->bi_iter.bi_sector;
1099		__entry->size		= bio->bi_iter.bi_size;
1100	),
1101
1102	TP_printk("dev = (%d,%d)/(%d,%d), rw = %s(%s), %s, sector = %lld, size = %u",
1103		show_dev(__entry->target),
1104		show_dev(__entry->dev),
1105		show_bio_type(__entry->op, __entry->op_flags),
1106		show_block_type(__entry->type),
1107		(unsigned long long)__entry->sector,
1108		__entry->size)
1109);
1110
1111DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_prepare_write_bio,
1112
1113	TP_PROTO(struct super_block *sb, int type, struct bio *bio),
1114
1115	TP_ARGS(sb, type, bio),
1116
1117	TP_CONDITION(bio)
1118);
1119
1120DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_prepare_read_bio,
1121
1122	TP_PROTO(struct super_block *sb, int type, struct bio *bio),
1123
1124	TP_ARGS(sb, type, bio),
1125
1126	TP_CONDITION(bio)
1127);
1128
1129DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_submit_read_bio,
1130
1131	TP_PROTO(struct super_block *sb, int type, struct bio *bio),
1132
1133	TP_ARGS(sb, type, bio),
1134
1135	TP_CONDITION(bio)
1136);
1137
1138DEFINE_EVENT_CONDITION(f2fs__bio, f2fs_submit_write_bio,
1139
1140	TP_PROTO(struct super_block *sb, int type, struct bio *bio),
1141
1142	TP_ARGS(sb, type, bio),
1143
1144	TP_CONDITION(bio)
1145);
1146
1147TRACE_EVENT(f2fs_write_begin,
1148
1149	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
1150				unsigned int flags),
1151
1152	TP_ARGS(inode, pos, len, flags),
1153
1154	TP_STRUCT__entry(
1155		__field(dev_t,	dev)
1156		__field(ino_t,	ino)
1157		__field(loff_t,	pos)
1158		__field(unsigned int, len)
1159		__field(unsigned int, flags)
1160	),
1161
1162	TP_fast_assign(
1163		__entry->dev	= inode->i_sb->s_dev;
1164		__entry->ino	= inode->i_ino;
1165		__entry->pos	= pos;
1166		__entry->len	= len;
1167		__entry->flags	= flags;
1168	),
1169
1170	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u, flags = %u",
1171		show_dev_ino(__entry),
1172		(unsigned long long)__entry->pos,
1173		__entry->len,
1174		__entry->flags)
1175);
1176
1177TRACE_EVENT(f2fs_write_end,
1178
1179	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
1180				unsigned int copied),
1181
1182	TP_ARGS(inode, pos, len, copied),
1183
1184	TP_STRUCT__entry(
1185		__field(dev_t,	dev)
1186		__field(ino_t,	ino)
1187		__field(loff_t,	pos)
1188		__field(unsigned int, len)
1189		__field(unsigned int, copied)
1190	),
1191
1192	TP_fast_assign(
1193		__entry->dev	= inode->i_sb->s_dev;
1194		__entry->ino	= inode->i_ino;
1195		__entry->pos	= pos;
1196		__entry->len	= len;
1197		__entry->copied	= copied;
1198	),
1199
1200	TP_printk("dev = (%d,%d), ino = %lu, pos = %llu, len = %u, copied = %u",
1201		show_dev_ino(__entry),
1202		(unsigned long long)__entry->pos,
1203		__entry->len,
1204		__entry->copied)
1205);
1206
1207DECLARE_EVENT_CLASS(f2fs__page,
1208
1209	TP_PROTO(struct page *page, int type),
1210
1211	TP_ARGS(page, type),
1212
1213	TP_STRUCT__entry(
1214		__field(dev_t,	dev)
1215		__field(ino_t,	ino)
1216		__field(int, type)
1217		__field(int, dir)
1218		__field(pgoff_t, index)
1219		__field(int, dirty)
1220		__field(int, uptodate)
1221	),
1222
1223	TP_fast_assign(
1224		__entry->dev	= page_file_mapping(page)->host->i_sb->s_dev;
1225		__entry->ino	= page_file_mapping(page)->host->i_ino;
1226		__entry->type	= type;
1227		__entry->dir	=
1228			S_ISDIR(page_file_mapping(page)->host->i_mode);
1229		__entry->index	= page->index;
1230		__entry->dirty	= PageDirty(page);
1231		__entry->uptodate = PageUptodate(page);
1232	),
1233
1234	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, index = %lu, "
1235		"dirty = %d, uptodate = %d",
1236		show_dev_ino(__entry),
1237		show_block_type(__entry->type),
1238		show_file_type(__entry->dir),
1239		(unsigned long)__entry->index,
1240		__entry->dirty,
1241		__entry->uptodate)
1242);
1243
1244DEFINE_EVENT(f2fs__page, f2fs_writepage,
1245
1246	TP_PROTO(struct page *page, int type),
1247
1248	TP_ARGS(page, type)
1249);
1250
1251DEFINE_EVENT(f2fs__page, f2fs_do_write_data_page,
1252
1253	TP_PROTO(struct page *page, int type),
1254
1255	TP_ARGS(page, type)
1256);
1257
1258DEFINE_EVENT(f2fs__page, f2fs_readpage,
1259
1260	TP_PROTO(struct page *page, int type),
1261
1262	TP_ARGS(page, type)
1263);
1264
1265DEFINE_EVENT(f2fs__page, f2fs_set_page_dirty,
1266
1267	TP_PROTO(struct page *page, int type),
1268
1269	TP_ARGS(page, type)
1270);
1271
1272DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite,
1273
1274	TP_PROTO(struct page *page, int type),
 
1275
1276	TP_ARGS(page, type)
1277);
1278
1279DEFINE_EVENT(f2fs__page, f2fs_register_inmem_page,
 
 
 
 
 
 
 
 
1280
1281	TP_PROTO(struct page *page, int type),
 
 
 
 
 
 
 
 
1282
1283	TP_ARGS(page, type)
1284);
1285
1286DEFINE_EVENT(f2fs__page, f2fs_commit_inmem_page,
1287
1288	TP_PROTO(struct page *page, int type),
1289
1290	TP_ARGS(page, type)
1291);
1292
1293TRACE_EVENT(f2fs_filemap_fault,
1294
1295	TP_PROTO(struct inode *inode, pgoff_t index, unsigned long ret),
 
1296
1297	TP_ARGS(inode, index, ret),
1298
1299	TP_STRUCT__entry(
1300		__field(dev_t,	dev)
1301		__field(ino_t,	ino)
1302		__field(pgoff_t, index)
1303		__field(unsigned long, ret)
 
1304	),
1305
1306	TP_fast_assign(
1307		__entry->dev	= inode->i_sb->s_dev;
1308		__entry->ino	= inode->i_ino;
1309		__entry->index	= index;
 
1310		__entry->ret	= ret;
1311	),
1312
1313	TP_printk("dev = (%d,%d), ino = %lu, index = %lu, ret = %lx",
1314		show_dev_ino(__entry),
1315		(unsigned long)__entry->index,
1316		__entry->ret)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1317);
1318
1319TRACE_EVENT(f2fs_writepages,
1320
1321	TP_PROTO(struct inode *inode, struct writeback_control *wbc, int type),
1322
1323	TP_ARGS(inode, wbc, type),
1324
1325	TP_STRUCT__entry(
1326		__field(dev_t,	dev)
1327		__field(ino_t,	ino)
1328		__field(int,	type)
1329		__field(int,	dir)
1330		__field(long,	nr_to_write)
1331		__field(long,	pages_skipped)
1332		__field(loff_t,	range_start)
1333		__field(loff_t,	range_end)
1334		__field(pgoff_t, writeback_index)
1335		__field(int,	sync_mode)
1336		__field(char,	for_kupdate)
1337		__field(char,	for_background)
1338		__field(char,	tagged_writepages)
1339		__field(char,	for_reclaim)
1340		__field(char,	range_cyclic)
1341		__field(char,	for_sync)
1342	),
1343
1344	TP_fast_assign(
1345		__entry->dev		= inode->i_sb->s_dev;
1346		__entry->ino		= inode->i_ino;
1347		__entry->type		= type;
1348		__entry->dir		= S_ISDIR(inode->i_mode);
1349		__entry->nr_to_write	= wbc->nr_to_write;
1350		__entry->pages_skipped	= wbc->pages_skipped;
1351		__entry->range_start	= wbc->range_start;
1352		__entry->range_end	= wbc->range_end;
1353		__entry->writeback_index = inode->i_mapping->writeback_index;
1354		__entry->sync_mode	= wbc->sync_mode;
1355		__entry->for_kupdate	= wbc->for_kupdate;
1356		__entry->for_background	= wbc->for_background;
1357		__entry->tagged_writepages	= wbc->tagged_writepages;
1358		__entry->for_reclaim	= wbc->for_reclaim;
1359		__entry->range_cyclic	= wbc->range_cyclic;
1360		__entry->for_sync	= wbc->for_sync;
1361	),
1362
1363	TP_printk("dev = (%d,%d), ino = %lu, %s, %s, nr_to_write %ld, "
1364		"skipped %ld, start %lld, end %lld, wb_idx %lu, sync_mode %d, "
1365		"kupdate %u background %u tagged %u reclaim %u cyclic %u sync %u",
1366		show_dev_ino(__entry),
1367		show_block_type(__entry->type),
1368		show_file_type(__entry->dir),
1369		__entry->nr_to_write,
1370		__entry->pages_skipped,
1371		__entry->range_start,
1372		__entry->range_end,
1373		(unsigned long)__entry->writeback_index,
1374		__entry->sync_mode,
1375		__entry->for_kupdate,
1376		__entry->for_background,
1377		__entry->tagged_writepages,
1378		__entry->for_reclaim,
1379		__entry->range_cyclic,
1380		__entry->for_sync)
1381);
1382
1383TRACE_EVENT(f2fs_readpages,
1384
1385	TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage),
1386
1387	TP_ARGS(inode, start, nrpage),
1388
1389	TP_STRUCT__entry(
1390		__field(dev_t,	dev)
1391		__field(ino_t,	ino)
1392		__field(pgoff_t,	start)
1393		__field(unsigned int,	nrpage)
1394	),
1395
1396	TP_fast_assign(
1397		__entry->dev	= inode->i_sb->s_dev;
1398		__entry->ino	= inode->i_ino;
1399		__entry->start	= start;
1400		__entry->nrpage	= nrpage;
1401	),
1402
1403	TP_printk("dev = (%d,%d), ino = %lu, start = %lu nrpage = %u",
1404		show_dev_ino(__entry),
1405		(unsigned long)__entry->start,
1406		__entry->nrpage)
1407);
1408
1409TRACE_EVENT(f2fs_write_checkpoint,
1410
1411	TP_PROTO(struct super_block *sb, int reason, char *msg),
1412
1413	TP_ARGS(sb, reason, msg),
1414
1415	TP_STRUCT__entry(
1416		__field(dev_t,	dev)
1417		__field(int,	reason)
1418		__field(char *,	msg)
1419	),
1420
1421	TP_fast_assign(
1422		__entry->dev		= sb->s_dev;
1423		__entry->reason		= reason;
1424		__entry->msg		= msg;
1425	),
1426
1427	TP_printk("dev = (%d,%d), checkpoint for %s, state = %s",
1428		show_dev(__entry->dev),
1429		show_cpreason(__entry->reason),
1430		__entry->msg)
1431);
1432
1433DECLARE_EVENT_CLASS(f2fs_discard,
1434
1435	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
1436
1437	TP_ARGS(dev, blkstart, blklen),
1438
1439	TP_STRUCT__entry(
1440		__field(dev_t,	dev)
1441		__field(block_t, blkstart)
1442		__field(block_t, blklen)
1443	),
1444
1445	TP_fast_assign(
1446		__entry->dev	= dev->bd_dev;
1447		__entry->blkstart = blkstart;
1448		__entry->blklen = blklen;
1449	),
1450
1451	TP_printk("dev = (%d,%d), blkstart = 0x%llx, blklen = 0x%llx",
1452		show_dev(__entry->dev),
1453		(unsigned long long)__entry->blkstart,
1454		(unsigned long long)__entry->blklen)
1455);
1456
1457DEFINE_EVENT(f2fs_discard, f2fs_queue_discard,
1458
1459	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
1460
1461	TP_ARGS(dev, blkstart, blklen)
1462);
1463
1464DEFINE_EVENT(f2fs_discard, f2fs_issue_discard,
1465
1466	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
1467
1468	TP_ARGS(dev, blkstart, blklen)
1469);
1470
1471DEFINE_EVENT(f2fs_discard, f2fs_remove_discard,
1472
1473	TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
1474
1475	TP_ARGS(dev, blkstart, blklen)
1476);
1477
1478TRACE_EVENT(f2fs_issue_reset_zone,
1479
1480	TP_PROTO(struct block_device *dev, block_t blkstart),
1481
1482	TP_ARGS(dev, blkstart),
1483
1484	TP_STRUCT__entry(
1485		__field(dev_t,	dev)
1486		__field(block_t, blkstart)
1487	),
1488
1489	TP_fast_assign(
1490		__entry->dev	= dev->bd_dev;
1491		__entry->blkstart = blkstart;
1492	),
1493
1494	TP_printk("dev = (%d,%d), reset zone at block = 0x%llx",
1495		show_dev(__entry->dev),
1496		(unsigned long long)__entry->blkstart)
1497);
1498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1499TRACE_EVENT(f2fs_issue_flush,
1500
1501	TP_PROTO(struct block_device *dev, unsigned int nobarrier,
1502				unsigned int flush_merge, int ret),
1503
1504	TP_ARGS(dev, nobarrier, flush_merge, ret),
1505
1506	TP_STRUCT__entry(
1507		__field(dev_t,	dev)
1508		__field(unsigned int, nobarrier)
1509		__field(unsigned int, flush_merge)
1510		__field(int,  ret)
1511	),
1512
1513	TP_fast_assign(
1514		__entry->dev	= dev->bd_dev;
1515		__entry->nobarrier = nobarrier;
1516		__entry->flush_merge = flush_merge;
1517		__entry->ret = ret;
1518	),
1519
1520	TP_printk("dev = (%d,%d), %s %s, ret = %d",
1521		show_dev(__entry->dev),
1522		__entry->nobarrier ? "skip (nobarrier)" : "issue",
1523		__entry->flush_merge ? " with flush_merge" : "",
1524		__entry->ret)
1525);
1526
1527TRACE_EVENT(f2fs_lookup_extent_tree_start,
1528
1529	TP_PROTO(struct inode *inode, unsigned int pgofs),
1530
1531	TP_ARGS(inode, pgofs),
1532
1533	TP_STRUCT__entry(
1534		__field(dev_t,	dev)
1535		__field(ino_t,	ino)
1536		__field(unsigned int, pgofs)
 
1537	),
1538
1539	TP_fast_assign(
1540		__entry->dev = inode->i_sb->s_dev;
1541		__entry->ino = inode->i_ino;
1542		__entry->pgofs = pgofs;
 
1543	),
1544
1545	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u",
1546		show_dev_ino(__entry),
1547		__entry->pgofs)
 
1548);
1549
1550TRACE_EVENT_CONDITION(f2fs_lookup_extent_tree_end,
1551
1552	TP_PROTO(struct inode *inode, unsigned int pgofs,
1553						struct extent_info *ei),
1554
1555	TP_ARGS(inode, pgofs, ei),
1556
1557	TP_CONDITION(ei),
1558
1559	TP_STRUCT__entry(
1560		__field(dev_t,	dev)
1561		__field(ino_t,	ino)
1562		__field(unsigned int, pgofs)
1563		__field(unsigned int, fofs)
 
1564		__field(u32, blk)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1565		__field(unsigned int, len)
 
 
1566	),
1567
1568	TP_fast_assign(
1569		__entry->dev = inode->i_sb->s_dev;
1570		__entry->ino = inode->i_ino;
1571		__entry->pgofs = pgofs;
1572		__entry->fofs = ei->fofs;
1573		__entry->blk = ei->blk;
1574		__entry->len = ei->len;
 
 
1575	),
1576
1577	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
1578		"ext_info(fofs: %u, blk: %u, len: %u)",
1579		show_dev_ino(__entry),
1580		__entry->pgofs,
1581		__entry->fofs,
1582		__entry->blk,
1583		__entry->len)
 
1584);
1585
1586TRACE_EVENT(f2fs_update_extent_tree_range,
1587
1588	TP_PROTO(struct inode *inode, unsigned int pgofs, block_t blkaddr,
1589						unsigned int len),
 
1590
1591	TP_ARGS(inode, pgofs, blkaddr, len),
1592
1593	TP_STRUCT__entry(
1594		__field(dev_t,	dev)
1595		__field(ino_t,	ino)
1596		__field(unsigned int, pgofs)
1597		__field(u32, blk)
1598		__field(unsigned int, len)
 
1599	),
1600
1601	TP_fast_assign(
1602		__entry->dev = inode->i_sb->s_dev;
1603		__entry->ino = inode->i_ino;
1604		__entry->pgofs = pgofs;
 
1605		__entry->blk = blkaddr;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1606		__entry->len = len;
 
 
1607	),
1608
1609	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
1610					"blkaddr = %u, len = %u",
1611		show_dev_ino(__entry),
1612		__entry->pgofs,
1613		__entry->blk,
1614		__entry->len)
 
1615);
1616
1617TRACE_EVENT(f2fs_shrink_extent_tree,
1618
1619	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt,
1620						unsigned int tree_cnt),
1621
1622	TP_ARGS(sbi, node_cnt, tree_cnt),
1623
1624	TP_STRUCT__entry(
1625		__field(dev_t,	dev)
1626		__field(unsigned int, node_cnt)
1627		__field(unsigned int, tree_cnt)
 
1628	),
1629
1630	TP_fast_assign(
1631		__entry->dev = sbi->sb->s_dev;
1632		__entry->node_cnt = node_cnt;
1633		__entry->tree_cnt = tree_cnt;
 
1634	),
1635
1636	TP_printk("dev = (%d,%d), shrunk: node_cnt = %u, tree_cnt = %u",
1637		show_dev(__entry->dev),
1638		__entry->node_cnt,
1639		__entry->tree_cnt)
 
1640);
1641
1642TRACE_EVENT(f2fs_destroy_extent_tree,
1643
1644	TP_PROTO(struct inode *inode, unsigned int node_cnt),
 
1645
1646	TP_ARGS(inode, node_cnt),
1647
1648	TP_STRUCT__entry(
1649		__field(dev_t,	dev)
1650		__field(ino_t,	ino)
1651		__field(unsigned int, node_cnt)
 
1652	),
1653
1654	TP_fast_assign(
1655		__entry->dev = inode->i_sb->s_dev;
1656		__entry->ino = inode->i_ino;
1657		__entry->node_cnt = node_cnt;
 
1658	),
1659
1660	TP_printk("dev = (%d,%d), ino = %lu, destroyed: node_cnt = %u",
1661		show_dev_ino(__entry),
1662		__entry->node_cnt)
 
1663);
1664
1665DECLARE_EVENT_CLASS(f2fs_sync_dirty_inodes,
1666
1667	TP_PROTO(struct super_block *sb, int type, s64 count),
1668
1669	TP_ARGS(sb, type, count),
1670
1671	TP_STRUCT__entry(
1672		__field(dev_t, dev)
1673		__field(int, type)
1674		__field(s64, count)
1675	),
1676
1677	TP_fast_assign(
1678		__entry->dev	= sb->s_dev;
1679		__entry->type	= type;
1680		__entry->count	= count;
1681	),
1682
1683	TP_printk("dev = (%d,%d), %s, dirty count = %lld",
1684		show_dev(__entry->dev),
1685		show_file_type(__entry->type),
1686		__entry->count)
1687);
1688
1689DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_enter,
1690
1691	TP_PROTO(struct super_block *sb, int type, s64 count),
1692
1693	TP_ARGS(sb, type, count)
1694);
1695
1696DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_exit,
1697
1698	TP_PROTO(struct super_block *sb, int type, s64 count),
1699
1700	TP_ARGS(sb, type, count)
1701);
1702
1703TRACE_EVENT(f2fs_shutdown,
1704
1705	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int mode, int ret),
1706
1707	TP_ARGS(sbi, mode, ret),
1708
1709	TP_STRUCT__entry(
1710		__field(dev_t,	dev)
1711		__field(unsigned int, mode)
1712		__field(int, ret)
1713	),
1714
1715	TP_fast_assign(
1716		__entry->dev = sbi->sb->s_dev;
1717		__entry->mode = mode;
1718		__entry->ret = ret;
1719	),
1720
1721	TP_printk("dev = (%d,%d), mode: %s, ret:%d",
1722		show_dev(__entry->dev),
1723		show_shutdown_mode(__entry->mode),
1724		__entry->ret)
1725);
1726
1727DECLARE_EVENT_CLASS(f2fs_zip_start,
1728
1729	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1730			unsigned int cluster_size, unsigned char algtype),
1731
1732	TP_ARGS(inode, cluster_idx, cluster_size, algtype),
1733
1734	TP_STRUCT__entry(
1735		__field(dev_t,	dev)
1736		__field(ino_t,	ino)
1737		__field(pgoff_t, idx)
1738		__field(unsigned int, size)
1739		__field(unsigned int, algtype)
1740	),
1741
1742	TP_fast_assign(
1743		__entry->dev = inode->i_sb->s_dev;
1744		__entry->ino = inode->i_ino;
1745		__entry->idx = cluster_idx;
1746		__entry->size = cluster_size;
1747		__entry->algtype = algtype;
1748	),
1749
1750	TP_printk("dev = (%d,%d), ino = %lu, cluster_idx:%lu, "
1751		"cluster_size = %u, algorithm = %s",
1752		show_dev_ino(__entry),
1753		__entry->idx,
1754		__entry->size,
1755		show_compress_algorithm(__entry->algtype))
1756);
1757
1758DECLARE_EVENT_CLASS(f2fs_zip_end,
1759
1760	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1761			unsigned int compressed_size, int ret),
1762
1763	TP_ARGS(inode, cluster_idx, compressed_size, ret),
1764
1765	TP_STRUCT__entry(
1766		__field(dev_t,	dev)
1767		__field(ino_t,	ino)
1768		__field(pgoff_t, idx)
1769		__field(unsigned int, size)
1770		__field(unsigned int, ret)
1771	),
1772
1773	TP_fast_assign(
1774		__entry->dev = inode->i_sb->s_dev;
1775		__entry->ino = inode->i_ino;
1776		__entry->idx = cluster_idx;
1777		__entry->size = compressed_size;
1778		__entry->ret = ret;
1779	),
1780
1781	TP_printk("dev = (%d,%d), ino = %lu, cluster_idx:%lu, "
1782		"compressed_size = %u, ret = %d",
1783		show_dev_ino(__entry),
1784		__entry->idx,
1785		__entry->size,
1786		__entry->ret)
1787);
1788
1789DEFINE_EVENT(f2fs_zip_start, f2fs_compress_pages_start,
1790
1791	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1792		unsigned int cluster_size, unsigned char algtype),
1793
1794	TP_ARGS(inode, cluster_idx, cluster_size, algtype)
1795);
1796
1797DEFINE_EVENT(f2fs_zip_start, f2fs_decompress_pages_start,
1798
1799	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1800		unsigned int cluster_size, unsigned char algtype),
1801
1802	TP_ARGS(inode, cluster_idx, cluster_size, algtype)
1803);
1804
1805DEFINE_EVENT(f2fs_zip_end, f2fs_compress_pages_end,
1806
1807	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1808			unsigned int compressed_size, int ret),
1809
1810	TP_ARGS(inode, cluster_idx, compressed_size, ret)
1811);
1812
1813DEFINE_EVENT(f2fs_zip_end, f2fs_decompress_pages_end,
1814
1815	TP_PROTO(struct inode *inode, pgoff_t cluster_idx,
1816			unsigned int compressed_size, int ret),
1817
1818	TP_ARGS(inode, cluster_idx, compressed_size, ret)
1819);
1820
 
1821TRACE_EVENT(f2fs_iostat,
1822
1823	TP_PROTO(struct f2fs_sb_info *sbi, unsigned long long *iostat),
1824
1825	TP_ARGS(sbi, iostat),
1826
1827	TP_STRUCT__entry(
1828		__field(dev_t,	dev)
1829		__field(unsigned long long,	app_dio)
1830		__field(unsigned long long,	app_bio)
1831		__field(unsigned long long,	app_wio)
1832		__field(unsigned long long,	app_mio)
 
 
1833		__field(unsigned long long,	fs_dio)
 
1834		__field(unsigned long long,	fs_nio)
1835		__field(unsigned long long,	fs_mio)
1836		__field(unsigned long long,	fs_gc_dio)
1837		__field(unsigned long long,	fs_gc_nio)
1838		__field(unsigned long long,	fs_cp_dio)
1839		__field(unsigned long long,	fs_cp_nio)
1840		__field(unsigned long long,	fs_cp_mio)
1841		__field(unsigned long long,	app_drio)
1842		__field(unsigned long long,	app_brio)
1843		__field(unsigned long long,	app_rio)
1844		__field(unsigned long long,	app_mrio)
 
 
1845		__field(unsigned long long,	fs_drio)
1846		__field(unsigned long long,	fs_gdrio)
1847		__field(unsigned long long,	fs_cdrio)
1848		__field(unsigned long long,	fs_nrio)
1849		__field(unsigned long long,	fs_mrio)
1850		__field(unsigned long long,	fs_discard)
 
1851	),
1852
1853	TP_fast_assign(
1854		__entry->dev		= sbi->sb->s_dev;
1855		__entry->app_dio	= iostat[APP_DIRECT_IO];
1856		__entry->app_bio	= iostat[APP_BUFFERED_IO];
1857		__entry->app_wio	= iostat[APP_WRITE_IO];
1858		__entry->app_mio	= iostat[APP_MAPPED_IO];
 
 
1859		__entry->fs_dio		= iostat[FS_DATA_IO];
 
1860		__entry->fs_nio		= iostat[FS_NODE_IO];
1861		__entry->fs_mio		= iostat[FS_META_IO];
1862		__entry->fs_gc_dio	= iostat[FS_GC_DATA_IO];
1863		__entry->fs_gc_nio	= iostat[FS_GC_NODE_IO];
1864		__entry->fs_cp_dio	= iostat[FS_CP_DATA_IO];
1865		__entry->fs_cp_nio	= iostat[FS_CP_NODE_IO];
1866		__entry->fs_cp_mio	= iostat[FS_CP_META_IO];
1867		__entry->app_drio	= iostat[APP_DIRECT_READ_IO];
1868		__entry->app_brio	= iostat[APP_BUFFERED_READ_IO];
1869		__entry->app_rio	= iostat[APP_READ_IO];
1870		__entry->app_mrio	= iostat[APP_MAPPED_READ_IO];
 
 
1871		__entry->fs_drio	= iostat[FS_DATA_READ_IO];
1872		__entry->fs_gdrio	= iostat[FS_GDATA_READ_IO];
1873		__entry->fs_cdrio	= iostat[FS_CDATA_READ_IO];
1874		__entry->fs_nrio	= iostat[FS_NODE_READ_IO];
1875		__entry->fs_mrio	= iostat[FS_META_READ_IO];
1876		__entry->fs_discard	= iostat[FS_DISCARD];
 
1877	),
1878
1879	TP_printk("dev = (%d,%d), "
1880		"app [write=%llu (direct=%llu, buffered=%llu), mapped=%llu], "
1881		"fs [data=%llu, node=%llu, meta=%llu, discard=%llu], "
 
 
1882		"gc [data=%llu, node=%llu], "
1883		"cp [data=%llu, node=%llu, meta=%llu], "
1884		"app [read=%llu (direct=%llu, buffered=%llu), mapped=%llu], "
1885		"fs [data=%llu, (gc_data=%llu, compr_data=%llu), "
 
1886		"node=%llu, meta=%llu]",
1887		show_dev(__entry->dev), __entry->app_wio, __entry->app_dio,
1888		__entry->app_bio, __entry->app_mio, __entry->fs_dio,
 
1889		__entry->fs_nio, __entry->fs_mio, __entry->fs_discard,
 
1890		__entry->fs_gc_dio, __entry->fs_gc_nio, __entry->fs_cp_dio,
1891		__entry->fs_cp_nio, __entry->fs_cp_mio,
1892		__entry->app_rio, __entry->app_drio, __entry->app_brio,
1893		__entry->app_mrio, __entry->fs_drio, __entry->fs_gdrio,
 
1894		__entry->fs_cdrio, __entry->fs_nrio, __entry->fs_mrio)
1895);
1896
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1897TRACE_EVENT(f2fs_bmap,
1898
1899	TP_PROTO(struct inode *inode, sector_t lblock, sector_t pblock),
1900
1901	TP_ARGS(inode, lblock, pblock),
1902
1903	TP_STRUCT__entry(
1904		__field(dev_t, dev)
1905		__field(ino_t, ino)
1906		__field(sector_t, lblock)
1907		__field(sector_t, pblock)
1908	),
1909
1910	TP_fast_assign(
1911		__entry->dev		= inode->i_sb->s_dev;
1912		__entry->ino		= inode->i_ino;
1913		__entry->lblock		= lblock;
1914		__entry->pblock		= pblock;
1915	),
1916
1917	TP_printk("dev = (%d,%d), ino = %lu, lblock:%lld, pblock:%lld",
1918		show_dev_ino(__entry),
1919		(unsigned long long)__entry->lblock,
1920		(unsigned long long)__entry->pblock)
1921);
1922
1923TRACE_EVENT(f2fs_fiemap,
1924
1925	TP_PROTO(struct inode *inode, sector_t lblock, sector_t pblock,
1926		unsigned long long len, unsigned int flags, int ret),
1927
1928	TP_ARGS(inode, lblock, pblock, len, flags, ret),
1929
1930	TP_STRUCT__entry(
1931		__field(dev_t, dev)
1932		__field(ino_t, ino)
1933		__field(sector_t, lblock)
1934		__field(sector_t, pblock)
1935		__field(unsigned long long, len)
1936		__field(unsigned int, flags)
1937		__field(int, ret)
1938	),
1939
1940	TP_fast_assign(
1941		__entry->dev		= inode->i_sb->s_dev;
1942		__entry->ino		= inode->i_ino;
1943		__entry->lblock		= lblock;
1944		__entry->pblock		= pblock;
1945		__entry->len		= len;
1946		__entry->flags		= flags;
1947		__entry->ret		= ret;
1948	),
1949
1950	TP_printk("dev = (%d,%d), ino = %lu, lblock:%lld, pblock:%lld, "
1951		"len:%llu, flags:%u, ret:%d",
1952		show_dev_ino(__entry),
1953		(unsigned long long)__entry->lblock,
1954		(unsigned long long)__entry->pblock,
1955		__entry->len,
1956		__entry->flags,
1957		__entry->ret)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1958);
1959
1960#endif /* _TRACE_F2FS_H */
1961
1962 /* This part must be outside protection */
1963#include <trace/define_trace.h>