GNU Linux-libre 4.19.286-gnu1
[releases.git] / drivers / staging / erofs / include / trace / events / erofs.h
1 /* SPDX-License-Identifier: GPL-2.0 */
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
10 #define show_dev(dev)           MAJOR(dev), MINOR(dev)
11 #define show_dev_nid(entry)     show_dev(entry->dev), entry->nid
12
13 #define show_file_type(type)                                            \
14         __print_symbolic(type,                                          \
15                 { 0,            "FILE" },                               \
16                 { 1,            "DIR" })
17
18 #define show_map_flags(flags) __print_flags(flags, "|", \
19         { EROFS_GET_BLOCKS_RAW, "RAW" })
20
21 #define show_mflags(flags) __print_flags(flags, "",     \
22         { EROFS_MAP_MAPPED,     "M" },                  \
23         { EROFS_MAP_META,       "I" },                  \
24         { EROFS_MAP_ZIPPED,     "Z" })
25
26 TRACE_EVENT(erofs_lookup,
27
28         TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
29
30         TP_ARGS(dir, dentry, flags),
31
32         TP_STRUCT__entry(
33                 __field(dev_t,          dev     )
34                 __field(erofs_nid_t,    nid     )
35                 __string(name,          dentry->d_name.name     )
36                 __field(unsigned int,   flags   )
37         ),
38
39         TP_fast_assign(
40                 __entry->dev    = dir->i_sb->s_dev;
41                 __entry->nid    = EROFS_V(dir)->nid;
42                 __assign_str(name, dentry->d_name.name);
43                 __entry->flags  = flags;
44         ),
45
46         TP_printk("dev = (%d,%d), pnid = %llu, name:%s, flags:%x",
47                 show_dev_nid(__entry),
48                 __get_str(name),
49                 __entry->flags)
50 );
51
52 TRACE_EVENT(erofs_fill_inode,
53         TP_PROTO(struct inode *inode, int isdir),
54         TP_ARGS(inode, isdir),
55
56         TP_STRUCT__entry(
57                 __field(dev_t,          dev     )
58                 __field(erofs_nid_t,    nid     )
59                 __field(erofs_blk_t,    blkaddr )
60                 __field(unsigned int,   ofs     )
61                 __field(int,            isdir   )
62         ),
63
64         TP_fast_assign(
65                 __entry->dev            = inode->i_sb->s_dev;
66                 __entry->nid            = EROFS_V(inode)->nid;
67                 __entry->blkaddr        = erofs_blknr(iloc(EROFS_I_SB(inode), __entry->nid));
68                 __entry->ofs            = erofs_blkoff(iloc(EROFS_I_SB(inode), __entry->nid));
69                 __entry->isdir          = isdir;
70         ),
71
72         TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u, isdir %d",
73                   show_dev_nid(__entry),
74                   __entry->blkaddr, __entry->ofs,
75                   __entry->isdir)
76 );
77
78 TRACE_EVENT(erofs_readpage,
79
80         TP_PROTO(struct page *page, bool raw),
81
82         TP_ARGS(page, raw),
83
84         TP_STRUCT__entry(
85                 __field(dev_t,          dev     )
86                 __field(erofs_nid_t,    nid     )
87                 __field(int,            dir     )
88                 __field(pgoff_t,        index   )
89                 __field(int,            uptodate)
90                 __field(bool,           raw     )
91         ),
92
93         TP_fast_assign(
94                 __entry->dev    = page->mapping->host->i_sb->s_dev;
95                 __entry->nid    = EROFS_V(page->mapping->host)->nid;
96                 __entry->dir    = S_ISDIR(page->mapping->host->i_mode);
97                 __entry->index  = page->index;
98                 __entry->uptodate = PageUptodate(page);
99                 __entry->raw = raw;
100         ),
101
102         TP_printk("dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "
103                 "raw = %d",
104                 show_dev_nid(__entry),
105                 show_file_type(__entry->dir),
106                 (unsigned long)__entry->index,
107                 __entry->uptodate,
108                 __entry->raw)
109 );
110
111 TRACE_EVENT(erofs_readpages,
112
113         TP_PROTO(struct inode *inode, struct page *page, unsigned int nrpage,
114                 bool raw),
115
116         TP_ARGS(inode, page, nrpage, raw),
117
118         TP_STRUCT__entry(
119                 __field(dev_t,          dev     )
120                 __field(erofs_nid_t,    nid     )
121                 __field(pgoff_t,        start   )
122                 __field(unsigned int,   nrpage  )
123                 __field(bool,           raw     )
124         ),
125
126         TP_fast_assign(
127                 __entry->dev    = inode->i_sb->s_dev;
128                 __entry->nid    = EROFS_V(inode)->nid;
129                 __entry->start  = page->index;
130                 __entry->nrpage = nrpage;
131                 __entry->raw    = raw;
132         ),
133
134         TP_printk("dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d",
135                 show_dev_nid(__entry),
136                 (unsigned long)__entry->start,
137                 __entry->nrpage,
138                 __entry->raw)
139 );
140
141 DECLARE_EVENT_CLASS(erofs__map_blocks_enter,
142         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
143                  unsigned int flags),
144
145         TP_ARGS(inode, map, flags),
146
147         TP_STRUCT__entry(
148                 __field(        dev_t,          dev             )
149                 __field(        erofs_nid_t,    nid             )
150                 __field(        erofs_off_t,    la              )
151                 __field(        u64,            llen            )
152                 __field(        unsigned int,   flags           )
153         ),
154
155         TP_fast_assign(
156                 __entry->dev    = inode->i_sb->s_dev;
157                 __entry->nid    = EROFS_V(inode)->nid;
158                 __entry->la     = map->m_la;
159                 __entry->llen   = map->m_llen;
160                 __entry->flags  = flags;
161         ),
162
163         TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
164                   show_dev_nid(__entry),
165                   __entry->la, __entry->llen, show_map_flags(__entry->flags))
166 );
167
168 DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_flatmode_enter,
169         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
170                  unsigned flags),
171
172         TP_ARGS(inode, map, flags)
173 );
174
175 DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
176         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
177                  unsigned int flags, int ret),
178
179         TP_ARGS(inode, map, flags, ret),
180
181         TP_STRUCT__entry(
182                 __field(        dev_t,          dev             )
183                 __field(        erofs_nid_t,    nid             )
184                 __field(        unsigned int,   flags           )
185                 __field(        erofs_off_t,    la              )
186                 __field(        erofs_off_t,    pa              )
187                 __field(        u64,            llen            )
188                 __field(        u64,            plen            )
189                 __field(        unsigned int,   mflags          )
190                 __field(        int,            ret             )
191         ),
192
193         TP_fast_assign(
194                 __entry->dev    = inode->i_sb->s_dev;
195                 __entry->nid    = EROFS_V(inode)->nid;
196                 __entry->flags  = flags;
197                 __entry->la     = map->m_la;
198                 __entry->pa     = map->m_pa;
199                 __entry->llen   = map->m_llen;
200                 __entry->plen   = map->m_plen;
201                 __entry->mflags = map->m_flags;
202                 __entry->ret    = ret;
203         ),
204
205         TP_printk("dev = (%d,%d), nid = %llu, flags %s "
206                   "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
207                   show_dev_nid(__entry), show_map_flags(__entry->flags),
208                   __entry->la, __entry->pa, __entry->llen, __entry->plen,
209                   show_mflags(__entry->mflags), __entry->ret)
210 );
211
212 DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_flatmode_exit,
213         TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
214                  unsigned flags, int ret),
215
216         TP_ARGS(inode, map, flags, ret)
217 );
218
219 TRACE_EVENT(erofs_destroy_inode,
220         TP_PROTO(struct inode *inode),
221
222         TP_ARGS(inode),
223
224         TP_STRUCT__entry(
225                 __field(        dev_t,          dev             )
226                 __field(        erofs_nid_t,    nid             )
227         ),
228
229         TP_fast_assign(
230                 __entry->dev    = inode->i_sb->s_dev;
231                 __entry->nid    = EROFS_V(inode)->nid;
232         ),
233
234         TP_printk("dev = (%d,%d), nid = %llu", show_dev_nid(__entry))
235 );
236
237 #endif /* _TRACE_EROFS_H */
238
239  /* This part must be outside protection */
240 #include <trace/define_trace.h>