]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ext4: add some tracepoints in extent status tree
authorZheng Liu <wenqing.lz@taobao.com>
Wed, 19 Sep 2012 19:07:46 +0000 (15:07 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 19 Sep 2012 19:07:46 +0000 (15:07 -0400)
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>
fs/ext4/extents_status.c
include/trace/events/ext4.h

index 91a1b93f77125d14ed75cb7aa718926cd5b41d6c..27319a20255d4ba1e31578649ad8b13a034a106e 100644 (file)
@@ -13,6 +13,8 @@
 #include "extents_status.h"
 #include "ext4_extents.h"
 
+#include <trace/events/ext4.h>
+
 /*
  * extents status tree implementation for ext4.
  *
@@ -191,6 +193,8 @@ ext4_lblk_t ext4_es_find_extent(struct inode *inode, struct extent_status *es)
        struct rb_node *node;
        ext4_lblk_t ret = EXT_MAX_BLOCKS;
 
+       trace_ext4_es_find_extent_enter(inode, es->start);
+
        tree = &EXT4_I(inode)->i_es_tree;
 
        /* find delay extent in cache */
@@ -218,6 +222,8 @@ out:
                }
        }
 
+       trace_ext4_es_find_extent_exit(inode, es, ret);
+
        return ret;
 }
 
@@ -297,6 +303,7 @@ int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t offset,
        ext4_lblk_t end = offset + len - 1;
 
        BUG_ON(end < offset);
+       trace_ext4_es_insert_extent(inode, offset, len);
 
        es = tree->cache_es;
        es_debug("add [%u/%u) to extent status tree of inode %lu\n",
@@ -367,6 +374,7 @@ int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t offset,
        struct extent_status orig_es;
        ext4_lblk_t len1, len2, end;
 
+       trace_ext4_es_remove_extent(inode, offset, len);
        es_debug("remove [%u/%u) from extent status tree of inode %lu\n",
                 offset, len, inode->i_ino);
 
index d49b285385e8325d0ce0becbcc93b920d8037bde..b01a9014de00545aa90de5629ec7484fae143de2 100644 (file)
@@ -15,6 +15,7 @@ struct ext4_inode_info;
 struct mpage_da_data;
 struct ext4_map_blocks;
 struct ext4_extent;
+struct extent_status;
 
 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
 
@@ -2055,6 +2056,106 @@ TRACE_EVENT(ext4_ext_remove_space_done,
                  (unsigned short) __entry->eh_entries)
 );
 
+TRACE_EVENT(ext4_es_insert_extent,
+       TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len),
+
+       TP_ARGS(inode, start, len),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(        ino_t,  ino                     )
+               __field(        loff_t, start                   )
+               __field(        loff_t, len                     )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->ino    = inode->i_ino;
+               __entry->start  = start;
+               __entry->len    = len;
+       ),
+
+       TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 (unsigned long) __entry->ino,
+                 __entry->start, __entry->len)
+);
+
+TRACE_EVENT(ext4_es_remove_extent,
+       TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len),
+
+       TP_ARGS(inode, start, len),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(        ino_t,  ino                     )
+               __field(        loff_t, start                   )
+               __field(        loff_t, len                     )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->ino    = inode->i_ino;
+               __entry->start  = start;
+               __entry->len    = len;
+       ),
+
+       TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 (unsigned long) __entry->ino,
+                 __entry->start, __entry->len)
+);
+
+TRACE_EVENT(ext4_es_find_extent_enter,
+       TP_PROTO(struct inode *inode, ext4_lblk_t start),
+
+       TP_ARGS(inode, start),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,          dev             )
+               __field(        ino_t,          ino             )
+               __field(        ext4_lblk_t,    start           )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->ino    = inode->i_ino;
+               __entry->start  = start;
+       ),
+
+       TP_printk("dev %d,%d ino %lu start %u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 (unsigned long) __entry->ino, __entry->start)
+);
+
+TRACE_EVENT(ext4_es_find_extent_exit,
+       TP_PROTO(struct inode *inode, struct extent_status *es,
+                ext4_lblk_t ret),
+
+       TP_ARGS(inode, es, ret),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,          dev             )
+               __field(        ino_t,          ino             )
+               __field(        ext4_lblk_t,    start           )
+               __field(        ext4_lblk_t,    len             )
+               __field(        ext4_lblk_t,    ret             )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->ino    = inode->i_ino;
+               __entry->start  = es->start;
+               __entry->len    = es->len;
+               __entry->ret    = ret;
+       ),
+
+       TP_printk("dev %d,%d ino %lu es [%u/%u) ret %u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 (unsigned long) __entry->ino,
+                 __entry->start, __entry->len, __entry->ret)
+);
+
 #endif /* _TRACE_EXT4_H */
 
 /* This part must be outside protection */