Skip to content

Commit 7ff9c07

Browse files
committed
ext4: Add new ext4 inode tracepoints
Add ext4_evict_inode, ext4_drop_inode, ext4_mark_inode_dirty, and ext4_begin_ordered_truncate() Signed-off-by: "Theodore Ts'o" <[email protected]>
1 parent b56ff9d commit 7ff9c07

File tree

3 files changed

+110
-0
lines changed

3 files changed

+110
-0
lines changed

fs/ext4/inode.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
static inline int ext4_begin_ordered_truncate(struct inode *inode,
5454
loff_t new_size)
5555
{
56+
trace_ext4_begin_ordered_truncate(inode, new_size);
5657
return jbd2_journal_begin_ordered_truncate(
5758
EXT4_SB(inode->i_sb)->s_journal,
5859
&EXT4_I(inode)->jinode,
@@ -178,6 +179,7 @@ void ext4_evict_inode(struct inode *inode)
178179
handle_t *handle;
179180
int err;
180181

182+
trace_ext4_evict_inode(inode);
181183
if (inode->i_nlink) {
182184
truncate_inode_pages(&inode->i_data, 0);
183185
goto no_delete;
@@ -5649,6 +5651,7 @@ int ext4_mark_inode_dirty(handle_t *handle, struct inode *inode)
56495651
int err, ret;
56505652

56515653
might_sleep();
5654+
trace_ext4_mark_inode_dirty(inode, _RET_IP_);
56525655
err = ext4_reserve_inode_write(handle, inode, &iloc);
56535656
if (ext4_handle_valid(handle) &&
56545657
EXT4_I(inode)->i_extra_isize < sbi->s_want_extra_isize &&

fs/ext4/super.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,14 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
833833
return &ei->vfs_inode;
834834
}
835835

836+
static int ext4_drop_inode(struct inode *inode)
837+
{
838+
int drop = generic_drop_inode(inode);
839+
840+
trace_ext4_drop_inode(inode, drop);
841+
return drop;
842+
}
843+
836844
static void ext4_destroy_inode(struct inode *inode)
837845
{
838846
ext4_ioend_wait(inode);
@@ -1175,6 +1183,7 @@ static const struct super_operations ext4_sops = {
11751183
.destroy_inode = ext4_destroy_inode,
11761184
.write_inode = ext4_write_inode,
11771185
.dirty_inode = ext4_dirty_inode,
1186+
.drop_inode = ext4_drop_inode,
11781187
.evict_inode = ext4_evict_inode,
11791188
.put_super = ext4_put_super,
11801189
.sync_fs = ext4_sync_fs,
@@ -1196,6 +1205,7 @@ static const struct super_operations ext4_nojournal_sops = {
11961205
.destroy_inode = ext4_destroy_inode,
11971206
.write_inode = ext4_write_inode,
11981207
.dirty_inode = ext4_dirty_inode,
1208+
.drop_inode = ext4_drop_inode,
11991209
.evict_inode = ext4_evict_inode,
12001210
.write_super = ext4_write_super,
12011211
.put_super = ext4_put_super,

include/trace/events/ext4.h

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,103 @@ TRACE_EVENT(ext4_allocate_inode,
9898
(unsigned long) __entry->dir, __entry->mode)
9999
);
100100

101+
TRACE_EVENT(ext4_evict_inode,
102+
TP_PROTO(struct inode *inode),
103+
104+
TP_ARGS(inode),
105+
106+
TP_STRUCT__entry(
107+
__field( int, dev_major )
108+
__field( int, dev_minor )
109+
__field( ino_t, ino )
110+
__field( int, nlink )
111+
),
112+
113+
TP_fast_assign(
114+
__entry->dev_major = MAJOR(inode->i_sb->s_dev);
115+
__entry->dev_minor = MINOR(inode->i_sb->s_dev);
116+
__entry->ino = inode->i_ino;
117+
__entry->nlink = inode->i_nlink;
118+
),
119+
120+
TP_printk("dev %d,%d ino %lu nlink %d",
121+
__entry->dev_major, __entry->dev_minor,
122+
(unsigned long) __entry->ino, __entry->nlink)
123+
);
124+
125+
TRACE_EVENT(ext4_drop_inode,
126+
TP_PROTO(struct inode *inode, int drop),
127+
128+
TP_ARGS(inode, drop),
129+
130+
TP_STRUCT__entry(
131+
__field( int, dev_major )
132+
__field( int, dev_minor )
133+
__field( ino_t, ino )
134+
__field( int, drop )
135+
),
136+
137+
TP_fast_assign(
138+
__entry->dev_major = MAJOR(inode->i_sb->s_dev);
139+
__entry->dev_minor = MINOR(inode->i_sb->s_dev);
140+
__entry->ino = inode->i_ino;
141+
__entry->drop = drop;
142+
),
143+
144+
TP_printk("dev %d,%d ino %lu drop %d",
145+
__entry->dev_major, __entry->dev_minor,
146+
(unsigned long) __entry->ino, __entry->drop)
147+
);
148+
149+
TRACE_EVENT(ext4_mark_inode_dirty,
150+
TP_PROTO(struct inode *inode, unsigned long IP),
151+
152+
TP_ARGS(inode, IP),
153+
154+
TP_STRUCT__entry(
155+
__field( int, dev_major )
156+
__field( int, dev_minor )
157+
__field( ino_t, ino )
158+
__field(unsigned long, ip )
159+
),
160+
161+
TP_fast_assign(
162+
__entry->dev_major = MAJOR(inode->i_sb->s_dev);
163+
__entry->dev_minor = MINOR(inode->i_sb->s_dev);
164+
__entry->ino = inode->i_ino;
165+
__entry->ip = IP;
166+
),
167+
168+
TP_printk("dev %d,%d ino %lu caller %pF",
169+
__entry->dev_major, __entry->dev_minor,
170+
(unsigned long) __entry->ino, (void *)__entry->ip)
171+
);
172+
173+
TRACE_EVENT(ext4_begin_ordered_truncate,
174+
TP_PROTO(struct inode *inode, loff_t new_size),
175+
176+
TP_ARGS(inode, new_size),
177+
178+
TP_STRUCT__entry(
179+
__field( int, dev_major )
180+
__field( int, dev_minor )
181+
__field( ino_t, ino )
182+
__field( loff_t, new_size )
183+
),
184+
185+
TP_fast_assign(
186+
__entry->dev_major = MAJOR(inode->i_sb->s_dev);
187+
__entry->dev_minor = MINOR(inode->i_sb->s_dev);
188+
__entry->ino = inode->i_ino;
189+
__entry->new_size = new_size;
190+
),
191+
192+
TP_printk("dev %d,%d ino %lu new_size %lld",
193+
__entry->dev_major, __entry->dev_minor,
194+
(unsigned long) __entry->ino,
195+
(long long) __entry->new_size)
196+
);
197+
101198
DECLARE_EVENT_CLASS(ext4__write_begin,
102199

103200
TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,

0 commit comments

Comments
 (0)