Commit 992e9fdd7b3f656ab8aea895f0038336950774ed

Authored by Zheng Liu
Committed by Theodore Ts'o
1 parent 51865fda28

ext4: add some tracepoints in extent status tree

This patch adds some tracepoints in extent status tree.

Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

Showing 2 changed files with 109 additions and 0 deletions Side-by-side Diff

fs/ext4/extents_status.c
... ... @@ -14,6 +14,8 @@
14 14 #include "extents_status.h"
15 15 #include "ext4_extents.h"
16 16  
  17 +#include <trace/events/ext4.h>
  18 +
17 19 /*
18 20 * According to previous discussion in Ext4 Developer Workshop, we
19 21 * will introduce a new structure called io tree to track all extent
... ... @@ -224,6 +226,8 @@
224 226 struct rb_node *node;
225 227 ext4_lblk_t ret = EXT_MAX_BLOCKS;
226 228  
  229 + trace_ext4_es_find_extent_enter(inode, es->start);
  230 +
227 231 read_lock(&EXT4_I(inode)->i_es_lock);
228 232 tree = &EXT4_I(inode)->i_es_tree;
229 233  
... ... @@ -253,6 +257,8 @@
253 257 }
254 258  
255 259 read_unlock(&EXT4_I(inode)->i_es_lock);
  260 +
  261 + trace_ext4_es_find_extent_exit(inode, es, ret);
256 262 return ret;
257 263 }
258 264  
... ... @@ -393,6 +399,7 @@
393 399 struct ext4_es_tree *tree;
394 400 int err = 0;
395 401  
  402 + trace_ext4_es_insert_extent(inode, offset, len);
396 403 es_debug("add [%u/%u) to extent status tree of inode %lu\n",
397 404 offset, len, inode->i_ino);
398 405  
... ... @@ -422,6 +429,7 @@
422 429 ext4_lblk_t len1, len2, end;
423 430 int err = 0;
424 431  
  432 + trace_ext4_es_remove_extent(inode, offset, len);
425 433 es_debug("remove [%u/%u) from extent status tree of inode %lu\n",
426 434 offset, len, inode->i_ino);
427 435  
include/trace/events/ext4.h
... ... @@ -15,6 +15,7 @@
15 15 struct mpage_da_data;
16 16 struct ext4_map_blocks;
17 17 struct ext4_extent;
  18 +struct extent_status;
18 19  
19 20 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
20 21  
... ... @@ -2052,6 +2053,106 @@
2052 2053 __entry->depth,
2053 2054 (unsigned) __entry->partial,
2054 2055 (unsigned short) __entry->eh_entries)
  2056 +);
  2057 +
  2058 +TRACE_EVENT(ext4_es_insert_extent,
  2059 + TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len),
  2060 +
  2061 + TP_ARGS(inode, start, len),
  2062 +
  2063 + TP_STRUCT__entry(
  2064 + __field( dev_t, dev )
  2065 + __field( ino_t, ino )
  2066 + __field( loff_t, start )
  2067 + __field( loff_t, len )
  2068 + ),
  2069 +
  2070 + TP_fast_assign(
  2071 + __entry->dev = inode->i_sb->s_dev;
  2072 + __entry->ino = inode->i_ino;
  2073 + __entry->start = start;
  2074 + __entry->len = len;
  2075 + ),
  2076 +
  2077 + TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
  2078 + MAJOR(__entry->dev), MINOR(__entry->dev),
  2079 + (unsigned long) __entry->ino,
  2080 + __entry->start, __entry->len)
  2081 +);
  2082 +
  2083 +TRACE_EVENT(ext4_es_remove_extent,
  2084 + TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len),
  2085 +
  2086 + TP_ARGS(inode, start, len),
  2087 +
  2088 + TP_STRUCT__entry(
  2089 + __field( dev_t, dev )
  2090 + __field( ino_t, ino )
  2091 + __field( loff_t, start )
  2092 + __field( loff_t, len )
  2093 + ),
  2094 +
  2095 + TP_fast_assign(
  2096 + __entry->dev = inode->i_sb->s_dev;
  2097 + __entry->ino = inode->i_ino;
  2098 + __entry->start = start;
  2099 + __entry->len = len;
  2100 + ),
  2101 +
  2102 + TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
  2103 + MAJOR(__entry->dev), MINOR(__entry->dev),
  2104 + (unsigned long) __entry->ino,
  2105 + __entry->start, __entry->len)
  2106 +);
  2107 +
  2108 +TRACE_EVENT(ext4_es_find_extent_enter,
  2109 + TP_PROTO(struct inode *inode, ext4_lblk_t start),
  2110 +
  2111 + TP_ARGS(inode, start),
  2112 +
  2113 + TP_STRUCT__entry(
  2114 + __field( dev_t, dev )
  2115 + __field( ino_t, ino )
  2116 + __field( ext4_lblk_t, start )
  2117 + ),
  2118 +
  2119 + TP_fast_assign(
  2120 + __entry->dev = inode->i_sb->s_dev;
  2121 + __entry->ino = inode->i_ino;
  2122 + __entry->start = start;
  2123 + ),
  2124 +
  2125 + TP_printk("dev %d,%d ino %lu start %u",
  2126 + MAJOR(__entry->dev), MINOR(__entry->dev),
  2127 + (unsigned long) __entry->ino, __entry->start)
  2128 +);
  2129 +
  2130 +TRACE_EVENT(ext4_es_find_extent_exit,
  2131 + TP_PROTO(struct inode *inode, struct extent_status *es,
  2132 + ext4_lblk_t ret),
  2133 +
  2134 + TP_ARGS(inode, es, ret),
  2135 +
  2136 + TP_STRUCT__entry(
  2137 + __field( dev_t, dev )
  2138 + __field( ino_t, ino )
  2139 + __field( ext4_lblk_t, start )
  2140 + __field( ext4_lblk_t, len )
  2141 + __field( ext4_lblk_t, ret )
  2142 + ),
  2143 +
  2144 + TP_fast_assign(
  2145 + __entry->dev = inode->i_sb->s_dev;
  2146 + __entry->ino = inode->i_ino;
  2147 + __entry->start = es->start;
  2148 + __entry->len = es->len;
  2149 + __entry->ret = ret;
  2150 + ),
  2151 +
  2152 + TP_printk("dev %d,%d ino %lu es [%u/%u) ret %u",
  2153 + MAJOR(__entry->dev), MINOR(__entry->dev),
  2154 + (unsigned long) __entry->ino,
  2155 + __entry->start, __entry->len, __entry->ret)
2055 2156 );
2056 2157  
2057 2158 #endif /* _TRACE_EXT4_H */