xref: /openbmc/linux/include/trace/events/filemap.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2fe0bfaafSRobert Jarzmik #undef TRACE_SYSTEM
3fe0bfaafSRobert Jarzmik #define TRACE_SYSTEM filemap
4fe0bfaafSRobert Jarzmik 
5fe0bfaafSRobert Jarzmik #if !defined(_TRACE_FILEMAP_H) || defined(TRACE_HEADER_MULTI_READ)
6fe0bfaafSRobert Jarzmik #define _TRACE_FILEMAP_H
7fe0bfaafSRobert Jarzmik 
8fe0bfaafSRobert Jarzmik #include <linux/types.h>
9fe0bfaafSRobert Jarzmik #include <linux/tracepoint.h>
10fe0bfaafSRobert Jarzmik #include <linux/mm.h>
11fe0bfaafSRobert Jarzmik #include <linux/memcontrol.h>
12fe0bfaafSRobert Jarzmik #include <linux/device.h>
13fe0bfaafSRobert Jarzmik #include <linux/kdev_t.h>
145660e13dSJeff Layton #include <linux/errseq.h>
15fe0bfaafSRobert Jarzmik 
16fe0bfaafSRobert Jarzmik DECLARE_EVENT_CLASS(mm_filemap_op_page_cache,
17fe0bfaafSRobert Jarzmik 
18*a0580c6fSMatthew Wilcox (Oracle) 	TP_PROTO(struct folio *folio),
19fe0bfaafSRobert Jarzmik 
20*a0580c6fSMatthew Wilcox (Oracle) 	TP_ARGS(folio),
21fe0bfaafSRobert Jarzmik 
22fe0bfaafSRobert Jarzmik 	TP_STRUCT__entry(
239fdd8a87SNamhyung Kim 		__field(unsigned long, pfn)
24fe0bfaafSRobert Jarzmik 		__field(unsigned long, i_ino)
25fe0bfaafSRobert Jarzmik 		__field(unsigned long, index)
26fe0bfaafSRobert Jarzmik 		__field(dev_t, s_dev)
27*a0580c6fSMatthew Wilcox (Oracle) 		__field(unsigned char, order)
28fe0bfaafSRobert Jarzmik 	),
29fe0bfaafSRobert Jarzmik 
30fe0bfaafSRobert Jarzmik 	TP_fast_assign(
31*a0580c6fSMatthew Wilcox (Oracle) 		__entry->pfn = folio_pfn(folio);
32*a0580c6fSMatthew Wilcox (Oracle) 		__entry->i_ino = folio->mapping->host->i_ino;
33*a0580c6fSMatthew Wilcox (Oracle) 		__entry->index = folio->index;
34*a0580c6fSMatthew Wilcox (Oracle) 		if (folio->mapping->host->i_sb)
35*a0580c6fSMatthew Wilcox (Oracle) 			__entry->s_dev = folio->mapping->host->i_sb->s_dev;
36fe0bfaafSRobert Jarzmik 		else
37*a0580c6fSMatthew Wilcox (Oracle) 			__entry->s_dev = folio->mapping->host->i_rdev;
38*a0580c6fSMatthew Wilcox (Oracle) 		__entry->order = folio_order(folio);
39fe0bfaafSRobert Jarzmik 	),
40fe0bfaafSRobert Jarzmik 
41*a0580c6fSMatthew Wilcox (Oracle) 	TP_printk("dev %d:%d ino %lx pfn=0x%lx ofs=%lu order=%u",
42fe0bfaafSRobert Jarzmik 		MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
43fe0bfaafSRobert Jarzmik 		__entry->i_ino,
449fdd8a87SNamhyung Kim 		__entry->pfn,
45*a0580c6fSMatthew Wilcox (Oracle) 		__entry->index << PAGE_SHIFT,
46*a0580c6fSMatthew Wilcox (Oracle) 		__entry->order)
47fe0bfaafSRobert Jarzmik );
48fe0bfaafSRobert Jarzmik 
49fe0bfaafSRobert Jarzmik DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_delete_from_page_cache,
50*a0580c6fSMatthew Wilcox (Oracle) 	TP_PROTO(struct folio *folio),
51*a0580c6fSMatthew Wilcox (Oracle) 	TP_ARGS(folio)
52fe0bfaafSRobert Jarzmik 	);
53fe0bfaafSRobert Jarzmik 
54fe0bfaafSRobert Jarzmik DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_add_to_page_cache,
55*a0580c6fSMatthew Wilcox (Oracle) 	TP_PROTO(struct folio *folio),
56*a0580c6fSMatthew Wilcox (Oracle) 	TP_ARGS(folio)
57fe0bfaafSRobert Jarzmik 	);
58fe0bfaafSRobert Jarzmik 
595660e13dSJeff Layton TRACE_EVENT(filemap_set_wb_err,
605660e13dSJeff Layton 		TP_PROTO(struct address_space *mapping, errseq_t eseq),
615660e13dSJeff Layton 
625660e13dSJeff Layton 		TP_ARGS(mapping, eseq),
635660e13dSJeff Layton 
645660e13dSJeff Layton 		TP_STRUCT__entry(
655660e13dSJeff Layton 			__field(unsigned long, i_ino)
665660e13dSJeff Layton 			__field(dev_t, s_dev)
675660e13dSJeff Layton 			__field(errseq_t, errseq)
685660e13dSJeff Layton 		),
695660e13dSJeff Layton 
705660e13dSJeff Layton 		TP_fast_assign(
715660e13dSJeff Layton 			__entry->i_ino = mapping->host->i_ino;
725660e13dSJeff Layton 			__entry->errseq = eseq;
735660e13dSJeff Layton 			if (mapping->host->i_sb)
745660e13dSJeff Layton 				__entry->s_dev = mapping->host->i_sb->s_dev;
755660e13dSJeff Layton 			else
765660e13dSJeff Layton 				__entry->s_dev = mapping->host->i_rdev;
775660e13dSJeff Layton 		),
785660e13dSJeff Layton 
795660e13dSJeff Layton 		TP_printk("dev=%d:%d ino=0x%lx errseq=0x%x",
805660e13dSJeff Layton 			MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
815660e13dSJeff Layton 			__entry->i_ino, __entry->errseq)
825660e13dSJeff Layton );
835660e13dSJeff Layton 
845660e13dSJeff Layton TRACE_EVENT(file_check_and_advance_wb_err,
855660e13dSJeff Layton 		TP_PROTO(struct file *file, errseq_t old),
865660e13dSJeff Layton 
875660e13dSJeff Layton 		TP_ARGS(file, old),
885660e13dSJeff Layton 
895660e13dSJeff Layton 		TP_STRUCT__entry(
9004ae87a5SPeter Zijlstra 			__field(struct file *, file)
915660e13dSJeff Layton 			__field(unsigned long, i_ino)
925660e13dSJeff Layton 			__field(dev_t, s_dev)
935660e13dSJeff Layton 			__field(errseq_t, old)
945660e13dSJeff Layton 			__field(errseq_t, new)
955660e13dSJeff Layton 		),
965660e13dSJeff Layton 
975660e13dSJeff Layton 		TP_fast_assign(
985660e13dSJeff Layton 			__entry->file = file;
995660e13dSJeff Layton 			__entry->i_ino = file->f_mapping->host->i_ino;
1005660e13dSJeff Layton 			if (file->f_mapping->host->i_sb)
1015660e13dSJeff Layton 				__entry->s_dev =
1025660e13dSJeff Layton 					file->f_mapping->host->i_sb->s_dev;
1035660e13dSJeff Layton 			else
1045660e13dSJeff Layton 				__entry->s_dev =
1055660e13dSJeff Layton 					file->f_mapping->host->i_rdev;
1065660e13dSJeff Layton 			__entry->old = old;
1075660e13dSJeff Layton 			__entry->new = file->f_wb_err;
1085660e13dSJeff Layton 		),
1095660e13dSJeff Layton 
1105660e13dSJeff Layton 		TP_printk("file=%p dev=%d:%d ino=0x%lx old=0x%x new=0x%x",
1115660e13dSJeff Layton 			__entry->file, MAJOR(__entry->s_dev),
1125660e13dSJeff Layton 			MINOR(__entry->s_dev), __entry->i_ino, __entry->old,
1135660e13dSJeff Layton 			__entry->new)
1145660e13dSJeff Layton );
115fe0bfaafSRobert Jarzmik #endif /* _TRACE_FILEMAP_H */
116fe0bfaafSRobert Jarzmik 
117fe0bfaafSRobert Jarzmik /* This part must be outside protection */
118fe0bfaafSRobert Jarzmik #include <trace/define_trace.h>
119