2 #define TRACE_SYSTEM f2fs
4 #if !defined(_TRACE_F2FS_H) || defined(TRACE_HEADER_MULTI_READ)
7 #include <linux/tracepoint.h>
9 #define show_dev(entry) MAJOR(entry->dev), MINOR(entry->dev)
10 #define show_dev_ino(entry) show_dev(entry), (unsigned long)entry->ino
12 DECLARE_EVENT_CLASS(f2fs__inode,
14 TP_PROTO(struct inode *inode),
22 __field(umode_t, mode)
24 __field(unsigned int, nlink)
25 __field(blkcnt_t, blocks)
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;
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,
46 (unsigned int)__entry->nlink,
47 (unsigned long long)__entry->blocks,
48 (unsigned char)__entry->advise)
51 DECLARE_EVENT_CLASS(f2fs__inode_exit,
53 TP_PROTO(struct inode *inode, int ret),
64 __entry->dev = inode->i_sb->s_dev;
65 __entry->ino = inode->i_ino;
69 TP_printk("dev = (%d,%d), ino = %lu, ret = %d",
70 show_dev_ino(__entry),
74 DEFINE_EVENT(f2fs__inode, f2fs_sync_file_enter,
76 TP_PROTO(struct inode *inode),
81 TRACE_EVENT(f2fs_sync_file_exit,
83 TP_PROTO(struct inode *inode, bool need_cp, int datasync, int ret),
85 TP_ARGS(inode, need_cp, datasync, ret),
90 __field(bool, need_cp)
91 __field(int, datasync)
96 __entry->dev = inode->i_sb->s_dev;
97 __entry->ino = inode->i_ino;
98 __entry->need_cp = need_cp;
99 __entry->datasync = datasync;
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",
111 TRACE_EVENT(f2fs_sync_fs,
113 TP_PROTO(struct super_block *sb, int wait),
124 __entry->dev = sb->s_dev;
125 __entry->dirty = F2FS_SB(sb)->s_dirty;
126 __entry->wait = wait;
129 TP_printk("dev = (%d,%d), superblock is %s, wait = %d",
131 __entry->dirty ? "dirty" : "not dirty",
135 DEFINE_EVENT(f2fs__inode, f2fs_iget,
137 TP_PROTO(struct inode *inode),
142 DEFINE_EVENT(f2fs__inode_exit, f2fs_iget_exit,
144 TP_PROTO(struct inode *inode, int ret),
149 DEFINE_EVENT(f2fs__inode, f2fs_evict_inode,
151 TP_PROTO(struct inode *inode),
156 TRACE_EVENT(f2fs_unlink_enter,
158 TP_PROTO(struct inode *dir, struct dentry *dentry),
160 TP_ARGS(dir, dentry),
165 __field(loff_t, size)
166 __field(blkcnt_t, blocks)
167 __field(const char *, name)
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;
178 TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
179 "i_blocks = %llu, name = %s",
180 show_dev_ino(__entry),
182 (unsigned long long)__entry->blocks,
186 DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
188 TP_PROTO(struct inode *inode, int ret),
192 #endif /* _TRACE_F2FS_H */
194 /* This part must be outside protection */
195 #include <trace/define_trace.h>