f2fs: add tracepoints for sync & inode operations
[platform/adaptation/renesas_rcar/renesas_kernel.git] / include / trace / events / f2fs.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM f2fs
3
4 #if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_F2FS_H
6
7 #include <linux/tracepoint.h>
8
9 #define show_dev(entry)         MAJOR(entry->dev), MINOR(entry->dev)
10 #define show_dev_ino(entry)     show_dev(entry), (unsigned long)entry->ino
11
12 DECLARE_EVENT_CLASS(f2fs__inode,
13
14         TP_PROTO(struct inode *inode),
15
16         TP_ARGS(inode),
17
18         TP_STRUCT__entry(
19                 __field(dev_t,  dev)
20                 __field(ino_t,  ino)
21                 __field(ino_t,  pino)
22                 __field(umode_t, mode)
23                 __field(loff_t, size)
24                 __field(unsigned int, nlink)
25                 __field(blkcnt_t, blocks)
26                 __field(__u8,   advise)
27         ),
28
29         TP_fast_assign(
30                 __entry->dev    = inode->i_sb->s_dev;
31                 __entry->ino    = inode->i_ino;
32                 __entry->pino   = F2FS_I(inode)->i_pino;
33                 __entry->mode   = inode->i_mode;
34                 __entry->nlink  = inode->i_nlink;
35                 __entry->size   = inode->i_size;
36                 __entry->blocks = inode->i_blocks;
37                 __entry->advise = F2FS_I(inode)->i_advise;
38         ),
39
40         TP_printk("dev = (%d,%d), ino = %lu, pino = %lu, i_mode = 0x%hx, "
41                 "i_size = %lld, i_nlink = %u, i_blocks = %llu, i_advise = 0x%x",
42                 show_dev_ino(__entry),
43                 (unsigned long)__entry->pino,
44                 __entry->mode,
45                 __entry->size,
46                 (unsigned int)__entry->nlink,
47                 (unsigned long long)__entry->blocks,
48                 (unsigned char)__entry->advise)
49 );
50
51 DECLARE_EVENT_CLASS(f2fs__inode_exit,
52
53         TP_PROTO(struct inode *inode, int ret),
54
55         TP_ARGS(inode, ret),
56
57         TP_STRUCT__entry(
58                 __field(dev_t,  dev)
59                 __field(ino_t,  ino)
60                 __field(int,    ret)
61         ),
62
63         TP_fast_assign(
64                 __entry->dev    = inode->i_sb->s_dev;
65                 __entry->ino    = inode->i_ino;
66                 __entry->ret    = ret;
67         ),
68
69         TP_printk("dev = (%d,%d), ino = %lu, ret = %d",
70                 show_dev_ino(__entry),
71                 __entry->ret)
72 );
73
74 DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
75
76         TP_PROTO(struct inode *inode),
77
78         TP_ARGS(inode)
79 );
80
81 TRACE_EVENT(f2fs_sync_file_exit,
82
83         TP_PROTO(struct inode *inode, bool need_cp, int datasync, int ret),
84
85         TP_ARGS(inode, need_cp, datasync, ret),
86
87         TP_STRUCT__entry(
88                 __field(dev_t,  dev)
89                 __field(ino_t,  ino)
90                 __field(bool,   need_cp)
91                 __field(int,    datasync)
92                 __field(int,    ret)
93         ),
94
95         TP_fast_assign(
96                 __entry->dev            = inode->i_sb->s_dev;
97                 __entry->ino            = inode->i_ino;
98                 __entry->need_cp        = need_cp;
99                 __entry->datasync       = datasync;
100                 __entry->ret            = ret;
101         ),
102
103         TP_printk("dev = (%d,%d), ino = %lu, checkpoint is %s, "
104                 "datasync = %d, ret = %d",
105                 show_dev_ino(__entry),
106                 __entry->need_cp ? "needed" : "not needed",
107                 __entry->datasync,
108                 __entry->ret)
109 );
110
111 TRACE_EVENT(f2fs_sync_fs,
112
113         TP_PROTO(struct super_block *sb, int wait),
114
115         TP_ARGS(sb, wait),
116
117         TP_STRUCT__entry(
118                 __field(dev_t,  dev)
119                 __field(int,    dirty)
120                 __field(int,    wait)
121         ),
122
123         TP_fast_assign(
124                 __entry->dev    = sb->s_dev;
125                 __entry->dirty  = F2FS_SB(sb)->s_dirty;
126                 __entry->wait   = wait;
127         ),
128
129         TP_printk("dev = (%d,%d), superblock is %s, wait = %d",
130                 show_dev(__entry),
131                 __entry->dirty ? "dirty" : "not dirty",
132                 __entry->wait)
133 );
134
135 DEFINE_EVENT(f2fs__inode, f2fs_iget,
136
137         TP_PROTO(struct inode *inode),
138
139         TP_ARGS(inode)
140 );
141
142 DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
143
144         TP_PROTO(struct inode *inode, int ret),
145
146         TP_ARGS(inode, ret)
147 );
148
149 DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
150
151         TP_PROTO(struct inode *inode),
152
153         TP_ARGS(inode)
154 );
155
156 TRACE_EVENT(f2fs_unlink_enter,
157
158         TP_PROTO(struct inode *dir, struct dentry *dentry),
159
160         TP_ARGS(dir, dentry),
161
162         TP_STRUCT__entry(
163                 __field(dev_t,  dev)
164                 __field(ino_t,  ino)
165                 __field(loff_t, size)
166                 __field(blkcnt_t, blocks)
167                 __field(const char *,   name)
168         ),
169
170         TP_fast_assign(
171                 __entry->dev    = dir->i_sb->s_dev;
172                 __entry->ino    = dir->i_ino;
173                 __entry->size   = dir->i_size;
174                 __entry->blocks = dir->i_blocks;
175                 __entry->name   = dentry->d_name.name;
176         ),
177
178         TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
179                 "i_blocks = %llu, name = %s",
180                 show_dev_ino(__entry),
181                 __entry->size,
182                 (unsigned long long)__entry->blocks,
183                 __entry->name)
184 );
185
186 DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
187
188         TP_PROTO(struct inode *inode, int ret),
189
190         TP_ARGS(inode, ret)
191 );
192 #endif /* _TRACE_F2FS_H */
193
194  /* This part must be outside protection */
195 #include <trace/define_trace.h>