Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/trace/events/fs_dax.h
26282 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#undef TRACE_SYSTEM
3
#define TRACE_SYSTEM fs_dax
4
5
#if !defined(_TRACE_FS_DAX_H) || defined(TRACE_HEADER_MULTI_READ)
6
#define _TRACE_FS_DAX_H
7
8
#include <linux/tracepoint.h>
9
10
DECLARE_EVENT_CLASS(dax_pmd_fault_class,
11
TP_PROTO(struct inode *inode, struct vm_fault *vmf,
12
pgoff_t max_pgoff, int result),
13
TP_ARGS(inode, vmf, max_pgoff, result),
14
TP_STRUCT__entry(
15
__field(unsigned long, ino)
16
__field(unsigned long, vm_start)
17
__field(unsigned long, vm_end)
18
__field(vm_flags_t, vm_flags)
19
__field(unsigned long, address)
20
__field(pgoff_t, pgoff)
21
__field(pgoff_t, max_pgoff)
22
__field(dev_t, dev)
23
__field(unsigned int, flags)
24
__field(int, result)
25
),
26
TP_fast_assign(
27
__entry->dev = inode->i_sb->s_dev;
28
__entry->ino = inode->i_ino;
29
__entry->vm_start = vmf->vma->vm_start;
30
__entry->vm_end = vmf->vma->vm_end;
31
__entry->vm_flags = vmf->vma->vm_flags;
32
__entry->address = vmf->address;
33
__entry->flags = vmf->flags;
34
__entry->pgoff = vmf->pgoff;
35
__entry->max_pgoff = max_pgoff;
36
__entry->result = result;
37
),
38
TP_printk("dev %d:%d ino %#lx %s %s address %#lx vm_start "
39
"%#lx vm_end %#lx pgoff %#lx max_pgoff %#lx %s",
40
MAJOR(__entry->dev),
41
MINOR(__entry->dev),
42
__entry->ino,
43
__entry->vm_flags & VM_SHARED ? "shared" : "private",
44
__print_flags(__entry->flags, "|", FAULT_FLAG_TRACE),
45
__entry->address,
46
__entry->vm_start,
47
__entry->vm_end,
48
__entry->pgoff,
49
__entry->max_pgoff,
50
__print_flags(__entry->result, "|", VM_FAULT_RESULT_TRACE)
51
)
52
)
53
54
#define DEFINE_PMD_FAULT_EVENT(name) \
55
DEFINE_EVENT(dax_pmd_fault_class, name, \
56
TP_PROTO(struct inode *inode, struct vm_fault *vmf, \
57
pgoff_t max_pgoff, int result), \
58
TP_ARGS(inode, vmf, max_pgoff, result))
59
60
DEFINE_PMD_FAULT_EVENT(dax_pmd_fault);
61
DEFINE_PMD_FAULT_EVENT(dax_pmd_fault_done);
62
63
DECLARE_EVENT_CLASS(dax_pmd_load_hole_class,
64
TP_PROTO(struct inode *inode, struct vm_fault *vmf,
65
struct folio *zero_folio,
66
void *radix_entry),
67
TP_ARGS(inode, vmf, zero_folio, radix_entry),
68
TP_STRUCT__entry(
69
__field(unsigned long, ino)
70
__field(vm_flags_t, vm_flags)
71
__field(unsigned long, address)
72
__field(struct folio *, zero_folio)
73
__field(void *, radix_entry)
74
__field(dev_t, dev)
75
),
76
TP_fast_assign(
77
__entry->dev = inode->i_sb->s_dev;
78
__entry->ino = inode->i_ino;
79
__entry->vm_flags = vmf->vma->vm_flags;
80
__entry->address = vmf->address;
81
__entry->zero_folio = zero_folio;
82
__entry->radix_entry = radix_entry;
83
),
84
TP_printk("dev %d:%d ino %#lx %s address %#lx zero_folio %p "
85
"radix_entry %#lx",
86
MAJOR(__entry->dev),
87
MINOR(__entry->dev),
88
__entry->ino,
89
__entry->vm_flags & VM_SHARED ? "shared" : "private",
90
__entry->address,
91
__entry->zero_folio,
92
(unsigned long)__entry->radix_entry
93
)
94
)
95
96
#define DEFINE_PMD_LOAD_HOLE_EVENT(name) \
97
DEFINE_EVENT(dax_pmd_load_hole_class, name, \
98
TP_PROTO(struct inode *inode, struct vm_fault *vmf, \
99
struct folio *zero_folio, void *radix_entry), \
100
TP_ARGS(inode, vmf, zero_folio, radix_entry))
101
102
DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole);
103
DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole_fallback);
104
105
DECLARE_EVENT_CLASS(dax_pte_fault_class,
106
TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result),
107
TP_ARGS(inode, vmf, result),
108
TP_STRUCT__entry(
109
__field(unsigned long, ino)
110
__field(vm_flags_t, vm_flags)
111
__field(unsigned long, address)
112
__field(pgoff_t, pgoff)
113
__field(dev_t, dev)
114
__field(unsigned int, flags)
115
__field(int, result)
116
),
117
TP_fast_assign(
118
__entry->dev = inode->i_sb->s_dev;
119
__entry->ino = inode->i_ino;
120
__entry->vm_flags = vmf->vma->vm_flags;
121
__entry->address = vmf->address;
122
__entry->flags = vmf->flags;
123
__entry->pgoff = vmf->pgoff;
124
__entry->result = result;
125
),
126
TP_printk("dev %d:%d ino %#lx %s %s address %#lx pgoff %#lx %s",
127
MAJOR(__entry->dev),
128
MINOR(__entry->dev),
129
__entry->ino,
130
__entry->vm_flags & VM_SHARED ? "shared" : "private",
131
__print_flags(__entry->flags, "|", FAULT_FLAG_TRACE),
132
__entry->address,
133
__entry->pgoff,
134
__print_flags(__entry->result, "|", VM_FAULT_RESULT_TRACE)
135
)
136
)
137
138
#define DEFINE_PTE_FAULT_EVENT(name) \
139
DEFINE_EVENT(dax_pte_fault_class, name, \
140
TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result), \
141
TP_ARGS(inode, vmf, result))
142
143
DEFINE_PTE_FAULT_EVENT(dax_pte_fault);
144
DEFINE_PTE_FAULT_EVENT(dax_pte_fault_done);
145
DEFINE_PTE_FAULT_EVENT(dax_load_hole);
146
DEFINE_PTE_FAULT_EVENT(dax_insert_pfn_mkwrite_no_entry);
147
DEFINE_PTE_FAULT_EVENT(dax_insert_pfn_mkwrite);
148
149
DECLARE_EVENT_CLASS(dax_writeback_range_class,
150
TP_PROTO(struct inode *inode, pgoff_t start_index, pgoff_t end_index),
151
TP_ARGS(inode, start_index, end_index),
152
TP_STRUCT__entry(
153
__field(unsigned long, ino)
154
__field(pgoff_t, start_index)
155
__field(pgoff_t, end_index)
156
__field(dev_t, dev)
157
),
158
TP_fast_assign(
159
__entry->dev = inode->i_sb->s_dev;
160
__entry->ino = inode->i_ino;
161
__entry->start_index = start_index;
162
__entry->end_index = end_index;
163
),
164
TP_printk("dev %d:%d ino %#lx pgoff %#lx-%#lx",
165
MAJOR(__entry->dev),
166
MINOR(__entry->dev),
167
__entry->ino,
168
__entry->start_index,
169
__entry->end_index
170
)
171
)
172
173
#define DEFINE_WRITEBACK_RANGE_EVENT(name) \
174
DEFINE_EVENT(dax_writeback_range_class, name, \
175
TP_PROTO(struct inode *inode, pgoff_t start_index, pgoff_t end_index),\
176
TP_ARGS(inode, start_index, end_index))
177
178
DEFINE_WRITEBACK_RANGE_EVENT(dax_writeback_range);
179
DEFINE_WRITEBACK_RANGE_EVENT(dax_writeback_range_done);
180
181
TRACE_EVENT(dax_writeback_one,
182
TP_PROTO(struct inode *inode, pgoff_t pgoff, pgoff_t pglen),
183
TP_ARGS(inode, pgoff, pglen),
184
TP_STRUCT__entry(
185
__field(unsigned long, ino)
186
__field(pgoff_t, pgoff)
187
__field(pgoff_t, pglen)
188
__field(dev_t, dev)
189
),
190
TP_fast_assign(
191
__entry->dev = inode->i_sb->s_dev;
192
__entry->ino = inode->i_ino;
193
__entry->pgoff = pgoff;
194
__entry->pglen = pglen;
195
),
196
TP_printk("dev %d:%d ino %#lx pgoff %#lx pglen %#lx",
197
MAJOR(__entry->dev),
198
MINOR(__entry->dev),
199
__entry->ino,
200
__entry->pgoff,
201
__entry->pglen
202
)
203
)
204
205
#endif /* _TRACE_FS_DAX_H */
206
207
/* This part must be outside protection */
208
#include <trace/define_trace.h>
209
210