LCOV - code coverage report
Current view: top level - include/trace/events - cachefiles.h (source / functions) Hit Total Coverage
Test: Real Lines: 10 10 100.0 %
Date: 2020-10-17 15:46:16 Functions: 0 60 0.0 %
Legend: Neither, QEMU, Real, Both Branches: 0 0 -

           Branch data     Line data    Source code
       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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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                 :          3 : 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>
    

Generated by: LCOV version 1.14