aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2010-10-27 21:30:07 -0400
committerTheodore Ts'o <tytso@mit.edu>2010-10-27 21:30:07 -0400
commit3e1e5f501632460184a98237d5460c521510535e (patch)
tree9bb5006c9bcb1651f9c447869f4e90deb116e6e8 /include/trace
parent4d5476164a052e80d4ef430e368e76dbde96801f (diff)
ext4: don't use ext4_allocation_contexts for tracing
Many tracepoints were populating an ext4_allocation_context to pass in, but this requires a slab allocation even when tracepoints are off. In fact, 4 of 5 of these allocations were only for tracing. In addition, we were only using a small fraction of the 144 bytes of this structure for this purpose. We can do away with all these alloc/frees of the ac and simply pass in the bits we care about, instead. I tested this by turning on tracing and running through xfstests on x86_64. I did not actually do anything with the trace output, however. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'include/trace')
-rw-r--r--include/trace/events/ext4.h51
1 files changed, 29 insertions, 22 deletions
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index fbdfa3a6bbd8..b5f4938d612d 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -396,11 +396,11 @@ DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
396 396
397TRACE_EVENT(ext4_mb_release_inode_pa, 397TRACE_EVENT(ext4_mb_release_inode_pa,
398 TP_PROTO(struct super_block *sb, 398 TP_PROTO(struct super_block *sb,
399 struct ext4_allocation_context *ac, 399 struct inode *inode,
400 struct ext4_prealloc_space *pa, 400 struct ext4_prealloc_space *pa,
401 unsigned long long block, unsigned int count), 401 unsigned long long block, unsigned int count),
402 402
403 TP_ARGS(sb, ac, pa, block, count), 403 TP_ARGS(sb, inode, pa, block, count),
404 404
405 TP_STRUCT__entry( 405 TP_STRUCT__entry(
406 __field( dev_t, dev ) 406 __field( dev_t, dev )
@@ -412,8 +412,7 @@ TRACE_EVENT(ext4_mb_release_inode_pa,
412 412
413 TP_fast_assign( 413 TP_fast_assign(
414 __entry->dev = sb->s_dev; 414 __entry->dev = sb->s_dev;
415 __entry->ino = (ac && ac->ac_inode) ? 415 __entry->ino = inode->i_ino;
416 ac->ac_inode->i_ino : 0;
417 __entry->block = block; 416 __entry->block = block;
418 __entry->count = count; 417 __entry->count = count;
419 ), 418 ),
@@ -425,10 +424,9 @@ TRACE_EVENT(ext4_mb_release_inode_pa,
425 424
426TRACE_EVENT(ext4_mb_release_group_pa, 425TRACE_EVENT(ext4_mb_release_group_pa,
427 TP_PROTO(struct super_block *sb, 426 TP_PROTO(struct super_block *sb,
428 struct ext4_allocation_context *ac,
429 struct ext4_prealloc_space *pa), 427 struct ext4_prealloc_space *pa),
430 428
431 TP_ARGS(sb, ac, pa), 429 TP_ARGS(sb, pa),
432 430
433 TP_STRUCT__entry( 431 TP_STRUCT__entry(
434 __field( dev_t, dev ) 432 __field( dev_t, dev )
@@ -779,47 +777,56 @@ TRACE_EVENT(ext4_mballoc_prealloc,
779); 777);
780 778
781DECLARE_EVENT_CLASS(ext4__mballoc, 779DECLARE_EVENT_CLASS(ext4__mballoc,
782 TP_PROTO(struct ext4_allocation_context *ac), 780 TP_PROTO(struct super_block *sb,
781 struct inode *inode,
782 ext4_group_t group,
783 ext4_grpblk_t start,
784 ext4_grpblk_t len),
783 785
784 TP_ARGS(ac), 786 TP_ARGS(sb, inode, group, start, len),
785 787
786 TP_STRUCT__entry( 788 TP_STRUCT__entry(
787 __field( dev_t, dev ) 789 __field( dev_t, dev )
788 __field( ino_t, ino ) 790 __field( ino_t, ino )
789 __field( __u32, result_logical )
790 __field( int, result_start ) 791 __field( int, result_start )
791 __field( __u32, result_group ) 792 __field( __u32, result_group )
792 __field( int, result_len ) 793 __field( int, result_len )
793 ), 794 ),
794 795
795 TP_fast_assign( 796 TP_fast_assign(
796 __entry->dev = ac->ac_sb->s_dev; 797 __entry->dev = sb->s_dev;
797 __entry->ino = ac->ac_inode ? 798 __entry->ino = inode ? inode->i_ino : 0;
798 ac->ac_inode->i_ino : 0; 799 __entry->result_start = start;
799 __entry->result_logical = ac->ac_b_ex.fe_logical; 800 __entry->result_group = group;
800 __entry->result_start = ac->ac_b_ex.fe_start; 801 __entry->result_len = len;
801 __entry->result_group = ac->ac_b_ex.fe_group;
802 __entry->result_len = ac->ac_b_ex.fe_len;
803 ), 802 ),
804 803
805 TP_printk("dev %s inode %lu extent %u/%d/%u@%u ", 804 TP_printk("dev %s inode %lu extent %u/%d/%u ",
806 jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino, 805 jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
807 __entry->result_group, __entry->result_start, 806 __entry->result_group, __entry->result_start,
808 __entry->result_len, __entry->result_logical) 807 __entry->result_len)
809); 808);
810 809
811DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard, 810DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
812 811
813 TP_PROTO(struct ext4_allocation_context *ac), 812 TP_PROTO(struct super_block *sb,
813 struct inode *inode,
814 ext4_group_t group,
815 ext4_grpblk_t start,
816 ext4_grpblk_t len),
814 817
815 TP_ARGS(ac) 818 TP_ARGS(sb, inode, group, start, len)
816); 819);
817 820
818DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free, 821DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
819 822
820 TP_PROTO(struct ext4_allocation_context *ac), 823 TP_PROTO(struct super_block *sb,
824 struct inode *inode,
825 ext4_group_t group,
826 ext4_grpblk_t start,
827 ext4_grpblk_t len),
821 828
822 TP_ARGS(ac) 829 TP_ARGS(sb, inode, group, start, len)
823); 830);
824 831
825TRACE_EVENT(ext4_forget, 832TRACE_EVENT(ext4_forget,