arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / include / trace / events / erofs.h
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
11 struct 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_ENCODED,            "E" },          \
30         { EROFS_MAP_FULL_MAPPED,        "F" },          \
31         { EROFS_MAP_FRAGMENT,           "R" },          \
32         { EROFS_MAP_PARTIAL_REF,        "P" })
33
34 TRACE_EVENT(erofs_lookup,
35
36         TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
37
38         TP_ARGS(dir, dentry, flags),
39
40         TP_STRUCT__entry(
41                 __field(dev_t,          dev     )
42                 __field(erofs_nid_t,    nid     )
43                 __string(name,          dentry->d_name.name     )
44                 __field(unsigned int,   flags   )
45         ),
46
47         TP_fast_assign(
48                 __entry->dev    = dir->i_sb->s_dev;
49                 __entry->nid    = EROFS_I(dir)->nid;
50                 __assign_str(name, dentry->d_name.name);
51                 __entry->flags  = flags;
52         ),
53
54         TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",
55                 show_dev_nid(__entry),
56                 __get_str(name),
57                 __entry->flags)
58 );
59
60 TRACE_EVENT(erofs_fill_inode,
61         TP_PROTO(struct inode *inode),
62         TP_ARGS(inode),
63
64         TP_STRUCT__entry(
65                 __field(dev_t,          dev     )
66                 __field(erofs_nid_t,    nid     )
67                 __field(erofs_blk_t,    blkaddr )
68                 __field(unsigned int,   ofs     )
69         ),
70
71         TP_fast_assign(
72                 __entry->dev            = inode->i_sb->s_dev;
73                 __entry->nid            = EROFS_I(inode)->nid;
74                 __entry->blkaddr        = erofs_blknr(inode->i_sb, erofs_iloc(inode));
75                 __entry->ofs            = erofs_blkoff(inode->i_sb, erofs_iloc(inode));
76         ),
77
78         TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u",
79                   show_dev_nid(__entry),
80                   __entry->blkaddr, __entry->ofs)
81 );
82
83 TRACE_EVENT(erofs_read_folio,
84
85         TP_PROTO(struct folio *folio, bool raw),
86
87         TP_ARGS(folio, raw),
88
89         TP_STRUCT__entry(
90                 __field(dev_t,          dev     )
91                 __field(erofs_nid_t,    nid     )
92                 __field(int,            dir     )
93                 __field(pgoff_t,        index   )
94                 __field(int,            uptodate)
95                 __field(bool,           raw     )
96         ),
97
98         TP_fast_assign(
99                 __entry->dev    = folio->mapping->host->i_sb->s_dev;
100                 __entry->nid    = EROFS_I(folio->mapping->host)->nid;
101                 __entry->dir    = S_ISDIR(folio->mapping->host->i_mode);
102                 __entry->index  = folio->index;
103                 __entry->uptodate = folio_test_uptodate(folio);
104                 __entry->raw = raw;
105         ),
106
107         TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "
108                 "raw = %d",
109                 show_dev_nid(__entry),
110                 show_file_type(__entry->dir),
111                 (unsigned long)__entry->index,
112                 __entry->uptodate,
113                 __entry->raw)
114 );
115
116 TRACE_EVENT(erofs_readpages,
117
118         TP_PROTO(struct inode *inode, pgoff_t start, unsigned int nrpage,
119                 bool raw),
120
121         TP_ARGS(inode, start, nrpage, raw),
122
123         TP_STRUCT__entry(
124                 __field(dev_t,          dev     )
125                 __field(erofs_nid_t,    nid     )
126                 __field(pgoff_t,        start   )
127                 __field(unsigned int,   nrpage  )
128                 __field(bool,           raw     )
129         ),
130
131         TP_fast_assign(
132                 __entry->dev    = inode->i_sb->s_dev;
133                 __entry->nid    = EROFS_I(inode)->nid;
134                 __entry->start  = start;
135                 __entry->nrpage = nrpage;
136                 __entry->raw    = raw;
137         ),
138
139         TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",
140                 show_dev_nid(__entry),
141                 (unsigned long)__entry->start,
142                 __entry->nrpage,
143                 __entry->raw)
144 );
145
146 DECLARE_EVENT_CLASS(erofs__map_blocks_enter,
147         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
148                  unsigned int flags),
149
150         TP_ARGS(inode, map, flags),
151
152         TP_STRUCT__entry(
153                 __field(        dev_t,          dev             )
154                 __field(        erofs_nid_t,    nid             )
155                 __field(        erofs_off_t,    la              )
156                 __field(        u64,            llen            )
157                 __field(        unsigned int,   flags           )
158         ),
159
160         TP_fast_assign(
161                 __entry->dev    = inode->i_sb->s_dev;
162                 __entry->nid    = EROFS_I(inode)->nid;
163                 __entry->la     = map->m_la;
164                 __entry->llen   = map->m_llen;
165                 __entry->flags  = flags;
166         ),
167
168         TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
169                   show_dev_nid(__entry),
170                   __entry->la, __entry->llen,
171                   __entry->flags ? show_map_flags(__entry->flags) : "NULL")
172 );
173
174 DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_enter,
175         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
176                  unsigned flags),
177
178         TP_ARGS(inode, map, flags)
179 );
180
181 DEFINE_EVENT(erofs__map_blocks_enter, z_erofs_map_blocks_iter_enter,
182         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
183                  unsigned int flags),
184
185         TP_ARGS(inode, map, flags)
186 );
187
188 DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
189         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
190                  unsigned int flags, int ret),
191
192         TP_ARGS(inode, map, flags, ret),
193
194         TP_STRUCT__entry(
195                 __field(        dev_t,          dev             )
196                 __field(        erofs_nid_t,    nid             )
197                 __field(        unsigned int,   flags           )
198                 __field(        erofs_off_t,    la              )
199                 __field(        erofs_off_t,    pa              )
200                 __field(        u64,            llen            )
201                 __field(        u64,            plen            )
202                 __field(        unsigned int,   mflags          )
203                 __field(        int,            ret             )
204         ),
205
206         TP_fast_assign(
207                 __entry->dev    = inode->i_sb->s_dev;
208                 __entry->nid    = EROFS_I(inode)->nid;
209                 __entry->flags  = flags;
210                 __entry->la     = map->m_la;
211                 __entry->pa     = map->m_pa;
212                 __entry->llen   = map->m_llen;
213                 __entry->plen   = map->m_plen;
214                 __entry->mflags = map->m_flags;
215                 __entry->ret    = ret;
216         ),
217
218         TP_printk("dev = (%d,%d), nid = %llu, flags %s "
219                   "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
220                   show_dev_nid(__entry),
221                   __entry->flags ? show_map_flags(__entry->flags) : "NULL",
222                   __entry->la, __entry->pa, __entry->llen, __entry->plen,
223                   show_mflags(__entry->mflags), __entry->ret)
224 );
225
226 DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_exit,
227         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
228                  unsigned flags, int ret),
229
230         TP_ARGS(inode, map, flags, ret)
231 );
232
233 DEFINE_EVENT(erofs__map_blocks_exit, z_erofs_map_blocks_iter_exit,
234         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
235                  unsigned int flags, int ret),
236
237         TP_ARGS(inode, map, flags, ret)
238 );
239
240 TRACE_EVENT(erofs_destroy_inode,
241         TP_PROTO(struct inode *inode),
242
243         TP_ARGS(inode),
244
245         TP_STRUCT__entry(
246                 __field(        dev_t,          dev             )
247                 __field(        erofs_nid_t,    nid             )
248         ),
249
250         TP_fast_assign(
251                 __entry->dev    = inode->i_sb->s_dev;
252                 __entry->nid    = EROFS_I(inode)->nid;
253         ),
254
255         TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry))
256 );
257
258 #endif /* _TRACE_EROFS_H */
259
260  /* This part must be outside protection */
261 #include <trace/define_trace.h>