^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* CacheFiles tracepoints
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Written by David Howells (dhowells@redhat.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define TRACE_SYSTEM cachefiles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _TRACE_CACHEFILES_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * Define enums for tracing information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) enum cachefiles_obj_ref_trace {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) cachefiles_obj_put_wait_retry = fscache_obj_ref__nr_traces,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) cachefiles_obj_put_wait_timeo,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) cachefiles_obj_ref__nr_traces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * Define enum -> string mappings for display.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define cachefiles_obj_kill_traces \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) EM(FSCACHE_OBJECT_IS_STALE, "stale") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) EM(FSCACHE_OBJECT_NO_SPACE, "no_space") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) EM(FSCACHE_OBJECT_WAS_RETIRED, "was_retired") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) E_(FSCACHE_OBJECT_WAS_CULLED, "was_culled")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define cachefiles_obj_ref_traces \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) EM(fscache_obj_get_add_to_deps, "GET add_to_deps") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) EM(fscache_obj_get_queue, "GET queue") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) EM(fscache_obj_put_alloc_fail, "PUT alloc_fail") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) EM(fscache_obj_put_attach_fail, "PUT attach_fail") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) EM(fscache_obj_put_drop_obj, "PUT drop_obj") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) EM(fscache_obj_put_enq_dep, "PUT enq_dep") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) EM(fscache_obj_put_queue, "PUT queue") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) EM(fscache_obj_put_work, "PUT work") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) EM(cachefiles_obj_put_wait_retry, "PUT wait_retry") \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) E_(cachefiles_obj_put_wait_timeo, "PUT wait_timeo")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) * Export enum symbols via userspace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #undef EM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #undef E_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define EM(a, b) TRACE_DEFINE_ENUM(a);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define E_(a, b) TRACE_DEFINE_ENUM(a);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) cachefiles_obj_kill_traces;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) cachefiles_obj_ref_traces;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) * Now redefine the EM() and E_() macros to map the enums to the strings that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) * will be printed in the output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #undef EM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #undef E_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define EM(a, b) { a, b },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define E_(a, b) { a, b }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) TRACE_EVENT(cachefiles_ref,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) struct fscache_cookie *cookie,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) enum cachefiles_obj_ref_trace why,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) int usage),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) TP_ARGS(obj, cookie, why, usage),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) __field(struct fscache_cookie *, cookie )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) __field(enum cachefiles_obj_ref_trace, why )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) __field(int, usage )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) __entry->cookie = cookie;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) __entry->usage = usage;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) __entry->why = why;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) TP_printk("c=%p o=%p u=%d %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) __entry->cookie, __entry->obj, __entry->usage,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) __print_symbolic(__entry->why, cachefiles_obj_ref_traces))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) TRACE_EVENT(cachefiles_lookup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) struct inode *inode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) TP_ARGS(obj, de, inode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) __field(struct inode *, inode )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) __entry->inode = inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) TP_printk("o=%p d=%p i=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) __entry->obj, __entry->de, __entry->inode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) TRACE_EVENT(cachefiles_mkdir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) struct dentry *de, int ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) TP_ARGS(obj, de, ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) __field(int, ret )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) __entry->ret = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) TP_printk("o=%p d=%p r=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) __entry->obj, __entry->de, __entry->ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) TRACE_EVENT(cachefiles_create,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) struct dentry *de, int ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) TP_ARGS(obj, de, ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) __field(int, ret )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) __entry->ret = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) TP_printk("o=%p d=%p r=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) __entry->obj, __entry->de, __entry->ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) TRACE_EVENT(cachefiles_unlink,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) enum fscache_why_object_killed why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) TP_ARGS(obj, de, why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) __field(enum fscache_why_object_killed, why )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) __entry->why = why;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) TP_printk("o=%p d=%p w=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) __entry->obj, __entry->de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) TRACE_EVENT(cachefiles_rename,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) struct dentry *to,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) enum fscache_why_object_killed why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) TP_ARGS(obj, de, to, why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) __field(struct dentry *, to )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) __field(enum fscache_why_object_killed, why )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) __entry->to = to;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) __entry->why = why;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) TP_printk("o=%p d=%p t=%p w=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) __entry->obj, __entry->de, __entry->to,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) TRACE_EVENT(cachefiles_mark_active,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) struct dentry *de),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) TP_ARGS(obj, de),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) TP_printk("o=%p d=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) __entry->obj, __entry->de)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) TRACE_EVENT(cachefiles_wait_active,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) struct cachefiles_object *xobj),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) TP_ARGS(obj, de, xobj),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) __field(struct cachefiles_object *, xobj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) __field(u16, flags )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) __field(u16, fsc_flags )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) __entry->xobj = xobj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) __entry->flags = xobj->flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) __entry->fsc_flags = xobj->fscache.flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) TP_printk("o=%p d=%p wo=%p wf=%x wff=%x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) __entry->obj, __entry->de, __entry->xobj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) __entry->flags, __entry->fsc_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) TRACE_EVENT(cachefiles_mark_inactive,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) struct inode *inode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) TP_ARGS(obj, de, inode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) __field(struct inode *, inode )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) __entry->inode = inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) TP_printk("o=%p d=%p i=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) __entry->obj, __entry->de, __entry->inode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) TRACE_EVENT(cachefiles_mark_buried,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) TP_PROTO(struct cachefiles_object *obj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) struct dentry *de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) enum fscache_why_object_killed why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) TP_ARGS(obj, de, why),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) /* Note that obj may be NULL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) __field(struct cachefiles_object *, obj )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) __field(struct dentry *, de )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) __field(enum fscache_why_object_killed, why )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) __entry->obj = obj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) __entry->de = de;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) __entry->why = why;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) TP_printk("o=%p d=%p w=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) __entry->obj, __entry->de,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #endif /* _TRACE_CACHEFILES_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #include <trace/define_trace.h>