brintos

brintos / linux-shallow public Read only

0
0
Text · 4.6 KiB · f48fe63 Raw
203 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM filemap4 5#if !defined(_TRACE_FILEMAP_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_FILEMAP_H7 8#include <linux/types.h>9#include <linux/tracepoint.h>10#include <linux/mm.h>11#include <linux/memcontrol.h>12#include <linux/device.h>13#include <linux/kdev_t.h>14#include <linux/errseq.h>15 16DECLARE_EVENT_CLASS(mm_filemap_op_page_cache,17 18	TP_PROTO(struct folio *folio),19 20	TP_ARGS(folio),21 22	TP_STRUCT__entry(23		__field(unsigned long, pfn)24		__field(unsigned long, i_ino)25		__field(unsigned long, index)26		__field(dev_t, s_dev)27		__field(unsigned char, order)28	),29 30	TP_fast_assign(31		__entry->pfn = folio_pfn(folio);32		__entry->i_ino = folio->mapping->host->i_ino;33		__entry->index = folio->index;34		if (folio->mapping->host->i_sb)35			__entry->s_dev = folio->mapping->host->i_sb->s_dev;36		else37			__entry->s_dev = folio->mapping->host->i_rdev;38		__entry->order = folio_order(folio);39	),40 41	TP_printk("dev %d:%d ino %lx pfn=0x%lx ofs=%lu order=%u",42		MAJOR(__entry->s_dev), MINOR(__entry->s_dev),43		__entry->i_ino,44		__entry->pfn,45		__entry->index << PAGE_SHIFT,46		__entry->order)47);48 49DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_delete_from_page_cache,50	TP_PROTO(struct folio *folio),51	TP_ARGS(folio)52	);53 54DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_add_to_page_cache,55	TP_PROTO(struct folio *folio),56	TP_ARGS(folio)57	);58 59DECLARE_EVENT_CLASS(mm_filemap_op_page_cache_range,60 61	TP_PROTO(62		struct address_space *mapping,63		pgoff_t index,64		pgoff_t last_index65	),66 67	TP_ARGS(mapping, index, last_index),68 69	TP_STRUCT__entry(70		__field(unsigned long, i_ino)71		__field(dev_t, s_dev)72		__field(unsigned long, index)73		__field(unsigned long, last_index)74	),75 76	TP_fast_assign(77		__entry->i_ino = mapping->host->i_ino;78		if (mapping->host->i_sb)79			__entry->s_dev =80				mapping->host->i_sb->s_dev;81		else82			__entry->s_dev = mapping->host->i_rdev;83		__entry->index = index;84		__entry->last_index = last_index;85	),86 87	TP_printk(88		"dev=%d:%d ino=%lx ofs=%lld-%lld",89		MAJOR(__entry->s_dev),90		MINOR(__entry->s_dev), __entry->i_ino,91		((loff_t)__entry->index) << PAGE_SHIFT,92		((((loff_t)__entry->last_index + 1) << PAGE_SHIFT) - 1)93	)94);95 96DEFINE_EVENT(mm_filemap_op_page_cache_range, mm_filemap_get_pages,97	TP_PROTO(98		struct address_space *mapping,99		pgoff_t index,100		pgoff_t last_index101	),102	TP_ARGS(mapping, index, last_index)103);104 105DEFINE_EVENT(mm_filemap_op_page_cache_range, mm_filemap_map_pages,106	TP_PROTO(107		struct address_space *mapping,108		pgoff_t index,109		pgoff_t last_index110	),111	TP_ARGS(mapping, index, last_index)112);113 114TRACE_EVENT(mm_filemap_fault,115	TP_PROTO(struct address_space *mapping, pgoff_t index),116 117	TP_ARGS(mapping, index),118 119	TP_STRUCT__entry(120		__field(unsigned long, i_ino)121		__field(dev_t, s_dev)122		__field(unsigned long, index)123	),124 125	TP_fast_assign(126		__entry->i_ino = mapping->host->i_ino;127		if (mapping->host->i_sb)128			__entry->s_dev =129				mapping->host->i_sb->s_dev;130		else131			__entry->s_dev = mapping->host->i_rdev;132		__entry->index = index;133	),134 135	TP_printk(136		"dev=%d:%d ino=%lx ofs=%lld",137		MAJOR(__entry->s_dev),138		MINOR(__entry->s_dev), __entry->i_ino,139		((loff_t)__entry->index) << PAGE_SHIFT140	)141);142 143TRACE_EVENT(filemap_set_wb_err,144		TP_PROTO(struct address_space *mapping, errseq_t eseq),145 146		TP_ARGS(mapping, eseq),147 148		TP_STRUCT__entry(149			__field(unsigned long, i_ino)150			__field(dev_t, s_dev)151			__field(errseq_t, errseq)152		),153 154		TP_fast_assign(155			__entry->i_ino = mapping->host->i_ino;156			__entry->errseq = eseq;157			if (mapping->host->i_sb)158				__entry->s_dev = mapping->host->i_sb->s_dev;159			else160				__entry->s_dev = mapping->host->i_rdev;161		),162 163		TP_printk("dev=%d:%d ino=0x%lx errseq=0x%x",164			MAJOR(__entry->s_dev), MINOR(__entry->s_dev),165			__entry->i_ino, __entry->errseq)166);167 168TRACE_EVENT(file_check_and_advance_wb_err,169		TP_PROTO(struct file *file, errseq_t old),170 171		TP_ARGS(file, old),172 173		TP_STRUCT__entry(174			__field(struct file *, file)175			__field(unsigned long, i_ino)176			__field(dev_t, s_dev)177			__field(errseq_t, old)178			__field(errseq_t, new)179		),180 181		TP_fast_assign(182			__entry->file = file;183			__entry->i_ino = file->f_mapping->host->i_ino;184			if (file->f_mapping->host->i_sb)185				__entry->s_dev =186					file->f_mapping->host->i_sb->s_dev;187			else188				__entry->s_dev =189					file->f_mapping->host->i_rdev;190			__entry->old = old;191			__entry->new = file->f_wb_err;192		),193 194		TP_printk("file=%p dev=%d:%d ino=0x%lx old=0x%x new=0x%x",195			__entry->file, MAJOR(__entry->s_dev),196			MINOR(__entry->s_dev), __entry->i_ino, __entry->old,197			__entry->new)198);199#endif /* _TRACE_FILEMAP_H */200 201/* This part must be outside protection */202#include <trace/define_trace.h>203