Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */
2 : #undef TRACE_SYSTEM
3 : #define TRACE_SYSTEM filemap
4 :
5 : #if !defined(_TRACE_FILEMAP_H) || defined(TRACE_HEADER_MULTI_READ)
6 : #define _TRACE_FILEMAP_H
7 :
8 : #include <linux/types.h>
9 : #include <linux/tracepoint.h>
10 : #include <linux/mm.h>
11 : #include <linux/memcontrol.h>
12 : #include <linux/device.h>
13 : #include <linux/kdev_t.h>
14 : #include <linux/errseq.h>
15 :
16 0 : DECLARE_EVENT_CLASS(mm_filemap_op_page_cache,
17 :
18 : TP_PROTO(struct page *page),
19 :
20 : TP_ARGS(page),
21 :
22 : TP_STRUCT__entry(
23 : __field(unsigned long, pfn)
24 : __field(unsigned long, i_ino)
25 : __field(unsigned long, index)
26 : __field(dev_t, s_dev)
27 : ),
28 :
29 : TP_fast_assign(
30 : __entry->pfn = page_to_pfn(page);
31 : __entry->i_ino = page->mapping->host->i_ino;
32 : __entry->index = page->index;
33 : if (page->mapping->host->i_sb)
34 : __entry->s_dev = page->mapping->host->i_sb->s_dev;
35 : else
36 : __entry->s_dev = page->mapping->host->i_rdev;
37 : ),
38 :
39 : TP_printk("dev %d:%d ino %lx page=%p pfn=%lu ofs=%lu",
40 : MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
41 : __entry->i_ino,
42 : pfn_to_page(__entry->pfn),
43 : __entry->pfn,
44 : __entry->index << PAGE_SHIFT)
45 : );
46 :
47 0 : DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_delete_from_page_cache,
48 : TP_PROTO(struct page *page),
49 : TP_ARGS(page)
50 : );
51 :
52 0 : DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_add_to_page_cache,
53 : TP_PROTO(struct page *page),
54 : TP_ARGS(page)
55 : );
56 :
57 0 : TRACE_EVENT(filemap_set_wb_err,
58 : TP_PROTO(struct address_space *mapping, errseq_t eseq),
59 :
60 : TP_ARGS(mapping, eseq),
61 :
62 : TP_STRUCT__entry(
63 : __field(unsigned long, i_ino)
64 : __field(dev_t, s_dev)
65 : __field(errseq_t, errseq)
66 : ),
67 :
68 : TP_fast_assign(
69 : __entry->i_ino = mapping->host->i_ino;
70 : __entry->errseq = eseq;
71 : if (mapping->host->i_sb)
72 : __entry->s_dev = mapping->host->i_sb->s_dev;
73 : else
74 : __entry->s_dev = mapping->host->i_rdev;
75 : ),
76 :
77 : TP_printk("dev=%d:%d ino=0x%lx errseq=0x%x",
78 : MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
79 : __entry->i_ino, __entry->errseq)
80 : );
81 :
82 0 : TRACE_EVENT(file_check_and_advance_wb_err,
83 : TP_PROTO(struct file *file, errseq_t old),
84 :
85 : TP_ARGS(file, old),
86 :
87 : TP_STRUCT__entry(
88 : __field(struct file *, file)
89 : __field(unsigned long, i_ino)
90 : __field(dev_t, s_dev)
91 : __field(errseq_t, old)
92 : __field(errseq_t, new)
93 : ),
94 :
95 : TP_fast_assign(
96 : __entry->file = file;
97 : __entry->i_ino = file->f_mapping->host->i_ino;
98 : if (file->f_mapping->host->i_sb)
99 : __entry->s_dev =
100 : file->f_mapping->host->i_sb->s_dev;
101 : else
102 : __entry->s_dev =
103 : file->f_mapping->host->i_rdev;
104 : __entry->old = old;
105 : __entry->new = file->f_wb_err;
106 : ),
107 :
108 : TP_printk("file=%p dev=%d:%d ino=0x%lx old=0x%x new=0x%x",
109 : __entry->file, MAJOR(__entry->s_dev),
110 : MINOR(__entry->s_dev), __entry->i_ino, __entry->old,
111 : __entry->new)
112 : );
113 : #endif /* _TRACE_FILEMAP_H */
114 :
115 : /* This part must be outside protection */
116 : #include <trace/define_trace.h>
|