Path: blob/master/include/trace/events/writeback.h
10818 views
#undef TRACE_SYSTEM1#define TRACE_SYSTEM writeback23#if !defined(_TRACE_WRITEBACK_H) || defined(TRACE_HEADER_MULTI_READ)4#define _TRACE_WRITEBACK_H56#include <linux/backing-dev.h>7#include <linux/device.h>8#include <linux/writeback.h>910struct wb_writeback_work;1112DECLARE_EVENT_CLASS(writeback_work_class,13TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work),14TP_ARGS(bdi, work),15TP_STRUCT__entry(16__array(char, name, 32)17__field(long, nr_pages)18__field(dev_t, sb_dev)19__field(int, sync_mode)20__field(int, for_kupdate)21__field(int, range_cyclic)22__field(int, for_background)23),24TP_fast_assign(25strncpy(__entry->name, dev_name(bdi->dev), 32);26__entry->nr_pages = work->nr_pages;27__entry->sb_dev = work->sb ? work->sb->s_dev : 0;28__entry->sync_mode = work->sync_mode;29__entry->for_kupdate = work->for_kupdate;30__entry->range_cyclic = work->range_cyclic;31__entry->for_background = work->for_background;32),33TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d "34"kupdate=%d range_cyclic=%d background=%d",35__entry->name,36MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev),37__entry->nr_pages,38__entry->sync_mode,39__entry->for_kupdate,40__entry->range_cyclic,41__entry->for_background42)43);44#define DEFINE_WRITEBACK_WORK_EVENT(name) \45DEFINE_EVENT(writeback_work_class, name, \46TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work), \47TP_ARGS(bdi, work))48DEFINE_WRITEBACK_WORK_EVENT(writeback_nothread);49DEFINE_WRITEBACK_WORK_EVENT(writeback_queue);50DEFINE_WRITEBACK_WORK_EVENT(writeback_exec);5152TRACE_EVENT(writeback_pages_written,53TP_PROTO(long pages_written),54TP_ARGS(pages_written),55TP_STRUCT__entry(56__field(long, pages)57),58TP_fast_assign(59__entry->pages = pages_written;60),61TP_printk("%ld", __entry->pages)62);6364DECLARE_EVENT_CLASS(writeback_class,65TP_PROTO(struct backing_dev_info *bdi),66TP_ARGS(bdi),67TP_STRUCT__entry(68__array(char, name, 32)69),70TP_fast_assign(71strncpy(__entry->name, dev_name(bdi->dev), 32);72),73TP_printk("bdi %s",74__entry->name75)76);77#define DEFINE_WRITEBACK_EVENT(name) \78DEFINE_EVENT(writeback_class, name, \79TP_PROTO(struct backing_dev_info *bdi), \80TP_ARGS(bdi))8182DEFINE_WRITEBACK_EVENT(writeback_nowork);83DEFINE_WRITEBACK_EVENT(writeback_wake_background);84DEFINE_WRITEBACK_EVENT(writeback_wake_thread);85DEFINE_WRITEBACK_EVENT(writeback_wake_forker_thread);86DEFINE_WRITEBACK_EVENT(writeback_bdi_register);87DEFINE_WRITEBACK_EVENT(writeback_bdi_unregister);88DEFINE_WRITEBACK_EVENT(writeback_thread_start);89DEFINE_WRITEBACK_EVENT(writeback_thread_stop);9091DECLARE_EVENT_CLASS(wbc_class,92TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi),93TP_ARGS(wbc, bdi),94TP_STRUCT__entry(95__array(char, name, 32)96__field(long, nr_to_write)97__field(long, pages_skipped)98__field(int, sync_mode)99__field(int, for_kupdate)100__field(int, for_background)101__field(int, for_reclaim)102__field(int, range_cyclic)103__field(int, more_io)104__field(unsigned long, older_than_this)105__field(long, range_start)106__field(long, range_end)107),108109TP_fast_assign(110strncpy(__entry->name, dev_name(bdi->dev), 32);111__entry->nr_to_write = wbc->nr_to_write;112__entry->pages_skipped = wbc->pages_skipped;113__entry->sync_mode = wbc->sync_mode;114__entry->for_kupdate = wbc->for_kupdate;115__entry->for_background = wbc->for_background;116__entry->for_reclaim = wbc->for_reclaim;117__entry->range_cyclic = wbc->range_cyclic;118__entry->more_io = wbc->more_io;119__entry->older_than_this = wbc->older_than_this ?120*wbc->older_than_this : 0;121__entry->range_start = (long)wbc->range_start;122__entry->range_end = (long)wbc->range_end;123),124125TP_printk("bdi %s: towrt=%ld skip=%ld mode=%d kupd=%d "126"bgrd=%d reclm=%d cyclic=%d more=%d older=0x%lx "127"start=0x%lx end=0x%lx",128__entry->name,129__entry->nr_to_write,130__entry->pages_skipped,131__entry->sync_mode,132__entry->for_kupdate,133__entry->for_background,134__entry->for_reclaim,135__entry->range_cyclic,136__entry->more_io,137__entry->older_than_this,138__entry->range_start,139__entry->range_end)140)141142#define DEFINE_WBC_EVENT(name) \143DEFINE_EVENT(wbc_class, name, \144TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), \145TP_ARGS(wbc, bdi))146DEFINE_WBC_EVENT(wbc_writeback_start);147DEFINE_WBC_EVENT(wbc_writeback_written);148DEFINE_WBC_EVENT(wbc_writeback_wait);149DEFINE_WBC_EVENT(wbc_balance_dirty_start);150DEFINE_WBC_EVENT(wbc_balance_dirty_written);151DEFINE_WBC_EVENT(wbc_balance_dirty_wait);152DEFINE_WBC_EVENT(wbc_writepage);153154DECLARE_EVENT_CLASS(writeback_congest_waited_template,155156TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),157158TP_ARGS(usec_timeout, usec_delayed),159160TP_STRUCT__entry(161__field( unsigned int, usec_timeout )162__field( unsigned int, usec_delayed )163),164165TP_fast_assign(166__entry->usec_timeout = usec_timeout;167__entry->usec_delayed = usec_delayed;168),169170TP_printk("usec_timeout=%u usec_delayed=%u",171__entry->usec_timeout,172__entry->usec_delayed)173);174175DEFINE_EVENT(writeback_congest_waited_template, writeback_congestion_wait,176177TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),178179TP_ARGS(usec_timeout, usec_delayed)180);181182DEFINE_EVENT(writeback_congest_waited_template, writeback_wait_iff_congested,183184TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),185186TP_ARGS(usec_timeout, usec_delayed)187);188189#endif /* _TRACE_WRITEBACK_H */190191/* This part must be outside protection */192#include <trace/define_trace.h>193194195