GNU Linux-libre 4.14.262-gnu1
[releases.git] / include / trace / events / nilfs2.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM nilfs2
4
5 #if !defined(_TRACE_NILFS2_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_NILFS2_H
7
8 #include <linux/tracepoint.h>
9
10 struct nilfs_sc_info;
11
12 #define show_collection_stage(type)                                     \
13         __print_symbolic(type,                                          \
14         { NILFS_ST_INIT, "ST_INIT" },                                   \
15         { NILFS_ST_GC, "ST_GC" },                                       \
16         { NILFS_ST_FILE, "ST_FILE" },                                   \
17         { NILFS_ST_IFILE, "ST_IFILE" },                                 \
18         { NILFS_ST_CPFILE, "ST_CPFILE" },                               \
19         { NILFS_ST_SUFILE, "ST_SUFILE" },                               \
20         { NILFS_ST_DAT, "ST_DAT" },                                     \
21         { NILFS_ST_SR, "ST_SR" },                                       \
22         { NILFS_ST_DSYNC, "ST_DSYNC" },                                 \
23         { NILFS_ST_DONE, "ST_DONE"})
24
25 TRACE_EVENT(nilfs2_collection_stage_transition,
26
27             TP_PROTO(struct nilfs_sc_info *sci),
28
29             TP_ARGS(sci),
30
31             TP_STRUCT__entry(
32                     __field(void *, sci)
33                     __field(int, stage)
34             ),
35
36             TP_fast_assign(
37                         __entry->sci = sci;
38                         __entry->stage = sci->sc_stage.scnt;
39                     ),
40
41             TP_printk("sci = %p stage = %s",
42                       __entry->sci,
43                       show_collection_stage(__entry->stage))
44 );
45
46 #ifndef TRACE_HEADER_MULTI_READ
47 enum nilfs2_transaction_transition_state {
48         TRACE_NILFS2_TRANSACTION_BEGIN,
49         TRACE_NILFS2_TRANSACTION_COMMIT,
50         TRACE_NILFS2_TRANSACTION_ABORT,
51         TRACE_NILFS2_TRANSACTION_TRYLOCK,
52         TRACE_NILFS2_TRANSACTION_LOCK,
53         TRACE_NILFS2_TRANSACTION_UNLOCK,
54 };
55 #endif
56
57 #define show_transaction_state(type)                                    \
58         __print_symbolic(type,                                          \
59                          { TRACE_NILFS2_TRANSACTION_BEGIN, "BEGIN" },   \
60                          { TRACE_NILFS2_TRANSACTION_COMMIT, "COMMIT" }, \
61                          { TRACE_NILFS2_TRANSACTION_ABORT, "ABORT" },   \
62                          { TRACE_NILFS2_TRANSACTION_TRYLOCK, "TRYLOCK" }, \
63                          { TRACE_NILFS2_TRANSACTION_LOCK, "LOCK" },     \
64                          { TRACE_NILFS2_TRANSACTION_UNLOCK, "UNLOCK" })
65
66 TRACE_EVENT(nilfs2_transaction_transition,
67             TP_PROTO(struct super_block *sb,
68                      struct nilfs_transaction_info *ti,
69                      int count,
70                      unsigned int flags,
71                      enum nilfs2_transaction_transition_state state),
72
73             TP_ARGS(sb, ti, count, flags, state),
74
75             TP_STRUCT__entry(
76                     __field(void *, sb)
77                     __field(void *, ti)
78                     __field(int, count)
79                     __field(unsigned int, flags)
80                     __field(int, state)
81             ),
82
83             TP_fast_assign(
84                     __entry->sb = sb;
85                     __entry->ti = ti;
86                     __entry->count = count;
87                     __entry->flags = flags;
88                     __entry->state = state;
89                     ),
90
91             TP_printk("sb = %p ti = %p count = %d flags = %x state = %s",
92                       __entry->sb,
93                       __entry->ti,
94                       __entry->count,
95                       __entry->flags,
96                       show_transaction_state(__entry->state))
97 );
98
99 TRACE_EVENT(nilfs2_segment_usage_check,
100             TP_PROTO(struct inode *sufile,
101                      __u64 segnum,
102                      unsigned long cnt),
103
104             TP_ARGS(sufile, segnum, cnt),
105
106             TP_STRUCT__entry(
107                     __field(struct inode *, sufile)
108                     __field(__u64, segnum)
109                     __field(unsigned long, cnt)
110             ),
111
112             TP_fast_assign(
113                     __entry->sufile = sufile;
114                     __entry->segnum = segnum;
115                     __entry->cnt = cnt;
116                     ),
117
118             TP_printk("sufile = %p segnum = %llu cnt = %lu",
119                       __entry->sufile,
120                       __entry->segnum,
121                       __entry->cnt)
122 );
123
124 TRACE_EVENT(nilfs2_segment_usage_allocated,
125             TP_PROTO(struct inode *sufile,
126                      __u64 segnum),
127
128             TP_ARGS(sufile, segnum),
129
130             TP_STRUCT__entry(
131                     __field(struct inode *, sufile)
132                     __field(__u64, segnum)
133             ),
134
135             TP_fast_assign(
136                     __entry->sufile = sufile;
137                     __entry->segnum = segnum;
138                     ),
139
140             TP_printk("sufile = %p segnum = %llu",
141                       __entry->sufile,
142                       __entry->segnum)
143 );
144
145 TRACE_EVENT(nilfs2_segment_usage_freed,
146             TP_PROTO(struct inode *sufile,
147                      __u64 segnum),
148
149             TP_ARGS(sufile, segnum),
150
151             TP_STRUCT__entry(
152                     __field(struct inode *, sufile)
153                     __field(__u64, segnum)
154             ),
155
156             TP_fast_assign(
157                     __entry->sufile = sufile;
158                     __entry->segnum = segnum;
159                     ),
160
161             TP_printk("sufile = %p segnum = %llu",
162                       __entry->sufile,
163                       __entry->segnum)
164 );
165
166 TRACE_EVENT(nilfs2_mdt_insert_new_block,
167             TP_PROTO(struct inode *inode,
168                      unsigned long ino,
169                      unsigned long block),
170
171             TP_ARGS(inode, ino, block),
172
173             TP_STRUCT__entry(
174                     __field(struct inode *, inode)
175                     __field(unsigned long, ino)
176                     __field(unsigned long, block)
177             ),
178
179             TP_fast_assign(
180                     __entry->inode = inode;
181                     __entry->ino = ino;
182                     __entry->block = block;
183                     ),
184
185             TP_printk("inode = %p ino = %lu block = %lu",
186                       __entry->inode,
187                       __entry->ino,
188                       __entry->block)
189 );
190
191 TRACE_EVENT(nilfs2_mdt_submit_block,
192             TP_PROTO(struct inode *inode,
193                      unsigned long ino,
194                      unsigned long blkoff,
195                      int mode),
196
197             TP_ARGS(inode, ino, blkoff, mode),
198
199             TP_STRUCT__entry(
200                     __field(struct inode *, inode)
201                     __field(unsigned long, ino)
202                     __field(unsigned long, blkoff)
203                     __field(int, mode)
204             ),
205
206             TP_fast_assign(
207                     __entry->inode = inode;
208                     __entry->ino = ino;
209                     __entry->blkoff = blkoff;
210                     __entry->mode = mode;
211                     ),
212
213             TP_printk("inode = %p ino = %lu blkoff = %lu mode = %x",
214                       __entry->inode,
215                       __entry->ino,
216                       __entry->blkoff,
217                       __entry->mode)
218 );
219
220 #endif /* _TRACE_NILFS2_H */
221
222 /* This part must be outside protection */
223 #undef TRACE_INCLUDE_FILE
224 #define TRACE_INCLUDE_FILE nilfs2
225 #include <trace/define_trace.h>