Merge commit 'v2.6.32-rc4' into perf/core
Merge reason: we were on an -rc1 base, merge up to -rc4. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -488,6 +488,39 @@ TRACE_EVENT(block_remap,
|
||||
(unsigned long long)__entry->old_sector)
|
||||
);
|
||||
|
||||
TRACE_EVENT(block_rq_remap,
|
||||
|
||||
TP_PROTO(struct request_queue *q, struct request *rq, dev_t dev,
|
||||
sector_t from),
|
||||
|
||||
TP_ARGS(q, rq, dev, from),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( sector_t, sector )
|
||||
__field( unsigned int, nr_sector )
|
||||
__field( dev_t, old_dev )
|
||||
__field( sector_t, old_sector )
|
||||
__array( char, rwbs, 6 )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = disk_devt(rq->rq_disk);
|
||||
__entry->sector = blk_rq_pos(rq);
|
||||
__entry->nr_sector = blk_rq_sectors(rq);
|
||||
__entry->old_dev = dev;
|
||||
__entry->old_sector = from;
|
||||
blk_fill_rwbs_rq(__entry->rwbs, rq);
|
||||
),
|
||||
|
||||
TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs,
|
||||
(unsigned long long)__entry->sector,
|
||||
__entry->nr_sector,
|
||||
MAJOR(__entry->old_dev), MINOR(__entry->old_dev),
|
||||
(unsigned long long)__entry->old_sector)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_BLOCK_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
||||
+174
-4
@@ -11,6 +11,7 @@ struct ext4_allocation_context;
|
||||
struct ext4_allocation_request;
|
||||
struct ext4_prealloc_space;
|
||||
struct ext4_inode_info;
|
||||
struct mpage_da_data;
|
||||
|
||||
#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
|
||||
|
||||
@@ -236,6 +237,7 @@ TRACE_EVENT(ext4_da_writepages,
|
||||
__field( char, for_kupdate )
|
||||
__field( char, for_reclaim )
|
||||
__field( char, range_cyclic )
|
||||
__field( pgoff_t, writeback_index )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
@@ -249,15 +251,17 @@ TRACE_EVENT(ext4_da_writepages,
|
||||
__entry->for_kupdate = wbc->for_kupdate;
|
||||
__entry->for_reclaim = wbc->for_reclaim;
|
||||
__entry->range_cyclic = wbc->range_cyclic;
|
||||
__entry->writeback_index = inode->i_mapping->writeback_index;
|
||||
),
|
||||
|
||||
TP_printk("dev %s ino %lu nr_to_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d",
|
||||
TP_printk("dev %s ino %lu nr_to_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d range_cyclic %d writeback_index %lu",
|
||||
jbd2_dev_to_name(__entry->dev),
|
||||
(unsigned long) __entry->ino, __entry->nr_to_write,
|
||||
__entry->pages_skipped, __entry->range_start,
|
||||
__entry->range_end, __entry->nonblocking,
|
||||
__entry->for_kupdate, __entry->for_reclaim,
|
||||
__entry->range_cyclic)
|
||||
__entry->range_cyclic,
|
||||
(unsigned long) __entry->writeback_index)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_da_write_pages,
|
||||
@@ -309,6 +313,7 @@ TRACE_EVENT(ext4_da_writepages_result,
|
||||
__field( char, encountered_congestion )
|
||||
__field( char, more_io )
|
||||
__field( char, no_nrwrite_index_update )
|
||||
__field( pgoff_t, writeback_index )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
@@ -320,14 +325,16 @@ TRACE_EVENT(ext4_da_writepages_result,
|
||||
__entry->encountered_congestion = wbc->encountered_congestion;
|
||||
__entry->more_io = wbc->more_io;
|
||||
__entry->no_nrwrite_index_update = wbc->no_nrwrite_index_update;
|
||||
__entry->writeback_index = inode->i_mapping->writeback_index;
|
||||
),
|
||||
|
||||
TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d",
|
||||
TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d writeback_index %lu",
|
||||
jbd2_dev_to_name(__entry->dev),
|
||||
(unsigned long) __entry->ino, __entry->ret,
|
||||
__entry->pages_written, __entry->pages_skipped,
|
||||
__entry->encountered_congestion, __entry->more_io,
|
||||
__entry->no_nrwrite_index_update)
|
||||
__entry->no_nrwrite_index_update,
|
||||
(unsigned long) __entry->writeback_index)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_da_write_begin,
|
||||
@@ -737,6 +744,169 @@ TRACE_EVENT(ext4_alloc_da_blocks,
|
||||
__entry->data_blocks, __entry->meta_blocks)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_alloc,
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u16, found )
|
||||
__field( __u16, groups )
|
||||
__field( __u16, buddy )
|
||||
__field( __u16, flags )
|
||||
__field( __u16, tail )
|
||||
__field( __u8, cr )
|
||||
__field( __u32, orig_logical )
|
||||
__field( int, orig_start )
|
||||
__field( __u32, orig_group )
|
||||
__field( int, orig_len )
|
||||
__field( __u32, goal_logical )
|
||||
__field( int, goal_start )
|
||||
__field( __u32, goal_group )
|
||||
__field( int, goal_len )
|
||||
__field( __u32, result_logical )
|
||||
__field( int, result_start )
|
||||
__field( __u32, result_group )
|
||||
__field( int, result_len )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_inode->i_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->found = ac->ac_found;
|
||||
__entry->flags = ac->ac_flags;
|
||||
__entry->groups = ac->ac_groups_scanned;
|
||||
__entry->buddy = ac->ac_buddy;
|
||||
__entry->tail = ac->ac_tail;
|
||||
__entry->cr = ac->ac_criteria;
|
||||
__entry->orig_logical = ac->ac_o_ex.fe_logical;
|
||||
__entry->orig_start = ac->ac_o_ex.fe_start;
|
||||
__entry->orig_group = ac->ac_o_ex.fe_group;
|
||||
__entry->orig_len = ac->ac_o_ex.fe_len;
|
||||
__entry->goal_logical = ac->ac_g_ex.fe_logical;
|
||||
__entry->goal_start = ac->ac_g_ex.fe_start;
|
||||
__entry->goal_group = ac->ac_g_ex.fe_group;
|
||||
__entry->goal_len = ac->ac_g_ex.fe_len;
|
||||
__entry->result_logical = ac->ac_f_ex.fe_logical;
|
||||
__entry->result_start = ac->ac_f_ex.fe_start;
|
||||
__entry->result_group = ac->ac_f_ex.fe_group;
|
||||
__entry->result_len = ac->ac_f_ex.fe_len;
|
||||
),
|
||||
|
||||
TP_printk("dev %s inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
|
||||
"result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
|
||||
"tail %u broken %u",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->orig_group, __entry->orig_start,
|
||||
__entry->orig_len, __entry->orig_logical,
|
||||
__entry->goal_group, __entry->goal_start,
|
||||
__entry->goal_len, __entry->goal_logical,
|
||||
__entry->result_group, __entry->result_start,
|
||||
__entry->result_len, __entry->result_logical,
|
||||
__entry->found, __entry->groups, __entry->cr,
|
||||
__entry->flags, __entry->tail,
|
||||
__entry->buddy ? 1 << __entry->buddy : 0)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_prealloc,
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u32, orig_logical )
|
||||
__field( int, orig_start )
|
||||
__field( __u32, orig_group )
|
||||
__field( int, orig_len )
|
||||
__field( __u32, result_logical )
|
||||
__field( int, result_start )
|
||||
__field( __u32, result_group )
|
||||
__field( int, result_len )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_inode->i_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->orig_logical = ac->ac_o_ex.fe_logical;
|
||||
__entry->orig_start = ac->ac_o_ex.fe_start;
|
||||
__entry->orig_group = ac->ac_o_ex.fe_group;
|
||||
__entry->orig_len = ac->ac_o_ex.fe_len;
|
||||
__entry->result_logical = ac->ac_b_ex.fe_logical;
|
||||
__entry->result_start = ac->ac_b_ex.fe_start;
|
||||
__entry->result_group = ac->ac_b_ex.fe_group;
|
||||
__entry->result_len = ac->ac_b_ex.fe_len;
|
||||
),
|
||||
|
||||
TP_printk("dev %s inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->orig_group, __entry->orig_start,
|
||||
__entry->orig_len, __entry->orig_logical,
|
||||
__entry->result_group, __entry->result_start,
|
||||
__entry->result_len, __entry->result_logical)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_discard,
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u32, result_logical )
|
||||
__field( int, result_start )
|
||||
__field( __u32, result_group )
|
||||
__field( int, result_len )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_inode->i_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->result_logical = ac->ac_b_ex.fe_logical;
|
||||
__entry->result_start = ac->ac_b_ex.fe_start;
|
||||
__entry->result_group = ac->ac_b_ex.fe_group;
|
||||
__entry->result_len = ac->ac_b_ex.fe_len;
|
||||
),
|
||||
|
||||
TP_printk("dev %s inode %lu extent %u/%d/%u@%u ",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->result_group, __entry->result_start,
|
||||
__entry->result_len, __entry->result_logical)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_free,
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u32, result_logical )
|
||||
__field( int, result_start )
|
||||
__field( __u32, result_group )
|
||||
__field( int, result_len )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_inode->i_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->result_logical = ac->ac_b_ex.fe_logical;
|
||||
__entry->result_start = ac->ac_b_ex.fe_start;
|
||||
__entry->result_group = ac->ac_b_ex.fe_group;
|
||||
__entry->result_len = ac->ac_b_ex.fe_len;
|
||||
),
|
||||
|
||||
TP_printk("dev %s inode %lu extent %u/%d/%u@%u ",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->result_group, __entry->result_start,
|
||||
__entry->result_len, __entry->result_logical)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_EXT4_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include <linux/jbd2.h>
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
struct transaction_chp_stats_s;
|
||||
struct transaction_run_stats_s;
|
||||
|
||||
TRACE_EVENT(jbd2_checkpoint,
|
||||
|
||||
TP_PROTO(journal_t *journal, int result),
|
||||
@@ -162,6 +165,81 @@ TRACE_EVENT(jbd2_submit_inode_data,
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino)
|
||||
);
|
||||
|
||||
TRACE_EVENT(jbd2_run_stats,
|
||||
TP_PROTO(dev_t dev, unsigned long tid,
|
||||
struct transaction_run_stats_s *stats),
|
||||
|
||||
TP_ARGS(dev, tid, stats),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( unsigned long, tid )
|
||||
__field( unsigned long, wait )
|
||||
__field( unsigned long, running )
|
||||
__field( unsigned long, locked )
|
||||
__field( unsigned long, flushing )
|
||||
__field( unsigned long, logging )
|
||||
__field( __u32, handle_count )
|
||||
__field( __u32, blocks )
|
||||
__field( __u32, blocks_logged )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = dev;
|
||||
__entry->tid = tid;
|
||||
__entry->wait = stats->rs_wait;
|
||||
__entry->running = stats->rs_running;
|
||||
__entry->locked = stats->rs_locked;
|
||||
__entry->flushing = stats->rs_flushing;
|
||||
__entry->logging = stats->rs_logging;
|
||||
__entry->handle_count = stats->rs_handle_count;
|
||||
__entry->blocks = stats->rs_blocks;
|
||||
__entry->blocks_logged = stats->rs_blocks_logged;
|
||||
),
|
||||
|
||||
TP_printk("dev %s tid %lu wait %u running %u locked %u flushing %u "
|
||||
"logging %u handle_count %u blocks %u blocks_logged %u",
|
||||
jbd2_dev_to_name(__entry->dev), __entry->tid,
|
||||
jiffies_to_msecs(__entry->wait),
|
||||
jiffies_to_msecs(__entry->running),
|
||||
jiffies_to_msecs(__entry->locked),
|
||||
jiffies_to_msecs(__entry->flushing),
|
||||
jiffies_to_msecs(__entry->logging),
|
||||
__entry->handle_count, __entry->blocks,
|
||||
__entry->blocks_logged)
|
||||
);
|
||||
|
||||
TRACE_EVENT(jbd2_checkpoint_stats,
|
||||
TP_PROTO(dev_t dev, unsigned long tid,
|
||||
struct transaction_chp_stats_s *stats),
|
||||
|
||||
TP_ARGS(dev, tid, stats),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( unsigned long, tid )
|
||||
__field( unsigned long, chp_time )
|
||||
__field( __u32, forced_to_close )
|
||||
__field( __u32, written )
|
||||
__field( __u32, dropped )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = dev;
|
||||
__entry->tid = tid;
|
||||
__entry->chp_time = stats->cs_chp_time;
|
||||
__entry->forced_to_close= stats->cs_forced_to_close;
|
||||
__entry->written = stats->cs_written;
|
||||
__entry->dropped = stats->cs_dropped;
|
||||
),
|
||||
|
||||
TP_printk("dev %s tid %lu chp_time %u forced_to_close %u "
|
||||
"written %u dropped %u",
|
||||
jbd2_dev_to_name(__entry->dev), __entry->tid,
|
||||
jiffies_to_msecs(__entry->chp_time),
|
||||
__entry->forced_to_close, __entry->written, __entry->dropped)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_JBD2_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
||||
Reference in New Issue
Block a user