ext4.h (ccd16945dba091fdf1036d7711b9f6cbd287ae28) | ext4.h (08f4c42abad1b93914a93f9042e2443593bd3137) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2#undef TRACE_SYSTEM 3#define TRACE_SYSTEM ext4 4 5#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ) 6#define _TRACE_EXT4_H 7 8#include <linux/writeback.h> --- 81 unchanged lines hidden (view full) --- 90 91#define show_falloc_mode(mode) __print_flags(mode, "|", \ 92 { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ 93 { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ 94 { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ 95 { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, \ 96 { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) 97 | 1/* SPDX-License-Identifier: GPL-2.0 */ 2#undef TRACE_SYSTEM 3#define TRACE_SYSTEM ext4 4 5#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ) 6#define _TRACE_EXT4_H 7 8#include <linux/writeback.h> --- 81 unchanged lines hidden (view full) --- 90 91#define show_falloc_mode(mode) __print_flags(mode, "|", \ 92 { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ 93 { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ 94 { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ 95 { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, \ 96 { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) 97 |
98TRACE_DEFINE_ENUM(EXT4_FC_REASON_XATTR); 99TRACE_DEFINE_ENUM(EXT4_FC_REASON_CROSS_RENAME); 100TRACE_DEFINE_ENUM(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE); 101TRACE_DEFINE_ENUM(EXT4_FC_REASON_NOMEM); 102TRACE_DEFINE_ENUM(EXT4_FC_REASON_SWAP_BOOT); 103TRACE_DEFINE_ENUM(EXT4_FC_REASON_RESIZE); 104TRACE_DEFINE_ENUM(EXT4_FC_REASON_RENAME_DIR); 105TRACE_DEFINE_ENUM(EXT4_FC_REASON_FALLOC_RANGE); 106TRACE_DEFINE_ENUM(EXT4_FC_REASON_INODE_JOURNAL_DATA); 107TRACE_DEFINE_ENUM(EXT4_FC_REASON_MAX); 108 |
|
98#define show_fc_reason(reason) \ 99 __print_symbolic(reason, \ 100 { EXT4_FC_REASON_XATTR, "XATTR"}, \ 101 { EXT4_FC_REASON_CROSS_RENAME, "CROSS_RENAME"}, \ 102 { EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \ 103 { EXT4_FC_REASON_NOMEM, "NO_MEM"}, \ 104 { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \ 105 { EXT4_FC_REASON_RESIZE, "RESIZE"}, \ --- 486 unchanged lines hidden (view full) --- 592 593DEFINE_EVENT(ext4__page_op, ext4_releasepage, 594 595 TP_PROTO(struct page *page), 596 597 TP_ARGS(page) 598); 599 | 109#define show_fc_reason(reason) \ 110 __print_symbolic(reason, \ 111 { EXT4_FC_REASON_XATTR, "XATTR"}, \ 112 { EXT4_FC_REASON_CROSS_RENAME, "CROSS_RENAME"}, \ 113 { EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \ 114 { EXT4_FC_REASON_NOMEM, "NO_MEM"}, \ 115 { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \ 116 { EXT4_FC_REASON_RESIZE, "RESIZE"}, \ --- 486 unchanged lines hidden (view full) --- 603 604DEFINE_EVENT(ext4__page_op, ext4_releasepage, 605 606 TP_PROTO(struct page *page), 607 608 TP_ARGS(page) 609); 610 |
600DECLARE_EVENT_CLASS(ext4_invalidate_folio_op, 601 TP_PROTO(struct folio *folio, size_t offset, size_t length), | 611DECLARE_EVENT_CLASS(ext4_invalidatepage_op, 612 TP_PROTO(struct page *page, unsigned int offset, unsigned int length), |
602 | 613 |
603 TP_ARGS(folio, offset, length), | 614 TP_ARGS(page, offset, length), |
604 605 TP_STRUCT__entry( 606 __field( dev_t, dev ) 607 __field( ino_t, ino ) 608 __field( pgoff_t, index ) | 615 616 TP_STRUCT__entry( 617 __field( dev_t, dev ) 618 __field( ino_t, ino ) 619 __field( pgoff_t, index ) |
609 __field( size_t, offset ) 610 __field( size_t, length ) | 620 __field( unsigned int, offset ) 621 __field( unsigned int, length ) |
611 ), 612 613 TP_fast_assign( | 622 ), 623 624 TP_fast_assign( |
614 __entry->dev = folio->mapping->host->i_sb->s_dev; 615 __entry->ino = folio->mapping->host->i_ino; 616 __entry->index = folio->index; | 625 __entry->dev = page->mapping->host->i_sb->s_dev; 626 __entry->ino = page->mapping->host->i_ino; 627 __entry->index = page->index; |
617 __entry->offset = offset; 618 __entry->length = length; 619 ), 620 | 628 __entry->offset = offset; 629 __entry->length = length; 630 ), 631 |
621 TP_printk("dev %d,%d ino %lu folio_index %lu offset %zu length %zu", | 632 TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u", |
622 MAJOR(__entry->dev), MINOR(__entry->dev), 623 (unsigned long) __entry->ino, 624 (unsigned long) __entry->index, 625 __entry->offset, __entry->length) 626); 627 | 633 MAJOR(__entry->dev), MINOR(__entry->dev), 634 (unsigned long) __entry->ino, 635 (unsigned long) __entry->index, 636 __entry->offset, __entry->length) 637); 638 |
628DEFINE_EVENT(ext4_invalidate_folio_op, ext4_invalidate_folio, 629 TP_PROTO(struct folio *folio, size_t offset, size_t length), | 639DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage, 640 TP_PROTO(struct page *page, unsigned int offset, unsigned int length), |
630 | 641 |
631 TP_ARGS(folio, offset, length) | 642 TP_ARGS(page, offset, length) |
632); 633 | 643); 644 |
634DEFINE_EVENT(ext4_invalidate_folio_op, ext4_journalled_invalidate_folio, 635 TP_PROTO(struct folio *folio, size_t offset, size_t length), | 645DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage, 646 TP_PROTO(struct page *page, unsigned int offset, unsigned int length), |
636 | 647 |
637 TP_ARGS(folio, offset, length) | 648 TP_ARGS(page, offset, length) |
638); 639 640TRACE_EVENT(ext4_discard_blocks, 641 TP_PROTO(struct super_block *sb, unsigned long long blk, 642 unsigned long long count), 643 644 TP_ARGS(sb, blk, count), 645 --- 2072 unchanged lines hidden (view full) --- 2718 TP_printk("fc on [%d,%d] nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d", 2719 MAJOR(__entry->dev), MINOR(__entry->dev), 2720 __entry->nblks, __entry->reason, __entry->num_fc, 2721 __entry->num_fc_ineligible, __entry->nblks_agg) 2722); 2723 2724#define FC_REASON_NAME_STAT(reason) \ 2725 show_fc_reason(reason), \ | 649); 650 651TRACE_EVENT(ext4_discard_blocks, 652 TP_PROTO(struct super_block *sb, unsigned long long blk, 653 unsigned long long count), 654 655 TP_ARGS(sb, blk, count), 656 --- 2072 unchanged lines hidden (view full) --- 2729 TP_printk("fc on [%d,%d] nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d", 2730 MAJOR(__entry->dev), MINOR(__entry->dev), 2731 __entry->nblks, __entry->reason, __entry->num_fc, 2732 __entry->num_fc_ineligible, __entry->nblks_agg) 2733); 2734 2735#define FC_REASON_NAME_STAT(reason) \ 2736 show_fc_reason(reason), \ |
2726 __entry->sbi->s_fc_stats.fc_ineligible_reason_count[reason] | 2737 __entry->fc_ineligible_rc[reason] |
2727 2728TRACE_EVENT(ext4_fc_stats, | 2738 2739TRACE_EVENT(ext4_fc_stats, |
2729 TP_PROTO(struct super_block *sb), | 2740 TP_PROTO(struct super_block *sb), |
2730 | 2741 |
2731 TP_ARGS(sb), | 2742 TP_ARGS(sb), |
2732 | 2743 |
2733 TP_STRUCT__entry( 2734 __field(dev_t, dev) 2735 __field(struct ext4_sb_info *, sbi) 2736 __field(int, count) 2737 ), | 2744 TP_STRUCT__entry( 2745 __field(dev_t, dev) 2746 __array(unsigned int, fc_ineligible_rc, EXT4_FC_REASON_MAX) 2747 __field(unsigned long, fc_commits) 2748 __field(unsigned long, fc_ineligible_commits) 2749 __field(unsigned long, fc_numblks) 2750 ), |
2738 | 2751 |
2739 TP_fast_assign( 2740 __entry->dev = sb->s_dev; 2741 __entry->sbi = EXT4_SB(sb); 2742 ), | 2752 TP_fast_assign( 2753 int i; |
2743 | 2754 |
2744 TP_printk("dev %d:%d fc ineligible reasons:\n" 2745 "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d; " 2746 "num_commits:%ld, ineligible: %ld, numblks: %ld", 2747 MAJOR(__entry->dev), MINOR(__entry->dev), 2748 FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR), 2749 FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME), 2750 FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE), 2751 FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM), 2752 FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT), 2753 FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE), 2754 FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR), 2755 FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE), 2756 FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA), 2757 __entry->sbi->s_fc_stats.fc_num_commits, 2758 __entry->sbi->s_fc_stats.fc_ineligible_commits, 2759 __entry->sbi->s_fc_stats.fc_numblks) | 2755 __entry->dev = sb->s_dev; 2756 for (i = 0; i < EXT4_FC_REASON_MAX; i++) { 2757 __entry->fc_ineligible_rc[i] = 2758 EXT4_SB(sb)->s_fc_stats.fc_ineligible_reason_count[i]; 2759 } 2760 __entry->fc_commits = EXT4_SB(sb)->s_fc_stats.fc_num_commits; 2761 __entry->fc_ineligible_commits = 2762 EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits; 2763 __entry->fc_numblks = EXT4_SB(sb)->s_fc_stats.fc_numblks; 2764 ), |
2760 | 2765 |
2766 TP_printk("dev %d,%d fc ineligible reasons:\n" 2767 "%s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u " 2768 "num_commits:%lu, ineligible: %lu, numblks: %lu", 2769 MAJOR(__entry->dev), MINOR(__entry->dev), 2770 FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR), 2771 FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME), 2772 FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE), 2773 FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM), 2774 FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT), 2775 FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE), 2776 FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR), 2777 FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE), 2778 FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA), 2779 __entry->fc_commits, __entry->fc_ineligible_commits, 2780 __entry->fc_numblks) |
|
2761); 2762 | 2781); 2782 |
2763#define DEFINE_TRACE_DENTRY_EVENT(__type) \ 2764 TRACE_EVENT(ext4_fc_track_##__type, \ 2765 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret), \ 2766 \ 2767 TP_ARGS(inode, dentry, ret), \ 2768 \ 2769 TP_STRUCT__entry( \ 2770 __field(dev_t, dev) \ 2771 __field(int, ino) \ 2772 __field(int, error) \ 2773 ), \ 2774 \ 2775 TP_fast_assign( \ 2776 __entry->dev = inode->i_sb->s_dev; \ 2777 __entry->ino = inode->i_ino; \ 2778 __entry->error = ret; \ 2779 ), \ 2780 \ 2781 TP_printk("dev %d:%d, inode %d, error %d, fc_%s", \ 2782 MAJOR(__entry->dev), MINOR(__entry->dev), \ 2783 __entry->ino, __entry->error, \ 2784 #__type) \ | 2783DECLARE_EVENT_CLASS(ext4_fc_track_dentry, 2784 2785 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret), 2786 2787 TP_ARGS(inode, dentry, ret), 2788 2789 TP_STRUCT__entry( 2790 __field(dev_t, dev) 2791 __field(ino_t, i_ino) 2792 __field(int, error) 2793 ), 2794 2795 TP_fast_assign( 2796 __entry->dev = inode->i_sb->s_dev; 2797 __entry->i_ino = inode->i_ino; 2798 __entry->error = ret; 2799 ), 2800 2801 TP_printk("dev %d,%d, ino %lu, error %d", 2802 MAJOR(__entry->dev), MINOR(__entry->dev), 2803 __entry->i_ino, __entry->error |
2785 ) | 2804 ) |
2805); |
|
2786 | 2806 |
2787DEFINE_TRACE_DENTRY_EVENT(create); 2788DEFINE_TRACE_DENTRY_EVENT(link); 2789DEFINE_TRACE_DENTRY_EVENT(unlink); | 2807#define DEFINE_EVENT_CLASS_DENTRY(__type) \ 2808DEFINE_EVENT(ext4_fc_track_dentry, ext4_fc_track_##__type, \ 2809 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret), \ 2810 TP_ARGS(inode, dentry, ret) \ 2811) |
2790 | 2812 |
2813DEFINE_EVENT_CLASS_DENTRY(create); 2814DEFINE_EVENT_CLASS_DENTRY(link); 2815DEFINE_EVENT_CLASS_DENTRY(unlink); 2816 |
|
2791TRACE_EVENT(ext4_fc_track_inode, 2792 TP_PROTO(struct inode *inode, int ret), 2793 2794 TP_ARGS(inode, ret), 2795 2796 TP_STRUCT__entry( 2797 __field(dev_t, dev) 2798 __field(int, ino) --- 33 unchanged lines hidden (view full) --- 2832 ), 2833 2834 TP_printk("dev %d:%d, inode %d, error %d, start %ld, end %ld", 2835 MAJOR(__entry->dev), MINOR(__entry->dev), 2836 __entry->ino, __entry->error, __entry->start, 2837 __entry->end) 2838 ); 2839 | 2817TRACE_EVENT(ext4_fc_track_inode, 2818 TP_PROTO(struct inode *inode, int ret), 2819 2820 TP_ARGS(inode, ret), 2821 2822 TP_STRUCT__entry( 2823 __field(dev_t, dev) 2824 __field(int, ino) --- 33 unchanged lines hidden (view full) --- 2858 ), 2859 2860 TP_printk("dev %d:%d, inode %d, error %d, start %ld, end %ld", 2861 MAJOR(__entry->dev), MINOR(__entry->dev), 2862 __entry->ino, __entry->error, __entry->start, 2863 __entry->end) 2864 ); 2865 |
2866TRACE_EVENT(ext4_fc_cleanup, 2867 TP_PROTO(journal_t *journal, int full, tid_t tid), 2868 2869 TP_ARGS(journal, full, tid), 2870 2871 TP_STRUCT__entry( 2872 __field(dev_t, dev) 2873 __field(int, j_fc_off) 2874 __field(int, full) 2875 __field(tid_t, tid) 2876 ), 2877 2878 TP_fast_assign( 2879 struct super_block *sb = journal->j_private; 2880 2881 __entry->dev = sb->s_dev; 2882 __entry->j_fc_off = journal->j_fc_off; 2883 __entry->full = full; 2884 __entry->tid = tid; 2885 ), 2886 2887 TP_printk("dev %d,%d, j_fc_off %d, full %d, tid %u", 2888 MAJOR(__entry->dev), MINOR(__entry->dev), 2889 __entry->j_fc_off, __entry->full, __entry->tid) 2890 ); 2891 |
|
2840TRACE_EVENT(ext4_update_sb, 2841 TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk, 2842 unsigned int flags), 2843 2844 TP_ARGS(sb, fsblk, flags), 2845 2846 TP_STRUCT__entry( 2847 __field(dev_t, dev) --- 19 unchanged lines hidden --- | 2892TRACE_EVENT(ext4_update_sb, 2893 TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk, 2894 unsigned int flags), 2895 2896 TP_ARGS(sb, fsblk, flags), 2897 2898 TP_STRUCT__entry( 2899 __field(dev_t, dev) --- 19 unchanged lines hidden --- |