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