[Ocfs2-devel] [PATCH 2/2] ocfs2: add trace event log to alloc.c
Wengang Wang
wen.gang.wang at oracle.com
Thu Nov 26 04:15:32 PST 2009
this patche adds trace event log to alloc.c.
Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
---
fs/ocfs2/alloc.c | 47 +++++-----
include/trace/events/ocfs2.h | 202 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 224 insertions(+), 25 deletions(-)
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index 38a42f5..1ccae54 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -53,6 +53,9 @@
#include "buffer_head_io.h"
+#define CREATE_TRACE_POINTS
+#include <trace/events/ocfs2.h>
+
enum ocfs2_contig_type {
CONTIG_NONE = 0,
CONTIG_LEFT,
@@ -1204,8 +1207,8 @@ static int ocfs2_add_branch(handle_t *handle,
* from new_cpos).
*/
if (root_end > new_cpos) {
- mlog(0, "adjust the cluster end from %u to %u\n",
- root_end, new_cpos);
+ trace_ocfs2_add_branch(root_end, new_cpos);
+
status = ocfs2_adjust_rightmost_branch(handle, et);
if (status) {
mlog_errno(status);
@@ -1564,7 +1567,7 @@ static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et,
* another tree level */
if (shift) {
BUG_ON(bh);
- mlog(0, "need to shift tree depth (current = %d)\n", depth);
+ trace_ocfs2_grow_tree(depth);
/* ocfs2_shift_tree_depth will return us a buffer with
* the new extent block (so we can pass that to
@@ -2463,8 +2466,7 @@ static int ocfs2_rotate_tree_right(handle_t *handle,
* rotating subtrees.
*/
while (cpos && insert_cpos <= cpos) {
- mlog(0, "Rotating a tree: ins. cpos: %u, left path cpos: %u\n",
- insert_cpos, cpos);
+ trace_ocfs2_rotate_tree_right(insert_cpos, cpos);
ret = ocfs2_find_path(et->et_ci, left_path, cpos);
if (ret) {
@@ -4779,11 +4781,9 @@ int ocfs2_insert_extent(handle_t *handle,
goto bail;
}
- mlog(0, "Insert.appending: %u, Insert.Contig: %u, "
- "Insert.contig_index: %d, Insert.free_records: %d, "
- "Insert.tree_depth: %d\n",
- insert.ins_appending, insert.ins_contig, insert.ins_contig_index,
- free_records, insert.ins_tree_depth);
+ trace_ocfs2_insert_extent(insert.ins_appending, insert.ins_contig,
+ insert.ins_contig_index, free_records,
+ insert.ins_tree_depth);
if (insert.ins_contig == CONTIG_NONE && free_records == 0) {
status = ocfs2_grow_tree(handle, et,
@@ -5139,9 +5139,8 @@ int ocfs2_split_extent(handle_t *handle,
ctxt.c_has_empty_extent = ocfs2_is_empty_extent(&el->l_recs[0]);
- mlog(0, "index: %d, contig: %u, has_empty: %u, split_covers: %u\n",
- split_index, ctxt.c_contig_type, ctxt.c_has_empty_extent,
- ctxt.c_split_covers_rec);
+ trace_ocfs2_split_extent(split_index, ctxt.c_contig_type,
+ ctxt.c_has_empty_extent, ctxt.c_split_covers_rec);
if (ctxt.c_contig_type == CONTIG_NONE) {
if (ctxt.c_split_covers_rec)
@@ -5595,11 +5594,9 @@ int ocfs2_remove_extent(handle_t *handle,
BUG_ON(cpos < le32_to_cpu(rec->e_cpos) || trunc_range > rec_range);
- mlog(0, "Owner %llu, remove (cpos %u, len %u). Existing index %d "
- "(cpos %u, len %u)\n",
- (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
- cpos, len, index,
- le32_to_cpu(rec->e_cpos), ocfs2_rec_clusters(el, rec));
+ trace_ocfs2_remove_extent((unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
+ cpos, len, index, le32_to_cpu(rec->e_cpos),
+ ocfs2_rec_clusters(el, rec));
if (le32_to_cpu(rec->e_cpos) == cpos || rec_range == trunc_range) {
ret = ocfs2_truncate_rec(handle, et, path, index, dealloc,
@@ -5828,9 +5825,9 @@ int ocfs2_truncate_log_append(struct ocfs2_super *osb,
goto bail;
}
- mlog(0, "Log truncate of %u clusters starting at cluster %u to "
- "%llu (index = %d)\n", num_clusters, start_cluster,
- (unsigned long long)OCFS2_I(tl_inode)->ip_blkno, index);
+ trace_ocfs2_truncate_log_append(num_clusters, start_cluster,
+ (unsigned long long)OCFS2_I(tl_inode)->ip_blkno,
+ index);
if (ocfs2_truncate_log_can_coalesce(tl, start_cluster)) {
/*
@@ -7455,8 +7452,8 @@ start:
goto bail;
}
- mlog(0, "inode->ip_clusters = %u, tree_depth = %u\n",
- OCFS2_I(inode)->ip_clusters, path->p_tree_depth);
+ trace_ocfs2_commit_truncate_1(OCFS2_I(inode)->ip_clusters,
+ path->p_tree_depth);
/*
* By now, el will point to the extent list on the bottom most
@@ -7500,8 +7497,8 @@ start:
goto bail;
}
- mlog(0, "clusters_to_del = %u in this pass, tail blk=%llu\n",
- clusters_to_del, (unsigned long long)path_leaf_bh(path)->b_blocknr);
+ trace_ocfs2_commit_truncate_2(clusters_to_del,
+ (unsigned long long)path_leaf_bh(path)->b_blocknr);
if (el->l_recs[i].e_flags & OCFS2_EXT_REFCOUNTED && clusters_to_del) {
BUG_ON(!(OCFS2_I(inode)->ip_dyn_features &
diff --git a/include/trace/events/ocfs2.h b/include/trace/events/ocfs2.h
index fa86758..39cc84f 100644
--- a/include/trace/events/ocfs2.h
+++ b/include/trace/events/ocfs2.h
@@ -5,10 +5,212 @@
#define TRACE_SYSTEM ocfs2
/* add ocfs2 relevant header files below */
+#include "../../../fs/ocfs2/ocfs2.h"
+
/* add ocfs2 relevant header files above */
#include <linux/tracepoint.h>
/* add tracing declarations below */
+TRACE_EVENT(ocfs2_add_branch,
+
+ TP_PROTO(u32 root_end, u32 new_cpos),
+
+ TP_ARGS(root_end, new_cpos),
+
+ TP_STRUCT__entry(
+ __field( u32, root_end)
+ __field( u32, new_cpos)
+ ),
+
+ TP_fast_assign(
+ __entry->root_end = root_end;
+ __entry->new_cpos = new_cpos;
+ ),
+
+ TP_printk("%u %u", __entry->root_end, __entry->new_cpos)
+);
+
+TRACE_EVENT(ocfs2_grow_tree,
+
+ TP_PROTO(int depth),
+
+ TP_ARGS(depth),
+
+ TP_STRUCT__entry(
+ __field( int, depth)
+ ),
+
+ TP_fast_assign(
+ __entry->depth = depth;
+ ),
+
+ TP_printk("%d", __entry->depth)
+);
+
+TRACE_EVENT(ocfs2_rotate_tree_right,
+
+ TP_PROTO(u32 insert_cpos, u32 cpos),
+
+ TP_ARGS(insert_cpos, cpos),
+
+ TP_STRUCT__entry(
+ __field( u32, insert_cpos)
+ __field( u32, cpos)
+ ),
+
+ TP_fast_assign(
+ __entry->insert_cpos = insert_cpos;
+ __entry->cpos = cpos;
+ ),
+
+ TP_printk("%u %u", __entry->insert_cpos, __entry->cpos)
+);
+
+TRACE_EVENT(ocfs2_insert_extent,
+
+ TP_PROTO(u32 ins_appending, u32 ins_contig, int ins_contig_index,
+ int free_records, int ins_tree_depth),
+
+ TP_ARGS(ins_appending, ins_contig, ins_contig_index, free_records,
+ ins_tree_depth),
+
+ TP_STRUCT__entry(
+ __field( u32, ins_appending)
+ __field( u32, ins_contig)
+ __field( int, ins_contig_index)
+ __field( int, free_records)
+ __field( int, ins_tree_depth)
+ ),
+
+ TP_fast_assign(
+ __entry->ins_appending = ins_appending;
+ __entry->ins_contig = ins_contig;
+ __entry->ins_contig_index = ins_contig_index;
+ __entry->free_records = free_records;
+ __entry->ins_tree_depth = ins_tree_depth;
+ ),
+
+ TP_printk("%u %u %d %d %d", __entry->ins_appending, __entry->ins_contig,
+ __entry->ins_contig_index, __entry->free_records,
+ __entry->ins_tree_depth)
+);
+
+TRACE_EVENT(ocfs2_split_extent,
+
+ TP_PROTO(int split_index, u32 c_contig_type, u32 c_has_empty_extent,
+ u32 c_split_covers_rec),
+
+ TP_ARGS(split_index, c_contig_type, c_has_empty_extent, c_split_covers_rec),
+
+ TP_STRUCT__entry(
+ __field( int, split_index)
+ __field( u32, c_contig_type)
+ __field( u32, c_has_empty_extent)
+ __field( u32, c_split_covers_rec)
+ ),
+
+ TP_fast_assign(
+ __entry->split_index = split_index;
+ __entry->c_contig_type = c_contig_type;
+ __entry->c_has_empty_extent = c_has_empty_extent;
+ __entry->c_split_covers_rec = c_split_covers_rec;
+ ),
+
+ TP_printk("%d %u %u %u", __entry->split_index, __entry->c_contig_type,
+ __entry->c_has_empty_extent, __entry->c_split_covers_rec)
+);
+
+TRACE_EVENT(ocfs2_remove_extent,
+
+ TP_PROTO(unsigned long long owner, u32 cpos, u32 len, int index,
+ u32 e_cpos, u32 clusters),
+
+ TP_ARGS(owner, cpos, len, index, e_cpos, clusters),
+
+ TP_STRUCT__entry(
+ __field( unsigned long long, owner)
+ __field( u32, cpos)
+ __field( u32, len)
+ __field( int, index)
+ __field( u32, e_cpos)
+ __field( u32, clusters)
+ ),
+
+ TP_fast_assign(
+ __entry->owner = owner;
+ __entry->cpos = cpos;
+ __entry->len = len;
+ __entry->index = index;
+ __entry->e_cpos = e_cpos;
+ __entry->clusters = clusters;
+ ),
+
+ TP_printk("%llu %u %u %d %u %u",
+ __entry->owner, __entry->cpos, __entry->len, __entry->index,
+ __entry->e_cpos, __entry->clusters)
+);
+
+TRACE_EVENT(ocfs2_truncate_log_append,
+
+ TP_PROTO(u32 num, u32 start, unsigned long long blkno, int index),
+
+ TP_ARGS(num, start, blkno, index),
+
+ TP_STRUCT__entry(
+ __field( u32, num)
+ __field( u32, start)
+ __field( unsigned long long, blkno)
+ __field( int, index)
+ ),
+
+ TP_fast_assign(
+ __entry->num = num;
+ __entry->start = start;
+ __entry->blkno = blkno;
+ __entry->index = index;
+ ),
+
+ TP_printk("%u %u %llu %d",
+ __entry->num, __entry->start, __entry->blkno, __entry->index)
+);
+
+TRACE_EVENT(ocfs2_commit_truncate_1,
+
+ TP_PROTO(u32 clusters, u32 depth),
+
+ TP_ARGS(clusters, depth),
+
+ TP_STRUCT__entry(
+ __field( u32, clusters)
+ __field( u32, depth)
+ ),
+
+ TP_fast_assign(
+ __entry->clusters = clusters;
+ __entry->depth = depth;
+ ),
+
+ TP_printk("%u %u", __entry->clusters, __entry->depth)
+);
+
+TRACE_EVENT(ocfs2_commit_truncate_2,
+
+ TP_PROTO(u32 del, unsigned long long blkno),
+
+ TP_ARGS(del, blkno),
+
+ TP_STRUCT__entry(
+ __field( u32, del)
+ __field( unsigned long long, blkno)
+ ),
+
+ TP_fast_assign(
+ __entry->del = del;
+ __entry->blkno = blkno;
+ ),
+
+ TP_printk("%u %llu", __entry->del, __entry->blkno)
+);
/* add tracing declarations above */
#endif /* _TRACE_OCFS2_H */
--
1.6.2.5
More information about the Ocfs2-devel
mailing list