Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/trace/events/f2fs.h
49231 views
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
14
TRACE_DEFINE_ENUM(NODE);
15
TRACE_DEFINE_ENUM(DATA);
16
TRACE_DEFINE_ENUM(META);
17
TRACE_DEFINE_ENUM(META_FLUSH);
18
TRACE_DEFINE_ENUM(IPU);
19
TRACE_DEFINE_ENUM(OPU);
20
TRACE_DEFINE_ENUM(HOT);
21
TRACE_DEFINE_ENUM(WARM);
22
TRACE_DEFINE_ENUM(COLD);
23
TRACE_DEFINE_ENUM(CURSEG_HOT_DATA);
24
TRACE_DEFINE_ENUM(CURSEG_WARM_DATA);
25
TRACE_DEFINE_ENUM(CURSEG_COLD_DATA);
26
TRACE_DEFINE_ENUM(CURSEG_HOT_NODE);
27
TRACE_DEFINE_ENUM(CURSEG_WARM_NODE);
28
TRACE_DEFINE_ENUM(CURSEG_COLD_NODE);
29
TRACE_DEFINE_ENUM(NO_CHECK_TYPE);
30
TRACE_DEFINE_ENUM(GC_GREEDY);
31
TRACE_DEFINE_ENUM(GC_CB);
32
TRACE_DEFINE_ENUM(FG_GC);
33
TRACE_DEFINE_ENUM(BG_GC);
34
TRACE_DEFINE_ENUM(LFS);
35
TRACE_DEFINE_ENUM(SSR);
36
TRACE_DEFINE_ENUM(__REQ_RAHEAD);
37
TRACE_DEFINE_ENUM(__REQ_SYNC);
38
TRACE_DEFINE_ENUM(__REQ_IDLE);
39
TRACE_DEFINE_ENUM(__REQ_PREFLUSH);
40
TRACE_DEFINE_ENUM(__REQ_FUA);
41
TRACE_DEFINE_ENUM(__REQ_PRIO);
42
TRACE_DEFINE_ENUM(__REQ_META);
43
TRACE_DEFINE_ENUM(CP_UMOUNT);
44
TRACE_DEFINE_ENUM(CP_FASTBOOT);
45
TRACE_DEFINE_ENUM(CP_SYNC);
46
TRACE_DEFINE_ENUM(CP_RECOVERY);
47
TRACE_DEFINE_ENUM(CP_DISCARD);
48
TRACE_DEFINE_ENUM(CP_TRIMMED);
49
TRACE_DEFINE_ENUM(CP_PAUSE);
50
TRACE_DEFINE_ENUM(CP_RESIZE);
51
TRACE_DEFINE_ENUM(EX_READ);
52
TRACE_DEFINE_ENUM(EX_BLOCK_AGE);
53
TRACE_DEFINE_ENUM(CP_PHASE_START_BLOCK_OPS);
54
TRACE_DEFINE_ENUM(CP_PHASE_FINISH_BLOCK_OPS);
55
TRACE_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
187
struct f2fs_sb_info;
188
struct f2fs_io_info;
189
struct extent_info;
190
struct victim_sel_policy;
191
struct f2fs_map_blocks;
192
193
DECLARE_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
232
DECLARE_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
259
DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
260
261
TP_PROTO(struct inode *inode),
262
263
TP_ARGS(inode)
264
);
265
266
TRACE_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
296
TRACE_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
320
DEFINE_EVENT(f2fs__inode, f2fs_iget,
321
322
TP_PROTO(struct inode *inode),
323
324
TP_ARGS(inode)
325
);
326
327
DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
328
329
TP_PROTO(struct inode *inode, int ret),
330
331
TP_ARGS(inode, ret)
332
);
333
334
DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
335
336
TP_PROTO(struct inode *inode),
337
338
TP_ARGS(inode)
339
);
340
341
DEFINE_EVENT(f2fs__inode_exit, f2fs_new_inode,
342
343
TP_PROTO(struct inode *inode, int ret),
344
345
TP_ARGS(inode, ret)
346
);
347
348
TRACE_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
378
DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
379
380
TP_PROTO(struct inode *inode, int ret),
381
382
TP_ARGS(inode, ret)
383
);
384
385
DEFINE_EVENT(f2fs__inode_exit, f2fs_drop_inode,
386
387
TP_PROTO(struct inode *inode, int ret),
388
389
TP_ARGS(inode, ret)
390
);
391
392
DEFINE_EVENT(f2fs__inode, f2fs_truncate,
393
394
TP_PROTO(struct inode *inode),
395
396
TP_ARGS(inode)
397
);
398
399
TRACE_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
428
DECLARE_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
458
DEFINE_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
465
DEFINE_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
472
DEFINE_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
479
DEFINE_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
486
DECLARE_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
512
DEFINE_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
519
DEFINE_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
526
DEFINE_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
533
TRACE_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
567
TRACE_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
598
TRACE_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
630
TRACE_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
680
TRACE_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
708
TRACE_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
765
TRACE_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
820
TRACE_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
872
TRACE_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
898
TRACE_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
928
TRACE_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
963
TRACE_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
997
TRACE_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
1026
TRACE_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
1066
TRACE_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
1101
TRACE_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
1135
TRACE_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
1163
DECLARE_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
1204
DEFINE_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
1213
DEFINE_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
1222
DECLARE_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
1257
DEFINE_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
1266
DEFINE_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
1275
DEFINE_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
1284
DEFINE_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
1293
TRACE_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
1319
TRACE_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
1349
DECLARE_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
1385
DEFINE_EVENT(f2fs__folio, f2fs_writepage,
1386
1387
TP_PROTO(struct folio *folio, int type),
1388
1389
TP_ARGS(folio, type)
1390
);
1391
1392
DEFINE_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
1399
DEFINE_EVENT(f2fs__folio, f2fs_readpage,
1400
1401
TP_PROTO(struct folio *folio, int type),
1402
1403
TP_ARGS(folio, type)
1404
);
1405
1406
DEFINE_EVENT(f2fs__folio, f2fs_set_page_dirty,
1407
1408
TP_PROTO(struct folio *folio, int type),
1409
1410
TP_ARGS(folio, type)
1411
);
1412
1413
TRACE_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
1450
DECLARE_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
1480
DEFINE_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
1488
DEFINE_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
1496
TRACE_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
1557
TRACE_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
1583
TRACE_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
1607
DECLARE_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
1631
DEFINE_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
1638
DEFINE_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
1645
DEFINE_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
1652
DECLARE_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
1673
DEFINE_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
1680
DEFINE_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
1687
TRACE_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
1715
TRACE_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
1741
TRACE_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
1777
TRACE_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
1816
TRACE_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
1851
TRACE_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
1886
TRACE_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
1914
TRACE_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
1941
DECLARE_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
1965
DEFINE_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
1972
DEFINE_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
1979
TRACE_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
2003
DECLARE_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
2034
DECLARE_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
2065
DEFINE_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
2073
DEFINE_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
2081
DEFINE_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
2089
DEFINE_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
2098
TRACE_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
2194
struct 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
2201
TRACE_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
2288
TRACE_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
2314
TRACE_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
2351
DECLARE_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
2392
DECLARE_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
2415
DEFINE_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
2423
DEFINE_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
2430
DEFINE_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
2438
DEFINE_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>
2449
2450