nilfs2: add a tracepoint for transaction events
[firefly-linux-kernel-4.4.55.git] / include / trace / events / nilfs2.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM nilfs2
3
4 #if !defined(_TRACE_NILFS2_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_NILFS2_H
6
7 #include <linux/tracepoint.h>
8
9 struct nilfs_sc_info;
10
11 #define show_collection_stage(type)                                     \
12         __print_symbolic(type,                                          \
13         { NILFS_ST_INIT, "ST_INIT" },                                   \
14         { NILFS_ST_GC, "ST_GC" },                                       \
15         { NILFS_ST_FILE, "ST_FILE" },                                   \
16         { NILFS_ST_IFILE, "ST_IFILE" },                                 \
17         { NILFS_ST_CPFILE, "ST_CPFILE" },                               \
18         { NILFS_ST_SUFILE, "ST_SUFILE" },                               \
19         { NILFS_ST_DAT, "ST_DAT" },                                     \
20         { NILFS_ST_SR, "ST_SR" },                                       \
21         { NILFS_ST_DSYNC, "ST_DSYNC" },                                 \
22         { NILFS_ST_DONE, "ST_DONE"})
23
24 TRACE_EVENT(nilfs2_collection_stage_transition,
25
26             TP_PROTO(struct nilfs_sc_info *sci),
27
28             TP_ARGS(sci),
29
30             TP_STRUCT__entry(
31                     __field(void *, sci)
32                     __field(int, stage)
33             ),
34
35             TP_fast_assign(
36                         __entry->sci = sci;
37                         __entry->stage = sci->sc_stage.scnt;
38                     ),
39
40             TP_printk("sci = %p stage = %s",
41                       __entry->sci,
42                       show_collection_stage(__entry->stage))
43 );
44
45 #ifndef TRACE_HEADER_MULTI_READ
46 enum nilfs2_transaction_transition_state {
47         TRACE_NILFS2_TRANSACTION_BEGIN,
48         TRACE_NILFS2_TRANSACTION_COMMIT,
49         TRACE_NILFS2_TRANSACTION_ABORT,
50         TRACE_NILFS2_TRANSACTION_TRYLOCK,
51         TRACE_NILFS2_TRANSACTION_LOCK,
52         TRACE_NILFS2_TRANSACTION_UNLOCK,
53 };
54 #endif
55
56 #define show_transaction_state(type)                                    \
57         __print_symbolic(type,                                          \
58                          { TRACE_NILFS2_TRANSACTION_BEGIN, "BEGIN" },   \
59                          { TRACE_NILFS2_TRANSACTION_COMMIT, "COMMIT" }, \
60                          { TRACE_NILFS2_TRANSACTION_ABORT, "ABORT" },   \
61                          { TRACE_NILFS2_TRANSACTION_TRYLOCK, "TRYLOCK" }, \
62                          { TRACE_NILFS2_TRANSACTION_LOCK, "LOCK" },     \
63                          { TRACE_NILFS2_TRANSACTION_UNLOCK, "UNLOCK" })
64
65 TRACE_EVENT(nilfs2_transaction_transition,
66             TP_PROTO(struct super_block *sb,
67                      struct nilfs_transaction_info *ti,
68                      int count,
69                      unsigned int flags,
70                      enum nilfs2_transaction_transition_state state),
71
72             TP_ARGS(sb, ti, count, flags, state),
73
74             TP_STRUCT__entry(
75                     __field(void *, sb)
76                     __field(void *, ti)
77                     __field(int, count)
78                     __field(unsigned int, flags)
79                     __field(int, state)
80             ),
81
82             TP_fast_assign(
83                     __entry->sb = sb;
84                     __entry->ti = ti;
85                     __entry->count = count;
86                     __entry->flags = flags;
87                     __entry->state = state;
88                     ),
89
90             TP_printk("sb = %p ti = %p count = %d flags = %x state = %s",
91                       __entry->sb,
92                       __entry->ti,
93                       __entry->count,
94                       __entry->flags,
95                       show_transaction_state(__entry->state))
96 );
97
98 #endif /* _TRACE_NILFS2_H */
99
100 /* This part must be outside protection */
101 #undef TRACE_INCLUDE_FILE
102 #define TRACE_INCLUDE_FILE nilfs2
103 #include <trace/define_trace.h>