History

nilfs2: add tracepoints for analyzing reading and writing metadata files

This patch adds tracepoints for analyzing requests of reading and writing metadata files. The tracepoints cover every in-place mdt files (cpfile, sufile, and datfile). Example of tracing mdt_insert_new_block(): cp-14635 [000] ...1 30598.199309: nilfs2_mdt_insert_new_block: inode = ffff88022a8d0178 ino = 3 block = 155 cp-14635 [000] ...1 30598.199520: nilfs2_mdt_insert_new_block: inode = ffff88022a8d0178 ino = 3 block = 5 cp-14635 [000] ...1 30598.200828: nilfs2_mdt_insert_new_block: inode = ffff88022a8d0178 ino = 3 block = 253

Hitoshi Mitake committed 11 years ago

Commit a9cd2071 parent 83eec5e2 files · +60 −0Browse files

Unified · Split

2 files
  1. fs/nilfs2/mdt.c +6 −0
  2. include/trace/events/nilfs2.h +54 −0
fs/nilfs2/mdt.c+6−0
@@ -33,6 +33,7 @@ · 32 unmodified lines
33#include "page.h"33#include "page.h"
34#include "mdt.h"34#include "mdt.h"
35 35
36#include <trace/events/nilfs2.h>
36 37
37#define NILFS_MDT_MAX_RA_BLOCKS (16 - 1)38#define NILFS_MDT_MAX_RA_BLOCKS (16 - 1)
38 39
@@ -68,6 +69,9 @@ nilfs_mdt_insert_new_block(struct inode *inode, unsigned long block, · 29 unmodified lines
68 set_buffer_uptodate(bh);69 set_buffer_uptodate(bh);
69 mark_buffer_dirty(bh);70 mark_buffer_dirty(bh);
70 nilfs_mdt_mark_dirty(inode);71 nilfs_mdt_mark_dirty(inode);
72
73 trace_nilfs2_mdt_insert_new_block(inode, inode->i_ino, block);
74
71 return 0;75 return 0;
72}76}
73 77
@@ -158,6 +162,8 @@ nilfs_mdt_submit_block(struct inode *inode, unsigned long blkoff, · 84 unmodified lines
158 get_bh(bh);162 get_bh(bh);
159 submit_bh(mode, bh);163 submit_bh(mode, bh);
160 ret = 0;164 ret = 0;
165
166 trace_nilfs2_mdt_submit_block(inode, inode->i_ino, blkoff, mode);
161 out:167 out:
162 get_bh(bh);168 get_bh(bh);
163 *out_bh = bh;169 *out_bh = bh;
include/trace/events/nilfs2.h+54−0
@@ -162,6 +162,60 @@ TRACE_EVENT(nilfs2_segment_usage_freed, · 161 unmodified lines
162 __entry->segnum)162 __entry->segnum)
163);163);
164 164
165TRACE_EVENT(nilfs2_mdt_insert_new_block,
166 TP_PROTO(struct inode *inode,
167 unsigned long ino,
168 unsigned long block),
169
170 TP_ARGS(inode, ino, block),
171
172 TP_STRUCT__entry(
173 __field(struct inode *, inode)
174 __field(unsigned long, ino)
175 __field(unsigned long, block)
176 ),
177
178 TP_fast_assign(
179 __entry->inode = inode;
180 __entry->ino = ino;
181 __entry->block = block;
182 ),
183
184 TP_printk("inode = %p ino = %lu block = %lu",
185 __entry->inode,
186 __entry->ino,
187 __entry->block)
188);
189
190TRACE_EVENT(nilfs2_mdt_submit_block,
191 TP_PROTO(struct inode *inode,
192 unsigned long ino,
193 unsigned long blkoff,
194 int mode),
195
196 TP_ARGS(inode, ino, blkoff, mode),
197
198 TP_STRUCT__entry(
199 __field(struct inode *, inode)
200 __field(unsigned long, ino)
201 __field(unsigned long, blkoff)
202 __field(int, mode)
203 ),
204
205 TP_fast_assign(
206 __entry->inode = inode;
207 __entry->ino = ino;
208 __entry->blkoff = blkoff;
209 __entry->mode = mode;
210 ),
211
212 TP_printk("inode = %p ino = %lu blkoff = %lu mode = %x",
213 __entry->inode,
214 __entry->ino,
215 __entry->blkoff,
216 __entry->mode)
217);
218
165#endif /* _TRACE_NILFS2_H */219#endif /* _TRACE_NILFS2_H */
166 220
167/* This part must be outside protection */221/* This part must be outside protection */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t