blob: 03bb0dbf468de366cb7e86b8caedfeae068fa47d [file] [log] [blame]
Namjae Jeona2a4a7e2013-04-20 01:28:40 +09001#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
12DECLARE_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
51DECLARE_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
74DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
75
76 TP_PROTO(struct inode *inode),
77
78 TP_ARGS(inode)
79);
80
81TRACE_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
111TRACE_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
135DEFINE_EVENT(f2fs__inode, f2fs_iget,
136
137 TP_PROTO(struct inode *inode),
138
139 TP_ARGS(inode)
140);
141
142DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
143
144 TP_PROTO(struct inode *inode, int ret),
145
146 TP_ARGS(inode, ret)
147);
148
149DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
150
151 TP_PROTO(struct inode *inode),
152
153 TP_ARGS(inode)
154);
155
156TRACE_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
186DEFINE_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>