ocfs2: Add trace event for trim.
authorTao Ma <boyu.mt@taobao.com>
Mon, 23 May 2011 02:36:45 +0000 (10:36 +0800)
committerJoel Becker <jlbec@evilplan.org>
Tue, 24 May 2011 06:37:20 +0000 (23:37 -0700)
Add the corresponding trace event for trim.

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: Joel Becker <jlbec@evilplan.org>
fs/ocfs2/alloc.c
fs/ocfs2/ocfs2_trace.h

index ae3ea783dad77e5d7b9e9806084e8ac9dc6dd43a..ed553c60de827e0ebad24e3501e0e00d21c82cfc 100644 (file)
@@ -7196,6 +7196,8 @@ static int ocfs2_trim_extent(struct super_block *sb,
        discard = le64_to_cpu(gd->bg_blkno) +
                        ocfs2_clusters_to_blocks(sb, start);
 
+       trace_ocfs2_trim_extent(sb, (unsigned long long)discard, bcount);
+
        return sb_issue_discard(sb, discard, bcount, GFP_NOFS, 0);
 }
 
@@ -7209,6 +7211,9 @@ static int ocfs2_trim_group(struct super_block *sb,
        if (le16_to_cpu(gd->bg_free_bits_count) < minbits)
                return 0;
 
+       trace_ocfs2_trim_group((unsigned long long)le64_to_cpu(gd->bg_blkno),
+                              start, max, minbits);
+
        while (start < max) {
                start = ocfs2_find_next_zero_bit(bitmap, max, start);
                if (start >= max)
@@ -7292,6 +7297,8 @@ int ocfs2_trim_fs(struct super_block *sb, struct fstrim_range *range)
        if (start + len > le32_to_cpu(main_bm->i_clusters))
                len = le32_to_cpu(main_bm->i_clusters) - start;
 
+       trace_ocfs2_trim_fs(start, len, minlen);
+
        /* Determine first and last group to examine based on start and len */
        first_group = ocfs2_which_cluster_group(main_bm_inode, start);
        if (first_group == osb->first_cluster_group_blkno)
index a1dae5bb54acda9d6e852d9d66e24c3d4cde8926..3b481f490633af2f483afd1817fe8ad538908b6a 100644 (file)
@@ -688,6 +688,31 @@ TRACE_EVENT(ocfs2_cache_block_dealloc,
                  __entry->blkno, __entry->bit)
 );
 
+TRACE_EVENT(ocfs2_trim_extent,
+       TP_PROTO(struct super_block *sb, unsigned long long blk,
+                unsigned long long count),
+       TP_ARGS(sb, blk, count),
+       TP_STRUCT__entry(
+               __field(int, dev_major)
+               __field(int, dev_minor)
+               __field(unsigned long long, blk)
+               __field(__u64,  count)
+       ),
+       TP_fast_assign(
+               __entry->dev_major = MAJOR(sb->s_dev);
+               __entry->dev_minor = MINOR(sb->s_dev);
+               __entry->blk = blk;
+               __entry->count = count;
+       ),
+       TP_printk("%d %d %llu %llu",
+                 __entry->dev_major, __entry->dev_minor,
+                 __entry->blk, __entry->count)
+);
+
+DEFINE_OCFS2_ULL_UINT_UINT_UINT_EVENT(ocfs2_trim_group);
+
+DEFINE_OCFS2_ULL_ULL_ULL_EVENT(ocfs2_trim_fs);
+
 /* End of trace events for fs/ocfs2/alloc.c. */
 
 /* Trace events for fs/ocfs2/localalloc.c. */