projects/linux·blob master · refs

215 lines · 5.2 KiB

1/* SPDX-License-Identifier: GPL-2.0-only */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM erofs
4
5#if !defined(_TRACE_EROFS_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_EROFS_H
7
8#include <linux/tracepoint.h>
9#include <linux/fs.h>
10
11struct erofs_map_blocks;
12
13#define show_dev(dev) MAJOR(dev), MINOR(dev)
14#define show_dev_nid(entry) show_dev(entry->dev), entry->nid
15
16#define show_file_type(type) \
17 __print_symbolic(type, \
18 { 0, "FILE" }, \
19 { 1, "DIR" })
20
21#define show_map_flags(flags) __print_flags(flags, "|", \
22 { EROFS_GET_BLOCKS_FIEMAP, "FIEMAP" }, \
23 { EROFS_GET_BLOCKS_READMORE, "READMORE" }, \
24 { EROFS_GET_BLOCKS_FINDTAIL, "FINDTAIL" })
25
26#define show_mflags(flags) __print_flags(flags, "", \
27 { EROFS_MAP_MAPPED, "M" }, \
28 { EROFS_MAP_META, "I" }, \
29 { EROFS_MAP_PARTIAL_MAPPED, "T" }, \
30 { EROFS_MAP_PARTIAL_REF, "P" }, \
31 { EROFS_MAP_FRAGMENT, "R" })
32
33TRACE_EVENT(erofs_lookup,
34
35 TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
36
37 TP_ARGS(dir, dentry, flags),
38
39 TP_STRUCT__entry(
40 __field(dev_t, dev )
41 __field(erofs_nid_t, nid )
42 __string(name, dentry->d_name.name )
43 __field(unsigned int, flags )
44 ),
45
46 TP_fast_assign(
47 __entry->dev = dir->i_sb->s_dev;
48 __entry->nid = EROFS_I(dir)->nid;
49 __assign_str(name);
50 __entry->flags = flags;
51 ),
52
53 TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",
54 show_dev_nid(__entry),
55 __get_str(name),
56 __entry->flags)
57);
58
59TRACE_EVENT(erofs_fill_inode,
60 TP_PROTO(struct inode *inode),
61 TP_ARGS(inode),
62
63 TP_STRUCT__entry(
64 __field(dev_t, dev )
65 __field(erofs_nid_t, nid )
66 __field(erofs_blk_t, blkaddr )
67 __field(unsigned int, ofs )
68 ),
69
70 TP_fast_assign(
71 __entry->dev = inode->i_sb->s_dev;
72 __entry->nid = EROFS_I(inode)->nid;
73 __entry->blkaddr = erofs_blknr(inode->i_sb, erofs_iloc(inode));
74 __entry->ofs = erofs_blkoff(inode->i_sb, erofs_iloc(inode));
75 ),
76
77 TP_printk("dev = (%d,%d), nid = %llu, blkaddr %llu ofs %u",
78 show_dev_nid(__entry),
79 __entry->blkaddr, __entry->ofs)
80);
81
82TRACE_EVENT(erofs_read_folio,
83
84 TP_PROTO(struct inode *inode, struct folio *folio, bool raw),
85
86 TP_ARGS(inode, folio, raw),
87
88 TP_STRUCT__entry(
89 __field(dev_t, dev )
90 __field(erofs_nid_t, nid )
91 __field(int, dir )
92 __field(pgoff_t, index )
93 __field(unsigned int, order )
94 __field(bool, raw )
95 ),
96
97 TP_fast_assign(
98 __entry->dev = inode->i_sb->s_dev;
99 __entry->nid = EROFS_I(inode)->nid;
100 __entry->dir = S_ISDIR(inode->i_mode);
101 __entry->index = folio->index;
102 __entry->order = folio_order(folio);
103 __entry->raw = raw;
104 ),
105
106 TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, order = %u, raw = %d",
107 show_dev_nid(__entry),
108 show_file_type(__entry->dir),
109 (unsigned long)__entry->index,
110 __entry->order,
111 __entry->raw)
112);
113
114TRACE_EVENT(erofs_readahead,
115
116 TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage,
117 bool raw),
118
119 TP_ARGS(inode, start, nrpage, raw),
120
121 TP_STRUCT__entry(
122 __field(dev_t, dev )
123 __field(erofs_nid_t, nid )
124 __field(pgoff_t, start )
125 __field(unsigned int, nrpage )
126 __field(bool, raw )
127 ),
128
129 TP_fast_assign(
130 __entry->dev = inode->i_sb->s_dev;
131 __entry->nid = EROFS_I(inode)->nid;
132 __entry->start = start;
133 __entry->nrpage = nrpage;
134 __entry->raw = raw;
135 ),
136
137 TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",
138 show_dev_nid(__entry),
139 (unsigned long)__entry->start,
140 __entry->nrpage,
141 __entry->raw)
142);
143
144TRACE_EVENT(erofs_map_blocks_enter,
145
146 TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
147 unsigned int flags),
148
149 TP_ARGS(inode, map, flags),
150
151 TP_STRUCT__entry(
152 __field( dev_t, dev )
153 __field( erofs_nid_t, nid )
154 __field( erofs_off_t, la )
155 __field( u64, llen )
156 __field( unsigned int, flags )
157 ),
158
159 TP_fast_assign(
160 __entry->dev = inode->i_sb->s_dev;
161 __entry->nid = EROFS_I(inode)->nid;
162 __entry->la = map->m_la;
163 __entry->llen = map->m_llen;
164 __entry->flags = flags;
165 ),
166
167 TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
168 show_dev_nid(__entry),
169 __entry->la, __entry->llen,
170 __entry->flags ? show_map_flags(__entry->flags) : "NULL")
171);
172
173TRACE_EVENT(erofs_map_blocks_exit,
174
175 TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
176 unsigned int flags, int ret),
177
178 TP_ARGS(inode, map, flags, ret),
179
180 TP_STRUCT__entry(
181 __field( dev_t, dev )
182 __field( erofs_nid_t, nid )
183 __field( unsigned int, flags )
184 __field( erofs_off_t, la )
185 __field( erofs_off_t, pa )
186 __field( u64, llen )
187 __field( u64, plen )
188 __field( unsigned int, mflags )
189 __field( int, ret )
190 ),
191
192 TP_fast_assign(
193 __entry->dev = inode->i_sb->s_dev;
194 __entry->nid = EROFS_I(inode)->nid;
195 __entry->flags = flags;
196 __entry->la = map->m_la;
197 __entry->pa = map->m_pa;
198 __entry->llen = map->m_llen;
199 __entry->plen = map->m_plen;
200 __entry->mflags = map->m_flags;
201 __entry->ret = ret;
202 ),
203
204 TP_printk("dev = (%d,%d), nid = %llu, flags %s "
205 "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
206 show_dev_nid(__entry),
207 __entry->flags ? show_map_flags(__entry->flags) : "NULL",
208 __entry->la, __entry->pa, __entry->llen, __entry->plen,
209 show_mflags(__entry->mflags), __entry->ret)
210);
211
212#endif /* _TRACE_EROFS_H */
213
214 /* This part must be outside protection */
215#include <trace/define_trace.h>