Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

Signed-off-by: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: TK Kato <TK.Kato@wdc.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Hitoshi Mitake and committed by
Linus Torvalds
a9cd207c 83eec5e6

+60
+6
fs/nilfs2/mdt.c
··· 33 33 #include "page.h" 34 34 #include "mdt.h" 35 35 36 + #include <trace/events/nilfs2.h> 36 37 37 38 #define NILFS_MDT_MAX_RA_BLOCKS (16 - 1) 38 39 ··· 69 68 set_buffer_uptodate(bh); 70 69 mark_buffer_dirty(bh); 71 70 nilfs_mdt_mark_dirty(inode); 71 + 72 + trace_nilfs2_mdt_insert_new_block(inode, inode->i_ino, block); 73 + 72 74 return 0; 73 75 } 74 76 ··· 162 158 get_bh(bh); 163 159 submit_bh(mode, bh); 164 160 ret = 0; 161 + 162 + trace_nilfs2_mdt_submit_block(inode, inode->i_ino, blkoff, mode); 165 163 out: 166 164 get_bh(bh); 167 165 *out_bh = bh;
+54
include/trace/events/nilfs2.h
··· 162 162 __entry->segnum) 163 163 ); 164 164 165 + TRACE_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 + 190 + TRACE_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 219 #endif /* _TRACE_NILFS2_H */ 166 220 167 221 /* This part must be outside protection */