124 lines · 2.9 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 */#undef TRACE_SYSTEM#define TRACE_SYSTEM timestamp #if !defined(_TRACE_TIMESTAMP_H) || defined(TRACE_HEADER_MULTI_READ)#define _TRACE_TIMESTAMP_H #include <linux/tracepoint.h>#include <linux/fs.h> #define CTIME_QUERIED_FLAGS \	{ I_CTIME_QUERIED, "Q" } DECLARE_EVENT_CLASS(ctime,	TP_PROTO(struct inode *inode,		 struct timespec64 *ctime), 	TP_ARGS(inode, ctime), 	TP_STRUCT__entry(		__field(u64,		ino)		__field(time64_t,	ctime_s)		__field(dev_t,		dev)		__field(u32,		ctime_ns)		__field(u32,		gen)	), 	TP_fast_assign(		__entry->dev		= inode->i_sb->s_dev;		__entry->ino		= inode->i_ino;		__entry->gen		= inode->i_generation;		__entry->ctime_s	= ctime->tv_sec;		__entry->ctime_ns	= ctime->tv_nsec;	), 	TP_printk("ino=%d:%d:%llu:%u ctime=%lld.%u",		MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,		__entry->ctime_s, __entry->ctime_ns	)); DEFINE_EVENT(ctime, inode_set_ctime_to_ts,		TP_PROTO(struct inode *inode,			 struct timespec64 *ctime),		TP_ARGS(inode, ctime)); DEFINE_EVENT(ctime, ctime_xchg_skip,		TP_PROTO(struct inode *inode,			 struct timespec64 *ctime),		TP_ARGS(inode, ctime)); TRACE_EVENT(ctime_ns_xchg,	TP_PROTO(struct inode *inode,		 u32 old,		 u32 new,		 u32 cur), 	TP_ARGS(inode, old, new, cur), 	TP_STRUCT__entry(		__field(u64,		ino)		__field(dev_t,		dev)		__field(u32,		gen)		__field(u32,		old)		__field(u32,		new)		__field(u32,		cur)	), 	TP_fast_assign(		__entry->dev		= inode->i_sb->s_dev;		__entry->ino		= inode->i_ino;		__entry->gen		= inode->i_generation;		__entry->old		= old;		__entry->new		= new;		__entry->cur		= cur;	), 	TP_printk("ino=%d:%d:%llu:%u old=%u:%s new=%u cur=%u:%s",		MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,		__entry->old & ~I_CTIME_QUERIED,		__print_flags(__entry->old & I_CTIME_QUERIED, "|", CTIME_QUERIED_FLAGS),		__entry->new,		__entry->cur & ~I_CTIME_QUERIED,		__print_flags(__entry->cur & I_CTIME_QUERIED, "|", CTIME_QUERIED_FLAGS)	)); TRACE_EVENT(fill_mg_cmtime,	TP_PROTO(struct inode *inode,		 struct timespec64 *ctime,		 struct timespec64 *mtime), 	TP_ARGS(inode, ctime, mtime), 	TP_STRUCT__entry(		__field(u64,		ino)		__field(time64_t,	ctime_s)		__field(time64_t,	mtime_s)		__field(dev_t,		dev)		__field(u32,		ctime_ns)		__field(u32,		mtime_ns)		__field(u32,		gen)	), 	TP_fast_assign(		__entry->dev		= inode->i_sb->s_dev;		__entry->ino		= inode->i_ino;		__entry->gen		= inode->i_generation;		__entry->ctime_s	= ctime->tv_sec;		__entry->mtime_s	= mtime->tv_sec;		__entry->ctime_ns	= ctime->tv_nsec;		__entry->mtime_ns	= mtime->tv_nsec;	), 	TP_printk("ino=%d:%d:%llu:%u ctime=%lld.%u mtime=%lld.%u",		MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,		__entry->ctime_s, __entry->ctime_ns,		__entry->mtime_s, __entry->mtime_ns	));#endif /* _TRACE_TIMESTAMP_H */ /* This part must be outside protection */#include <trace/define_trace.h>