root/include/trace/events/cachefiles.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */