aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace/events/writeback.h
diff options
context:
space:
mode:
authorCurt Wohlgemuth <curtw@google.com>2011-10-07 23:54:10 -0400
committerWu Fengguang <fengguang.wu@intel.com>2011-10-30 12:33:36 -0400
commit0e175a1835ffc979e55787774e58ec79e41957d7 (patch)
tree6ec4b65a8de4e9d1c12d26a1079079ed81d79450 /include/trace/events/writeback.h
parentad4e38dd6a33bb3a4882c487d7abe621e583b982 (diff)
writeback: Add a 'reason' to wb_writeback_work
This creates a new 'reason' field in a wb_writeback_work structure, which unambiguously identifies who initiates writeback activity. A 'wb_reason' enumeration has been added to writeback.h, to enumerate the possible reasons. The 'writeback_work_class' and tracepoint event class and 'writeback_queue_io' tracepoints are updated to include the symbolic 'reason' in all trace events. And the 'writeback_inodes_sbXXX' family of routines has had a wb_stats parameter added to them, so callers can specify why writeback is being started. Acked-by: Jan Kara <jack@suse.cz> Signed-off-by: Curt Wohlgemuth <curtw@google.com> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'include/trace/events/writeback.h')
-rw-r--r--include/trace/events/writeback.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index 1261db3916cc..b99caa8b780c 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -34,6 +34,7 @@ DECLARE_EVENT_CLASS(writeback_work_class,
34 __field(int, for_kupdate) 34 __field(int, for_kupdate)
35 __field(int, range_cyclic) 35 __field(int, range_cyclic)
36 __field(int, for_background) 36 __field(int, for_background)
37 __field(int, reason)
37 ), 38 ),
38 TP_fast_assign( 39 TP_fast_assign(
39 strncpy(__entry->name, dev_name(bdi->dev), 32); 40 strncpy(__entry->name, dev_name(bdi->dev), 32);
@@ -43,16 +44,18 @@ DECLARE_EVENT_CLASS(writeback_work_class,
43 __entry->for_kupdate = work->for_kupdate; 44 __entry->for_kupdate = work->for_kupdate;
44 __entry->range_cyclic = work->range_cyclic; 45 __entry->range_cyclic = work->range_cyclic;
45 __entry->for_background = work->for_background; 46 __entry->for_background = work->for_background;
47 __entry->reason = work->reason;
46 ), 48 ),
47 TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d " 49 TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d "
48 "kupdate=%d range_cyclic=%d background=%d", 50 "kupdate=%d range_cyclic=%d background=%d reason=%s",
49 __entry->name, 51 __entry->name,
50 MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev), 52 MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev),
51 __entry->nr_pages, 53 __entry->nr_pages,
52 __entry->sync_mode, 54 __entry->sync_mode,
53 __entry->for_kupdate, 55 __entry->for_kupdate,
54 __entry->range_cyclic, 56 __entry->range_cyclic,
55 __entry->for_background 57 __entry->for_background,
58 wb_reason_name[__entry->reason]
56 ) 59 )
57); 60);
58#define DEFINE_WRITEBACK_WORK_EVENT(name) \ 61#define DEFINE_WRITEBACK_WORK_EVENT(name) \
@@ -165,6 +168,7 @@ TRACE_EVENT(writeback_queue_io,
165 __field(unsigned long, older) 168 __field(unsigned long, older)
166 __field(long, age) 169 __field(long, age)
167 __field(int, moved) 170 __field(int, moved)
171 __field(int, reason)
168 ), 172 ),
169 TP_fast_assign( 173 TP_fast_assign(
170 unsigned long *older_than_this = work->older_than_this; 174 unsigned long *older_than_this = work->older_than_this;
@@ -173,12 +177,14 @@ TRACE_EVENT(writeback_queue_io,
173 __entry->age = older_than_this ? 177 __entry->age = older_than_this ?
174 (jiffies - *older_than_this) * 1000 / HZ : -1; 178 (jiffies - *older_than_this) * 1000 / HZ : -1;
175 __entry->moved = moved; 179 __entry->moved = moved;
180 __entry->reason = work->reason;
176 ), 181 ),
177 TP_printk("bdi %s: older=%lu age=%ld enqueue=%d", 182 TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s",
178 __entry->name, 183 __entry->name,
179 __entry->older, /* older_than_this in jiffies */ 184 __entry->older, /* older_than_this in jiffies */
180 __entry->age, /* older_than_this in relative milliseconds */ 185 __entry->age, /* older_than_this in relative milliseconds */
181 __entry->moved) 186 __entry->moved,
187 wb_reason_name[__entry->reason])
182); 188);
183 189
184TRACE_EVENT(global_dirty_state, 190TRACE_EVENT(global_dirty_state,