Loading...
Note: File does not exist in v6.2.
1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM timestamp
4
5#if !defined(_TRACE_TIMESTAMP_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_TIMESTAMP_H
7
8#include <linux/tracepoint.h>
9#include <linux/fs.h>
10
11#define CTIME_QUERIED_FLAGS \
12 { I_CTIME_QUERIED, "Q" }
13
14DECLARE_EVENT_CLASS(ctime,
15 TP_PROTO(struct inode *inode,
16 struct timespec64 *ctime),
17
18 TP_ARGS(inode, ctime),
19
20 TP_STRUCT__entry(
21 __field(dev_t, dev)
22 __field(ino_t, ino)
23 __field(time64_t, ctime_s)
24 __field(u32, ctime_ns)
25 __field(u32, gen)
26 ),
27
28 TP_fast_assign(
29 __entry->dev = inode->i_sb->s_dev;
30 __entry->ino = inode->i_ino;
31 __entry->gen = inode->i_generation;
32 __entry->ctime_s = ctime->tv_sec;
33 __entry->ctime_ns = ctime->tv_nsec;
34 ),
35
36 TP_printk("ino=%d:%d:%ld:%u ctime=%lld.%u",
37 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,
38 __entry->ctime_s, __entry->ctime_ns
39 )
40);
41
42DEFINE_EVENT(ctime, inode_set_ctime_to_ts,
43 TP_PROTO(struct inode *inode,
44 struct timespec64 *ctime),
45 TP_ARGS(inode, ctime));
46
47DEFINE_EVENT(ctime, ctime_xchg_skip,
48 TP_PROTO(struct inode *inode,
49 struct timespec64 *ctime),
50 TP_ARGS(inode, ctime));
51
52TRACE_EVENT(ctime_ns_xchg,
53 TP_PROTO(struct inode *inode,
54 u32 old,
55 u32 new,
56 u32 cur),
57
58 TP_ARGS(inode, old, new, cur),
59
60 TP_STRUCT__entry(
61 __field(dev_t, dev)
62 __field(ino_t, ino)
63 __field(u32, gen)
64 __field(u32, old)
65 __field(u32, new)
66 __field(u32, cur)
67 ),
68
69 TP_fast_assign(
70 __entry->dev = inode->i_sb->s_dev;
71 __entry->ino = inode->i_ino;
72 __entry->gen = inode->i_generation;
73 __entry->old = old;
74 __entry->new = new;
75 __entry->cur = cur;
76 ),
77
78 TP_printk("ino=%d:%d:%ld:%u old=%u:%s new=%u cur=%u:%s",
79 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,
80 __entry->old & ~I_CTIME_QUERIED,
81 __print_flags(__entry->old & I_CTIME_QUERIED, "|", CTIME_QUERIED_FLAGS),
82 __entry->new,
83 __entry->cur & ~I_CTIME_QUERIED,
84 __print_flags(__entry->cur & I_CTIME_QUERIED, "|", CTIME_QUERIED_FLAGS)
85 )
86);
87
88TRACE_EVENT(fill_mg_cmtime,
89 TP_PROTO(struct inode *inode,
90 struct timespec64 *ctime,
91 struct timespec64 *mtime),
92
93 TP_ARGS(inode, ctime, mtime),
94
95 TP_STRUCT__entry(
96 __field(dev_t, dev)
97 __field(ino_t, ino)
98 __field(time64_t, ctime_s)
99 __field(time64_t, mtime_s)
100 __field(u32, ctime_ns)
101 __field(u32, mtime_ns)
102 __field(u32, gen)
103 ),
104
105 TP_fast_assign(
106 __entry->dev = inode->i_sb->s_dev;
107 __entry->ino = inode->i_ino;
108 __entry->gen = inode->i_generation;
109 __entry->ctime_s = ctime->tv_sec;
110 __entry->mtime_s = mtime->tv_sec;
111 __entry->ctime_ns = ctime->tv_nsec;
112 __entry->mtime_ns = mtime->tv_nsec;
113 ),
114
115 TP_printk("ino=%d:%d:%ld:%u ctime=%lld.%u mtime=%lld.%u",
116 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->gen,
117 __entry->ctime_s, __entry->ctime_ns,
118 __entry->mtime_s, __entry->mtime_ns
119 )
120);
121#endif /* _TRACE_TIMESTAMP_H */
122
123/* This part must be outside protection */
124#include <trace/define_trace.h>