diff options
Diffstat (limited to 'include/trace/events/writeback.h')
-rw-r--r-- | include/trace/events/writeback.h | 72 |
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 | ||
96 | DEFINE_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 | |||
91 | DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start, | 103 | DEFINE_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 | ||
611 | DECLARE_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 | |||
638 | DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime, | ||
639 | TP_PROTO(struct inode *inode), | ||
640 | |||
641 | TP_ARGS(inode) | ||
642 | ); | ||
643 | |||
644 | DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime_iput, | ||
645 | TP_PROTO(struct inode *inode), | ||
646 | |||
647 | TP_ARGS(inode) | ||
648 | ); | ||
649 | |||
650 | DEFINE_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 */ |