[ SYSTEM ]: Linux srv.persadacompanies.com 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
[ SERVER ]: Apache | PHP: 8.4.20
[ USER ]: persadamedika | IP: 45.64.1.108
GEFORCE FILE MANAGER
/
usr
/
src
/
kernels
/
4.18.0-553.64.1.el8_10.x86_64
/
include
/
trace
/
events
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 9p.h
5,218 B
SET
[ EDIT ]
|
[ DEL ]
📄 afs.h
17,619 B
SET
[ EDIT ]
|
[ DEL ]
📄 alarmtimer.h
2,087 B
SET
[ EDIT ]
|
[ DEL ]
📄 asoc.h
5,300 B
SET
[ EDIT ]
|
[ DEL ]
📄 avc.h
1,292 B
SET
[ EDIT ]
|
[ DEL ]
📄 bcache.h
11,165 B
SET
[ EDIT ]
|
[ DEL ]
📄 block.h
16,779 B
SET
[ EDIT ]
|
[ DEL ]
📄 bpf_test_run.h
1,048 B
SET
[ EDIT ]
|
[ DEL ]
📄 bridge.h
3,509 B
SET
[ EDIT ]
|
[ DEL ]
📄 btrfs.h
49,763 B
SET
[ EDIT ]
|
[ DEL ]
📄 cachefiles.h
8,350 B
SET
[ EDIT ]
|
[ DEL ]
📄 cgroup.h
4,387 B
SET
[ EDIT ]
|
[ DEL ]
📄 clk.h
3,777 B
SET
[ EDIT ]
|
[ DEL ]
📄 cma.h
1,339 B
SET
[ EDIT ]
|
[ DEL ]
📄 compaction.h
8,089 B
SET
[ EDIT ]
|
[ DEL ]
📄 context_tracking.h
1,177 B
SET
[ EDIT ]
|
[ DEL ]
📄 cpuhp.h
1,871 B
SET
[ EDIT ]
|
[ DEL ]
📄 damon.h
1,162 B
SET
[ EDIT ]
|
[ DEL ]
📄 devlink.h
7,376 B
SET
[ EDIT ]
|
[ DEL ]
📄 dma_fence.h
1,700 B
SET
[ EDIT ]
|
[ DEL ]
📄 ext4.h
68,625 B
SET
[ EDIT ]
|
[ DEL ]
📄 f2fs.h
37,224 B
SET
[ EDIT ]
|
[ DEL ]
📄 fib.h
2,285 B
SET
[ EDIT ]
|
[ DEL ]
📄 fib6.h
2,423 B
SET
[ EDIT ]
|
[ DEL ]
📄 filelock.h
7,394 B
SET
[ EDIT ]
|
[ DEL ]
📄 filemap.h
2,804 B
SET
[ EDIT ]
|
[ DEL ]
📄 fs.h
3,373 B
SET
[ EDIT ]
|
[ DEL ]
📄 fs_dax.h
8,456 B
SET
[ EDIT ]
|
[ DEL ]
📄 fscache.h
15,208 B
SET
[ EDIT ]
|
[ DEL ]
📄 fsi.h
2,880 B
SET
[ EDIT ]
|
[ DEL ]
📄 fsi_master_gpio.h
1,576 B
SET
[ EDIT ]
|
[ DEL ]
📄 gpio.h
1,158 B
SET
[ EDIT ]
|
[ DEL ]
📄 host1x.h
5,798 B
SET
[ EDIT ]
|
[ DEL ]
📄 huge_memory.h
4,531 B
SET
[ EDIT ]
|
[ DEL ]
📄 i2c.h
4,254 B
SET
[ EDIT ]
|
[ DEL ]
📄 ib_mad.h
12,719 B
SET
[ EDIT ]
|
[ DEL ]
📄 ib_umad.h
4,095 B
SET
[ EDIT ]
|
[ DEL ]
📄 initcall.h
1,310 B
SET
[ EDIT ]
|
[ DEL ]
📄 intel-sst.h
2,571 B
SET
[ EDIT ]
|
[ DEL ]
📄 intel_ifs.h
860 B
SET
[ EDIT ]
|
[ DEL ]
📄 intel_iommu.h
2,297 B
SET
[ EDIT ]
|
[ DEL ]
📄 intel_ish.h
556 B
SET
[ EDIT ]
|
[ DEL ]
📄 io_uring.h
12,079 B
SET
[ EDIT ]
|
[ DEL ]
📄 iocost.h
5,044 B
SET
[ EDIT ]
|
[ DEL ]
📄 iommu.h
3,201 B
SET
[ EDIT ]
|
[ DEL ]
📄 ipi.h
2,956 B
SET
[ EDIT ]
|
[ DEL ]
📄 irq.h
3,889 B
SET
[ EDIT ]
|
[ DEL ]
📄 irq_matrix.h
5,055 B
SET
[ EDIT ]
|
[ DEL ]
📄 iscsi.h
2,336 B
SET
[ EDIT ]
|
[ DEL ]
📄 jbd2.h
10,487 B
SET
[ EDIT ]
|
[ DEL ]
📄 kmem.h
7,811 B
SET
[ EDIT ]
|
[ DEL ]
📄 kvm.h
11,423 B
SET
[ EDIT ]
|
[ DEL ]
📄 kyber.h
2,435 B
SET
[ EDIT ]
|
[ DEL ]
📄 libata.h
11,812 B
SET
[ EDIT ]
|
[ DEL ]
📄 lock.h
1,737 B
SET
[ EDIT ]
|
[ DEL ]
📄 mce.h
1,897 B
SET
[ EDIT ]
|
[ DEL ]
📄 mdio.h
1,048 B
SET
[ EDIT ]
|
[ DEL ]
📄 migrate.h
1,958 B
SET
[ EDIT ]
|
[ DEL ]
📄 mlxsw.h
2,682 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmc.h
7,412 B
SET
[ EDIT ]
|
[ DEL ]
📄 mmflags.h
8,509 B
SET
[ EDIT ]
|
[ DEL ]
📄 module.h
2,851 B
SET
[ EDIT ]
|
[ DEL ]
📄 mptcp.h
4,374 B
SET
[ EDIT ]
|
[ DEL ]
📄 napi.h
1,013 B
SET
[ EDIT ]
|
[ DEL ]
📄 neigh.h
5,882 B
SET
[ EDIT ]
|
[ DEL ]
📄 net.h
7,210 B
SET
[ EDIT ]
|
[ DEL ]
📄 net_probe_common.h
1,235 B
SET
[ EDIT ]
|
[ DEL ]
📄 netlink.h
490 B
SET
[ EDIT ]
|
[ DEL ]
📄 nfs.h
13,994 B
SET
[ EDIT ]
|
[ DEL ]
📄 nilfs2.h
5,326 B
SET
[ EDIT ]
|
[ DEL ]
📄 nmi.h
780 B
SET
[ EDIT ]
|
[ DEL ]
📄 objagg.h
4,691 B
SET
[ EDIT ]
|
[ DEL ]
📄 oom.h
3,973 B
SET
[ EDIT ]
|
[ DEL ]
📄 osnoise.h
3,010 B
SET
[ EDIT ]
|
[ DEL ]
📄 page_isolation.h
943 B
SET
[ EDIT ]
|
[ DEL ]
📄 page_pool.h
2,650 B
SET
[ EDIT ]
|
[ DEL ]
📄 page_ref.h
3,034 B
SET
[ EDIT ]
|
[ DEL ]
📄 pagemap.h
2,191 B
SET
[ EDIT ]
|
[ DEL ]
📄 percpu.h
2,669 B
SET
[ EDIT ]
|
[ DEL ]
📄 power.h
12,169 B
SET
[ EDIT ]
|
[ DEL ]
📄 power_cpu_migrate.h
1,625 B
SET
[ EDIT ]
|
[ DEL ]
📄 preemptirq.h
2,163 B
SET
[ EDIT ]
|
[ DEL ]
📄 printk.h
786 B
SET
[ EDIT ]
|
[ DEL ]
📄 pwc.h
1,714 B
SET
[ EDIT ]
|
[ DEL ]
📄 qdisc.h
3,847 B
SET
[ EDIT ]
|
[ DEL ]
📄 qla.h
937 B
SET
[ EDIT ]
|
[ DEL ]
📄 qrtr.h
2,604 B
SET
[ EDIT ]
|
[ DEL ]
📄 random.h
7,621 B
SET
[ EDIT ]
|
[ DEL ]
📄 rcu.h
24,866 B
SET
[ EDIT ]
|
[ DEL ]
📄 rdma.h
4,337 B
SET
[ EDIT ]
|
[ DEL ]
📄 rdma_core.h
7,193 B
SET
[ EDIT ]
|
[ DEL ]
📄 regulator.h
2,456 B
SET
[ EDIT ]
|
[ DEL ]
📄 rpcgss.h
14,712 B
SET
[ EDIT ]
|
[ DEL ]
📄 rpcrdma.h
50,120 B
SET
[ EDIT ]
|
[ DEL ]
📄 rpm.h
2,394 B
SET
[ EDIT ]
|
[ DEL ]
📄 rseq.h
1,288 B
SET
[ EDIT ]
|
[ DEL ]
📄 rtc.h
3,354 B
SET
[ EDIT ]
|
[ DEL ]
📄 rxrpc.h
41,684 B
SET
[ EDIT ]
|
[ DEL ]
📄 sched.h
15,300 B
SET
[ EDIT ]
|
[ DEL ]
📄 scsi.h
12,614 B
SET
[ EDIT ]
|
[ DEL ]
📄 sctp.h
2,634 B
SET
[ EDIT ]
|
[ DEL ]
📄 signal.h
3,486 B
SET
[ EDIT ]
|
[ DEL ]
📄 siox.h
2,041 B
SET
[ EDIT ]
|
[ DEL ]
📄 skb.h
1,863 B
SET
[ EDIT ]
|
[ DEL ]
📄 smbus.h
7,715 B
SET
[ EDIT ]
|
[ DEL ]
📄 sock.h
4,547 B
SET
[ EDIT ]
|
[ DEL ]
📄 sof.h
3,364 B
SET
[ EDIT ]
|
[ DEL ]
📄 sof_intel.h
4,131 B
SET
[ EDIT ]
|
[ DEL ]
📄 spi.h
3,387 B
SET
[ EDIT ]
|
[ DEL ]
📄 spmi.h
3,336 B
SET
[ EDIT ]
|
[ DEL ]
📄 sunrpc.h
56,795 B
SET
[ EDIT ]
|
[ DEL ]
📄 sunrpc_base.h
474 B
SET
[ EDIT ]
|
[ DEL ]
📄 sunvnet.h
3,129 B
SET
[ EDIT ]
|
[ DEL ]
📄 swiotlb.h
1,050 B
SET
[ EDIT ]
|
[ DEL ]
📄 syscalls.h
1,512 B
SET
[ EDIT ]
|
[ DEL ]
📄 target.h
7,697 B
SET
[ EDIT ]
|
[ DEL ]
📄 task.h
1,526 B
SET
[ EDIT ]
|
[ DEL ]
📄 tcp.h
7,111 B
SET
[ EDIT ]
|
[ DEL ]
📄 thermal.h
5,559 B
SET
[ EDIT ]
|
[ DEL ]
📄 thermal_power_allocator.h
3,297 B
SET
[ EDIT ]
|
[ DEL ]
📄 thp.h
2,137 B
SET
[ EDIT ]
|
[ DEL ]
📄 timer.h
10,321 B
SET
[ EDIT ]
|
[ DEL ]
📄 tlb.h
1,439 B
SET
[ EDIT ]
|
[ DEL ]
📄 udp.h
632 B
SET
[ EDIT ]
|
[ DEL ]
📄 ufs.h
7,670 B
SET
[ EDIT ]
|
[ DEL ]
📄 v4l2.h
9,018 B
SET
[ EDIT ]
|
[ DEL ]
📄 vb2.h
1,769 B
SET
[ EDIT ]
|
[ DEL ]
📄 vmscan.h
12,784 B
SET
[ EDIT ]
|
[ DEL ]
📄 vsock_virtio_transport_common.h
3,572 B
SET
[ EDIT ]
|
[ DEL ]
📄 wbt.h
3,907 B
SET
[ EDIT ]
|
[ DEL ]
📄 workqueue.h
2,793 B
SET
[ EDIT ]
|
[ DEL ]
📄 writeback.h
23,341 B
SET
[ EDIT ]
|
[ DEL ]
📄 xdp.h
10,050 B
SET
[ EDIT ]
|
[ DEL ]
📄 xen.h
14,889 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: writeback.h
/* SPDX-License-Identifier: GPL-2.0 */ #undef TRACE_SYSTEM #define TRACE_SYSTEM writeback #if !defined(_TRACE_WRITEBACK_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_WRITEBACK_H #include <linux/tracepoint.h> #include <linux/backing-dev.h> #include <linux/writeback.h> #define show_inode_state(state) \ __print_flags(state, "|", \ {I_DIRTY_SYNC, "I_DIRTY_SYNC"}, \ {I_DIRTY_DATASYNC, "I_DIRTY_DATASYNC"}, \ {I_DIRTY_PAGES, "I_DIRTY_PAGES"}, \ {I_NEW, "I_NEW"}, \ {I_WILL_FREE, "I_WILL_FREE"}, \ {I_FREEING, "I_FREEING"}, \ {I_CLEAR, "I_CLEAR"}, \ {I_SYNC, "I_SYNC"}, \ {I_DIRTY_TIME, "I_DIRTY_TIME"}, \ {I_REFERENCED, "I_REFERENCED"} \ ) /* enums need to be exported to user space */ #undef EM #undef EMe #define EM(a,b) TRACE_DEFINE_ENUM(a); #define EMe(a,b) TRACE_DEFINE_ENUM(a); #define WB_WORK_REASON \ EM( WB_REASON_BACKGROUND, "background") \ EM( WB_REASON_VMSCAN, "vmscan") \ EM( WB_REASON_SYNC, "sync") \ EM( WB_REASON_PERIODIC, "periodic") \ EM( WB_REASON_LAPTOP_TIMER, "laptop_timer") \ EM( WB_REASON_FREE_MORE_MEM, "free_more_memory") \ EM( WB_REASON_FS_FREE_SPACE, "fs_free_space") \ EMe(WB_REASON_FORKER_THREAD, "forker_thread") WB_WORK_REASON /* * Now redefine the EM() and EMe() macros to map the enums to the strings * that will be printed in the output. */ #undef EM #undef EMe #define EM(a,b) { a, b }, #define EMe(a,b) { a, b } struct wb_writeback_work; DECLARE_EVENT_CLASS(writeback_page_template, TP_PROTO(struct page *page, struct address_space *mapping), TP_ARGS(page, mapping), TP_STRUCT__entry ( __array(char, name, 32) __field(unsigned long, ino) __field(pgoff_t, index) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(mapping ? inode_to_bdi(mapping->host) : NULL), 32); __entry->ino = mapping ? mapping->host->i_ino : 0; __entry->index = page->index; ), TP_printk("bdi %s: ino=%lu index=%lu", __entry->name, __entry->ino, __entry->index ) ); DEFINE_EVENT(writeback_page_template, writeback_dirty_page, TP_PROTO(struct page *page, struct address_space *mapping), TP_ARGS(page, mapping) ); DEFINE_EVENT(writeback_page_template, wait_on_page_writeback, TP_PROTO(struct page *page, struct address_space *mapping), TP_ARGS(page, mapping) ); DECLARE_EVENT_CLASS(writeback_dirty_inode_template, TP_PROTO(struct inode *inode, int flags), TP_ARGS(inode, flags), TP_STRUCT__entry ( __array(char, name, 32) __field(unsigned long, ino) __field(unsigned long, state) __field(unsigned long, flags) ), TP_fast_assign( struct backing_dev_info *bdi = inode_to_bdi(inode); /* may be called for files on pseudo FSes w/ unregistered bdi */ strscpy_pad(__entry->name, bdi_dev_name(bdi), 32); __entry->ino = inode->i_ino; __entry->state = inode->i_state; __entry->flags = flags; ), TP_printk("bdi %s: ino=%lu state=%s flags=%s", __entry->name, __entry->ino, show_inode_state(__entry->state), show_inode_state(__entry->flags) ) ); DEFINE_EVENT(writeback_dirty_inode_template, writeback_mark_inode_dirty, TP_PROTO(struct inode *inode, int flags), TP_ARGS(inode, flags) ); DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start, TP_PROTO(struct inode *inode, int flags), TP_ARGS(inode, flags) ); DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode, TP_PROTO(struct inode *inode, int flags), TP_ARGS(inode, flags) ); #ifdef CREATE_TRACE_POINTS #ifdef CONFIG_CGROUP_WRITEBACK static inline unsigned int __trace_wb_assign_cgroup(struct bdi_writeback *wb) { return cgroup_ino(wb->memcg_css->cgroup); } static inline unsigned int __trace_wbc_assign_cgroup(struct writeback_control *wbc) { if (wbc->wb) return __trace_wb_assign_cgroup(wbc->wb); else return -1U; } #else /* CONFIG_CGROUP_WRITEBACK */ static inline unsigned int __trace_wb_assign_cgroup(struct bdi_writeback *wb) { return -1U; } static inline unsigned int __trace_wbc_assign_cgroup(struct writeback_control *wbc) { return -1U; } #endif /* CONFIG_CGROUP_WRITEBACK */ #endif /* CREATE_TRACE_POINTS */ #ifdef CONFIG_CGROUP_WRITEBACK TRACE_EVENT(inode_foreign_history, TP_PROTO(struct inode *inode, struct writeback_control *wbc, unsigned int history), TP_ARGS(inode, wbc, history), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, ino) __field(unsigned int, cgroup_ino) __field(unsigned int, history) ), TP_fast_assign( strncpy(__entry->name, dev_name(inode_to_bdi(inode)->dev), 32); __entry->ino = inode->i_ino; __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); __entry->history = history; ), TP_printk("bdi %s: ino=%lu cgroup_ino=%u history=0x%x", __entry->name, __entry->ino, __entry->cgroup_ino, __entry->history ) ); TRACE_EVENT(inode_switch_wbs, TP_PROTO(struct inode *inode, struct bdi_writeback *old_wb, struct bdi_writeback *new_wb), TP_ARGS(inode, old_wb, new_wb), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, ino) __field(unsigned int, old_cgroup_ino) __field(unsigned int, new_cgroup_ino) ), TP_fast_assign( strncpy(__entry->name, dev_name(old_wb->bdi->dev), 32); __entry->ino = inode->i_ino; __entry->old_cgroup_ino = __trace_wb_assign_cgroup(old_wb); __entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb); ), TP_printk("bdi %s: ino=%lu old_cgroup_ino=%u new_cgroup_ino=%u", __entry->name, __entry->ino, __entry->old_cgroup_ino, __entry->new_cgroup_ino ) ); TRACE_EVENT(track_foreign_dirty, TP_PROTO(struct page *page, struct bdi_writeback *wb), TP_ARGS(page, wb), TP_STRUCT__entry( __array(char, name, 32) __field(u64, bdi_id) __field(unsigned long, ino) __field(unsigned int, memcg_id) __field(unsigned int, cgroup_ino) __field(unsigned int, page_cgroup_ino) ), TP_fast_assign( struct address_space *mapping = page_mapping(page); struct inode *inode = mapping ? mapping->host : NULL; strncpy(__entry->name, dev_name(wb->bdi->dev), 32); __entry->bdi_id = wb->bdi->id; __entry->ino = inode ? inode->i_ino : 0; __entry->memcg_id = wb->memcg_css->id; __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); __entry->page_cgroup_ino = cgroup_ino(page_memcg(page)->css.cgroup); ), TP_printk("bdi %s[%llu]: ino=%lu memcg_id=%u cgroup_ino=%u page_cgroup_ino=%u", __entry->name, __entry->bdi_id, __entry->ino, __entry->memcg_id, __entry->cgroup_ino, __entry->page_cgroup_ino ) ); TRACE_EVENT(flush_foreign, TP_PROTO(struct bdi_writeback *wb, unsigned int frn_bdi_id, unsigned int frn_memcg_id), TP_ARGS(wb, frn_bdi_id, frn_memcg_id), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned int, cgroup_ino) __field(unsigned int, frn_bdi_id) __field(unsigned int, frn_memcg_id) ), TP_fast_assign( strncpy(__entry->name, dev_name(wb->bdi->dev), 32); __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); __entry->frn_bdi_id = frn_bdi_id; __entry->frn_memcg_id = frn_memcg_id; ), TP_printk("bdi %s: cgroup_ino=%u frn_bdi_id=%u frn_memcg_id=%u", __entry->name, __entry->cgroup_ino, __entry->frn_bdi_id, __entry->frn_memcg_id ) ); #endif DECLARE_EVENT_CLASS(writeback_write_inode_template, TP_PROTO(struct inode *inode, struct writeback_control *wbc), TP_ARGS(inode, wbc), TP_STRUCT__entry ( __array(char, name, 32) __field(unsigned long, ino) __field(int, sync_mode) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); __entry->ino = inode->i_ino; __entry->sync_mode = wbc->sync_mode; __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); ), TP_printk("bdi %s: ino=%lu sync_mode=%d cgroup_ino=%u", __entry->name, __entry->ino, __entry->sync_mode, __entry->cgroup_ino ) ); DEFINE_EVENT(writeback_write_inode_template, writeback_write_inode_start, TP_PROTO(struct inode *inode, struct writeback_control *wbc), TP_ARGS(inode, wbc) ); DEFINE_EVENT(writeback_write_inode_template, writeback_write_inode, TP_PROTO(struct inode *inode, struct writeback_control *wbc), TP_ARGS(inode, wbc) ); DECLARE_EVENT_CLASS(writeback_work_class, TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work), TP_ARGS(wb, work), TP_STRUCT__entry( __array(char, name, 32) __field(long, nr_pages) __field(dev_t, sb_dev) __field(int, sync_mode) __field(int, for_kupdate) __field(int, range_cyclic) __field(int, for_background) __field(int, reason) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); __entry->nr_pages = work->nr_pages; __entry->sb_dev = work->sb ? work->sb->s_dev : 0; __entry->sync_mode = work->sync_mode; __entry->for_kupdate = work->for_kupdate; __entry->range_cyclic = work->range_cyclic; __entry->for_background = work->for_background; __entry->reason = work->reason; __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d " "kupdate=%d range_cyclic=%d background=%d reason=%s cgroup_ino=%u", __entry->name, MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev), __entry->nr_pages, __entry->sync_mode, __entry->for_kupdate, __entry->range_cyclic, __entry->for_background, __print_symbolic(__entry->reason, WB_WORK_REASON), __entry->cgroup_ino ) ); #define DEFINE_WRITEBACK_WORK_EVENT(name) \ DEFINE_EVENT(writeback_work_class, name, \ TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work), \ TP_ARGS(wb, work)) DEFINE_WRITEBACK_WORK_EVENT(writeback_queue); DEFINE_WRITEBACK_WORK_EVENT(writeback_exec); DEFINE_WRITEBACK_WORK_EVENT(writeback_start); DEFINE_WRITEBACK_WORK_EVENT(writeback_written); DEFINE_WRITEBACK_WORK_EVENT(writeback_wait); TRACE_EVENT(writeback_pages_written, TP_PROTO(long pages_written), TP_ARGS(pages_written), TP_STRUCT__entry( __field(long, pages) ), TP_fast_assign( __entry->pages = pages_written; ), TP_printk("%ld", __entry->pages) ); DECLARE_EVENT_CLASS(writeback_class, TP_PROTO(struct bdi_writeback *wb), TP_ARGS(wb), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: cgroup_ino=%u", __entry->name, __entry->cgroup_ino ) ); #define DEFINE_WRITEBACK_EVENT(name) \ DEFINE_EVENT(writeback_class, name, \ TP_PROTO(struct bdi_writeback *wb), \ TP_ARGS(wb)) DEFINE_WRITEBACK_EVENT(writeback_wake_background); TRACE_EVENT(writeback_bdi_register, TP_PROTO(struct backing_dev_info *bdi), TP_ARGS(bdi), TP_STRUCT__entry( __array(char, name, 32) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(bdi), 32); ), TP_printk("bdi %s", __entry->name ) ); DECLARE_EVENT_CLASS(wbc_class, TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), TP_ARGS(wbc, bdi), TP_STRUCT__entry( __array(char, name, 32) __field(long, nr_to_write) __field(long, pages_skipped) __field(int, sync_mode) __field(int, for_kupdate) __field(int, for_background) __field(int, for_reclaim) __field(int, range_cyclic) __field(long, range_start) __field(long, range_end) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(bdi), 32); __entry->nr_to_write = wbc->nr_to_write; __entry->pages_skipped = wbc->pages_skipped; __entry->sync_mode = wbc->sync_mode; __entry->for_kupdate = wbc->for_kupdate; __entry->for_background = wbc->for_background; __entry->for_reclaim = wbc->for_reclaim; __entry->range_cyclic = wbc->range_cyclic; __entry->range_start = (long)wbc->range_start; __entry->range_end = (long)wbc->range_end; __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); ), TP_printk("bdi %s: towrt=%ld skip=%ld mode=%d kupd=%d " "bgrd=%d reclm=%d cyclic=%d " "start=0x%lx end=0x%lx cgroup_ino=%u", __entry->name, __entry->nr_to_write, __entry->pages_skipped, __entry->sync_mode, __entry->for_kupdate, __entry->for_background, __entry->for_reclaim, __entry->range_cyclic, __entry->range_start, __entry->range_end, __entry->cgroup_ino ) ) #define DEFINE_WBC_EVENT(name) \ DEFINE_EVENT(wbc_class, name, \ TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), \ TP_ARGS(wbc, bdi)) DEFINE_WBC_EVENT(wbc_writepage); TRACE_EVENT(writeback_queue_io, TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work, unsigned long dirtied_before, int moved), TP_ARGS(wb, work, dirtied_before, moved), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, older) __field(long, age) __field(int, moved) __field(int, reason) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); __entry->older = dirtied_before; __entry->age = (jiffies - dirtied_before) * 1000 / HZ; __entry->moved = moved; __entry->reason = work->reason; __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s cgroup_ino=%u", __entry->name, __entry->older, /* dirtied_before in jiffies */ __entry->age, /* dirtied_before in relative milliseconds */ __entry->moved, __print_symbolic(__entry->reason, WB_WORK_REASON), __entry->cgroup_ino ) ); TRACE_EVENT(global_dirty_state, TP_PROTO(unsigned long background_thresh, unsigned long dirty_thresh ), TP_ARGS(background_thresh, dirty_thresh ), TP_STRUCT__entry( __field(unsigned long, nr_dirty) __field(unsigned long, nr_writeback) __field(unsigned long, background_thresh) __field(unsigned long, dirty_thresh) __field(unsigned long, dirty_limit) __field(unsigned long, nr_dirtied) __field(unsigned long, nr_written) ), TP_fast_assign( __entry->nr_dirty = global_node_page_state(NR_FILE_DIRTY); __entry->nr_writeback = global_node_page_state(NR_WRITEBACK); __entry->nr_dirtied = global_node_page_state(NR_DIRTIED); __entry->nr_written = global_node_page_state(NR_WRITTEN); __entry->background_thresh = background_thresh; __entry->dirty_thresh = dirty_thresh; __entry->dirty_limit = global_wb_domain.dirty_limit; ), TP_printk("dirty=%lu writeback=%lu " "bg_thresh=%lu thresh=%lu limit=%lu " "dirtied=%lu written=%lu", __entry->nr_dirty, __entry->nr_writeback, __entry->background_thresh, __entry->dirty_thresh, __entry->dirty_limit, __entry->nr_dirtied, __entry->nr_written ) ); #define KBps(x) ((x) << (PAGE_SHIFT - 10)) TRACE_EVENT(bdi_dirty_ratelimit, TP_PROTO(struct bdi_writeback *wb, unsigned long dirty_rate, unsigned long task_ratelimit), TP_ARGS(wb, dirty_rate, task_ratelimit), TP_STRUCT__entry( __array(char, bdi, 32) __field(unsigned long, write_bw) __field(unsigned long, avg_write_bw) __field(unsigned long, dirty_rate) __field(unsigned long, dirty_ratelimit) __field(unsigned long, task_ratelimit) __field(unsigned long, balanced_dirty_ratelimit) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->bdi, bdi_dev_name(wb->bdi), 32); __entry->write_bw = KBps(wb->write_bandwidth); __entry->avg_write_bw = KBps(wb->avg_write_bandwidth); __entry->dirty_rate = KBps(dirty_rate); __entry->dirty_ratelimit = KBps(wb->dirty_ratelimit); __entry->task_ratelimit = KBps(task_ratelimit); __entry->balanced_dirty_ratelimit = KBps(wb->balanced_dirty_ratelimit); __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: " "write_bw=%lu awrite_bw=%lu dirty_rate=%lu " "dirty_ratelimit=%lu task_ratelimit=%lu " "balanced_dirty_ratelimit=%lu cgroup_ino=%u", __entry->bdi, __entry->write_bw, /* write bandwidth */ __entry->avg_write_bw, /* avg write bandwidth */ __entry->dirty_rate, /* bdi dirty rate */ __entry->dirty_ratelimit, /* base ratelimit */ __entry->task_ratelimit, /* ratelimit with position control */ __entry->balanced_dirty_ratelimit, /* the balanced ratelimit */ __entry->cgroup_ino ) ); TRACE_EVENT(balance_dirty_pages, TP_PROTO(struct bdi_writeback *wb, unsigned long thresh, unsigned long bg_thresh, unsigned long dirty, unsigned long bdi_thresh, unsigned long bdi_dirty, unsigned long dirty_ratelimit, unsigned long task_ratelimit, unsigned long dirtied, unsigned long period, long pause, unsigned long start_time), TP_ARGS(wb, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty, dirty_ratelimit, task_ratelimit, dirtied, period, pause, start_time), TP_STRUCT__entry( __array( char, bdi, 32) __field(unsigned long, limit) __field(unsigned long, setpoint) __field(unsigned long, dirty) __field(unsigned long, bdi_setpoint) __field(unsigned long, bdi_dirty) __field(unsigned long, dirty_ratelimit) __field(unsigned long, task_ratelimit) __field(unsigned int, dirtied) __field(unsigned int, dirtied_pause) __field(unsigned long, paused) __field( long, pause) __field(unsigned long, period) __field( long, think) __field(unsigned int, cgroup_ino) ), TP_fast_assign( unsigned long freerun = (thresh + bg_thresh) / 2; strscpy_pad(__entry->bdi, bdi_dev_name(wb->bdi), 32); __entry->limit = global_wb_domain.dirty_limit; __entry->setpoint = (global_wb_domain.dirty_limit + freerun) / 2; __entry->dirty = dirty; __entry->bdi_setpoint = __entry->setpoint * bdi_thresh / (thresh + 1); __entry->bdi_dirty = bdi_dirty; __entry->dirty_ratelimit = KBps(dirty_ratelimit); __entry->task_ratelimit = KBps(task_ratelimit); __entry->dirtied = dirtied; __entry->dirtied_pause = current->nr_dirtied_pause; __entry->think = current->dirty_paused_when == 0 ? 0 : (long)(jiffies - current->dirty_paused_when) * 1000/HZ; __entry->period = period * 1000 / HZ; __entry->pause = pause * 1000 / HZ; __entry->paused = (jiffies - start_time) * 1000 / HZ; __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: " "limit=%lu setpoint=%lu dirty=%lu " "bdi_setpoint=%lu bdi_dirty=%lu " "dirty_ratelimit=%lu task_ratelimit=%lu " "dirtied=%u dirtied_pause=%u " "paused=%lu pause=%ld period=%lu think=%ld cgroup_ino=%u", __entry->bdi, __entry->limit, __entry->setpoint, __entry->dirty, __entry->bdi_setpoint, __entry->bdi_dirty, __entry->dirty_ratelimit, __entry->task_ratelimit, __entry->dirtied, __entry->dirtied_pause, __entry->paused, /* ms */ __entry->pause, /* ms */ __entry->period, /* ms */ __entry->think, /* ms */ __entry->cgroup_ino ) ); TRACE_EVENT(writeback_sb_inodes_requeue, TP_PROTO(struct inode *inode), TP_ARGS(inode), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, ino) __field(unsigned long, state) __field(unsigned long, dirtied_when) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); __entry->ino = inode->i_ino; __entry->state = inode->i_state; __entry->dirtied_when = inode->dirtied_when; __entry->cgroup_ino = __trace_wb_assign_cgroup(inode_to_wb(inode)); ), TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu cgroup_ino=%u", __entry->name, __entry->ino, show_inode_state(__entry->state), __entry->dirtied_when, (jiffies - __entry->dirtied_when) / HZ, __entry->cgroup_ino ) ); DECLARE_EVENT_CLASS(writeback_congest_waited_template, TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed), TP_ARGS(usec_timeout, usec_delayed), TP_STRUCT__entry( __field( unsigned int, usec_timeout ) __field( unsigned int, usec_delayed ) ), TP_fast_assign( __entry->usec_timeout = usec_timeout; __entry->usec_delayed = usec_delayed; ), TP_printk("usec_timeout=%u usec_delayed=%u", __entry->usec_timeout, __entry->usec_delayed) ); DEFINE_EVENT(writeback_congest_waited_template, writeback_congestion_wait, TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed), TP_ARGS(usec_timeout, usec_delayed) ); DECLARE_EVENT_CLASS(writeback_single_inode_template, TP_PROTO(struct inode *inode, struct writeback_control *wbc, unsigned long nr_to_write ), TP_ARGS(inode, wbc, nr_to_write), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, ino) __field(unsigned long, state) __field(unsigned long, dirtied_when) __field(unsigned long, writeback_index) __field(long, nr_to_write) __field(unsigned long, wrote) __field(unsigned int, cgroup_ino) ), TP_fast_assign( strscpy_pad(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); __entry->ino = inode->i_ino; __entry->state = inode->i_state; __entry->dirtied_when = inode->dirtied_when; __entry->writeback_index = inode->i_mapping->writeback_index; __entry->nr_to_write = nr_to_write; __entry->wrote = nr_to_write - wbc->nr_to_write; __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); ), TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu " "index=%lu to_write=%ld wrote=%lu cgroup_ino=%u", __entry->name, __entry->ino, show_inode_state(__entry->state), __entry->dirtied_when, (jiffies - __entry->dirtied_when) / HZ, __entry->writeback_index, __entry->nr_to_write, __entry->wrote, __entry->cgroup_ino ) ); DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode_start, TP_PROTO(struct inode *inode, struct writeback_control *wbc, unsigned long nr_to_write), TP_ARGS(inode, wbc, nr_to_write) ); DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode, TP_PROTO(struct inode *inode, struct writeback_control *wbc, unsigned long nr_to_write), TP_ARGS(inode, wbc, nr_to_write) ); DECLARE_EVENT_CLASS(writeback_inode_template, TP_PROTO(struct inode *inode), TP_ARGS(inode), TP_STRUCT__entry( __field( dev_t, dev ) __field(unsigned long, ino ) __field(unsigned long, state ) __field( __u16, mode ) __field(unsigned long, dirtied_when ) ), TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; __entry->state = inode->i_state; __entry->mode = inode->i_mode; __entry->dirtied_when = inode->dirtied_when; ), TP_printk("dev %d,%d ino %lu dirtied %lu state %s mode 0%o", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->dirtied_when, show_inode_state(__entry->state), __entry->mode) ); DEFINE_EVENT(writeback_inode_template, writeback_lazytime, TP_PROTO(struct inode *inode), TP_ARGS(inode) ); DEFINE_EVENT(writeback_inode_template, writeback_lazytime_iput, TP_PROTO(struct inode *inode), TP_ARGS(inode) ); DEFINE_EVENT(writeback_inode_template, writeback_dirty_inode_enqueue, TP_PROTO(struct inode *inode), TP_ARGS(inode) ); /* * Inode writeback list tracking. */ DEFINE_EVENT(writeback_inode_template, sb_mark_inode_writeback, TP_PROTO(struct inode *inode), TP_ARGS(inode) ); DEFINE_EVENT(writeback_inode_template, sb_clear_inode_writeback, TP_PROTO(struct inode *inode), TP_ARGS(inode) ); #endif /* _TRACE_WRITEBACK_H */ /* This part must be outside protection */ #include <trace/define_trace.h>