aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace/events/writeback.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/events/writeback.h')
-rw-r--r--include/trace/events/writeback.h72
1 files changed, 64 insertions, 8 deletions
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index cee02d65ab3f..5a14ead59696 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -18,6 +18,8 @@
18 {I_FREEING, "I_FREEING"}, \ 18 {I_FREEING, "I_FREEING"}, \
19 {I_CLEAR, "I_CLEAR"}, \ 19 {I_CLEAR, "I_CLEAR"}, \
20 {I_SYNC, "I_SYNC"}, \ 20 {I_SYNC, "I_SYNC"}, \
21 {I_DIRTY_TIME, "I_DIRTY_TIME"}, \
22 {I_DIRTY_TIME_EXPIRED, "I_DIRTY_TIME_EXPIRED"}, \
21 {I_REFERENCED, "I_REFERENCED"} \ 23 {I_REFERENCED, "I_REFERENCED"} \
22 ) 24 )
23 25
@@ -47,7 +49,7 @@ TRACE_EVENT(writeback_dirty_page,
47 49
48 TP_fast_assign( 50 TP_fast_assign(
49 strncpy(__entry->name, 51 strncpy(__entry->name,
50 mapping ? dev_name(mapping->backing_dev_info->dev) : "(unknown)", 32); 52 mapping ? dev_name(inode_to_bdi(mapping->host)->dev) : "(unknown)", 32);
51 __entry->ino = mapping ? mapping->host->i_ino : 0; 53 __entry->ino = mapping ? mapping->host->i_ino : 0;
52 __entry->index = page->index; 54 __entry->index = page->index;
53 ), 55 ),
@@ -68,26 +70,36 @@ DECLARE_EVENT_CLASS(writeback_dirty_inode_template,
68 TP_STRUCT__entry ( 70 TP_STRUCT__entry (
69 __array(char, name, 32) 71 __array(char, name, 32)
70 __field(unsigned long, ino) 72 __field(unsigned long, ino)
73 __field(unsigned long, state)
71 __field(unsigned long, flags) 74 __field(unsigned long, flags)
72 ), 75 ),
73 76
74 TP_fast_assign( 77 TP_fast_assign(
75 struct backing_dev_info *bdi = inode->i_mapping->backing_dev_info; 78 struct backing_dev_info *bdi = inode_to_bdi(inode);
76 79
77 /* may be called for files on pseudo FSes w/ unregistered bdi */ 80 /* may be called for files on pseudo FSes w/ unregistered bdi */
78 strncpy(__entry->name, 81 strncpy(__entry->name,
79 bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32); 82 bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32);
80 __entry->ino = inode->i_ino; 83 __entry->ino = inode->i_ino;
84 __entry->state = inode->i_state;
81 __entry->flags = flags; 85 __entry->flags = flags;
82 ), 86 ),
83 87
84 TP_printk("bdi %s: ino=%lu flags=%s", 88 TP_printk("bdi %s: ino=%lu state=%s flags=%s",
85 __entry->name, 89 __entry->name,
86 __entry->ino, 90 __entry->ino,
91 show_inode_state(__entry->state),
87 show_inode_state(__entry->flags) 92 show_inode_state(__entry->flags)
88 ) 93 )
89); 94);
90 95
96DEFINE_EVENT(writeback_dirty_inode_template, writeback_mark_inode_dirty,
97
98 TP_PROTO(struct inode *inode, int flags),
99
100 TP_ARGS(inode, flags)
101);
102
91DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start, 103DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start,
92 104
93 TP_PROTO(struct inode *inode, int flags), 105 TP_PROTO(struct inode *inode, int flags),
@@ -116,7 +128,7 @@ DECLARE_EVENT_CLASS(writeback_write_inode_template,
116 128
117 TP_fast_assign( 129 TP_fast_assign(
118 strncpy(__entry->name, 130 strncpy(__entry->name,
119 dev_name(inode->i_mapping->backing_dev_info->dev), 32); 131 dev_name(inode_to_bdi(inode)->dev), 32);
120 __entry->ino = inode->i_ino; 132 __entry->ino = inode->i_ino;
121 __entry->sync_mode = wbc->sync_mode; 133 __entry->sync_mode = wbc->sync_mode;
122 ), 134 ),
@@ -156,10 +168,8 @@ DECLARE_EVENT_CLASS(writeback_work_class,
156 __field(int, reason) 168 __field(int, reason)
157 ), 169 ),
158 TP_fast_assign( 170 TP_fast_assign(
159 struct device *dev = bdi->dev; 171 strncpy(__entry->name,
160 if (!dev) 172 bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32);
161 dev = default_backing_dev_info.dev;
162 strncpy(__entry->name, dev_name(dev), 32);
163 __entry->nr_pages = work->nr_pages; 173 __entry->nr_pages = work->nr_pages;
164 __entry->sb_dev = work->sb ? work->sb->s_dev : 0; 174 __entry->sb_dev = work->sb ? work->sb->s_dev : 0;
165 __entry->sync_mode = work->sync_mode; 175 __entry->sync_mode = work->sync_mode;
@@ -598,6 +608,52 @@ DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode,
598 TP_ARGS(inode, wbc, nr_to_write) 608 TP_ARGS(inode, wbc, nr_to_write)
599); 609);
600 610
611DECLARE_EVENT_CLASS(writeback_lazytime_template,
612 TP_PROTO(struct inode *inode),
613
614 TP_ARGS(inode),
615
616 TP_STRUCT__entry(
617 __field( dev_t, dev )
618 __field(unsigned long, ino )
619 __field(unsigned long, state )
620 __field( __u16, mode )
621 __field(unsigned long, dirtied_when )
622 ),
623
624 TP_fast_assign(
625 __entry->dev = inode->i_sb->s_dev;
626 __entry->ino = inode->i_ino;
627 __entry->state = inode->i_state;
628 __entry->mode = inode->i_mode;
629 __entry->dirtied_when = inode->dirtied_when;
630 ),
631
632 TP_printk("dev %d,%d ino %lu dirtied %lu state %s mode 0%o",
633 MAJOR(__entry->dev), MINOR(__entry->dev),
634 __entry->ino, __entry->dirtied_when,
635 show_inode_state(__entry->state), __entry->mode)
636);
637
638DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime,
639 TP_PROTO(struct inode *inode),
640
641 TP_ARGS(inode)
642);
643
644DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime_iput,
645 TP_PROTO(struct inode *inode),
646
647 TP_ARGS(inode)
648);
649
650DEFINE_EVENT(writeback_lazytime_template, writeback_dirty_inode_enqueue,
651
652 TP_PROTO(struct inode *inode),
653
654 TP_ARGS(inode)
655);
656
601#endif /* _TRACE_WRITEBACK_H */ 657#endif /* _TRACE_WRITEBACK_H */
602 658
603/* This part must be outside protection */ 659/* This part must be outside protection */