~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/trace/events/fscache.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /* FS-Cache tracepoints
  3  *
  4  * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved.
  5  * Written by David Howells (dhowells@redhat.com)
  6  */
  7 #undef TRACE_SYSTEM
  8 #define TRACE_SYSTEM fscache
  9 
 10 #if !defined(_TRACE_FSCACHE_H) || defined(TRACE_HEADER_MULTI_READ)
 11 #define _TRACE_FSCACHE_H
 12 
 13 #include <linux/fscache.h>
 14 #include <linux/tracepoint.h>
 15 
 16 /*
 17  * Define enums for tracing information.
 18  */
 19 #ifndef __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
 20 #define __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
 21 
 22 enum fscache_cache_trace {
 23         fscache_cache_collision,
 24         fscache_cache_get_acquire,
 25         fscache_cache_new_acquire,
 26         fscache_cache_put_alloc_volume,
 27         fscache_cache_put_cache,
 28         fscache_cache_put_prep_failed,
 29         fscache_cache_put_relinquish,
 30         fscache_cache_put_volume,
 31 };
 32 
 33 enum fscache_volume_trace {
 34         fscache_volume_collision,
 35         fscache_volume_get_cookie,
 36         fscache_volume_get_create_work,
 37         fscache_volume_get_hash_collision,
 38         fscache_volume_get_withdraw,
 39         fscache_volume_free,
 40         fscache_volume_new_acquire,
 41         fscache_volume_put_cookie,
 42         fscache_volume_put_create_work,
 43         fscache_volume_put_hash_collision,
 44         fscache_volume_put_relinquish,
 45         fscache_volume_put_withdraw,
 46         fscache_volume_see_create_work,
 47         fscache_volume_see_hash_wake,
 48         fscache_volume_wait_create_work,
 49 };
 50 
 51 enum fscache_cookie_trace {
 52         fscache_cookie_collision,
 53         fscache_cookie_discard,
 54         fscache_cookie_failed,
 55         fscache_cookie_get_attach_object,
 56         fscache_cookie_get_end_access,
 57         fscache_cookie_get_hash_collision,
 58         fscache_cookie_get_inval_work,
 59         fscache_cookie_get_lru,
 60         fscache_cookie_get_use_work,
 61         fscache_cookie_new_acquire,
 62         fscache_cookie_put_hash_collision,
 63         fscache_cookie_put_lru,
 64         fscache_cookie_put_object,
 65         fscache_cookie_put_over_queued,
 66         fscache_cookie_put_relinquish,
 67         fscache_cookie_put_withdrawn,
 68         fscache_cookie_put_work,
 69         fscache_cookie_see_active,
 70         fscache_cookie_see_lru_discard,
 71         fscache_cookie_see_lru_discard_clear,
 72         fscache_cookie_see_lru_do_one,
 73         fscache_cookie_see_relinquish,
 74         fscache_cookie_see_withdraw,
 75         fscache_cookie_see_work,
 76 };
 77 
 78 enum fscache_active_trace {
 79         fscache_active_use,
 80         fscache_active_use_modify,
 81         fscache_active_unuse,
 82 };
 83 
 84 enum fscache_access_trace {
 85         fscache_access_acquire_volume,
 86         fscache_access_acquire_volume_end,
 87         fscache_access_cache_pin,
 88         fscache_access_cache_unpin,
 89         fscache_access_invalidate_cookie,
 90         fscache_access_invalidate_cookie_end,
 91         fscache_access_io_end,
 92         fscache_access_io_not_live,
 93         fscache_access_io_read,
 94         fscache_access_io_resize,
 95         fscache_access_io_wait,
 96         fscache_access_io_write,
 97         fscache_access_lookup_cookie,
 98         fscache_access_lookup_cookie_end,
 99         fscache_access_lookup_cookie_end_failed,
100         fscache_access_relinquish_volume,
101         fscache_access_relinquish_volume_end,
102         fscache_access_unlive,
103 };
104 
105 #endif
106 
107 /*
108  * Declare tracing information enums and their string mappings for display.
109  */
110 #define fscache_cache_traces                                            \
111         EM(fscache_cache_collision,             "*COLLIDE*")            \
112         EM(fscache_cache_get_acquire,           "GET acq  ")            \
113         EM(fscache_cache_new_acquire,           "NEW acq  ")            \
114         EM(fscache_cache_put_alloc_volume,      "PUT alvol")            \
115         EM(fscache_cache_put_cache,             "PUT cache")            \
116         EM(fscache_cache_put_prep_failed,       "PUT pfail")            \
117         EM(fscache_cache_put_relinquish,        "PUT relnq")            \
118         E_(fscache_cache_put_volume,            "PUT vol  ")
119 
120 #define fscache_volume_traces                                           \
121         EM(fscache_volume_collision,            "*COLLIDE*")            \
122         EM(fscache_volume_get_cookie,           "GET cook ")            \
123         EM(fscache_volume_get_create_work,      "GET creat")            \
124         EM(fscache_volume_get_hash_collision,   "GET hcoll")            \
125         EM(fscache_volume_get_withdraw,         "GET withd")            \
126         EM(fscache_volume_free,                 "FREE     ")            \
127         EM(fscache_volume_new_acquire,          "NEW acq  ")            \
128         EM(fscache_volume_put_cookie,           "PUT cook ")            \
129         EM(fscache_volume_put_create_work,      "PUT creat")            \
130         EM(fscache_volume_put_hash_collision,   "PUT hcoll")            \
131         EM(fscache_volume_put_relinquish,       "PUT relnq")            \
132         EM(fscache_volume_put_withdraw,         "PUT withd")            \
133         EM(fscache_volume_see_create_work,      "SEE creat")            \
134         EM(fscache_volume_see_hash_wake,        "SEE hwake")            \
135         E_(fscache_volume_wait_create_work,     "WAIT crea")
136 
137 #define fscache_cookie_traces                                           \
138         EM(fscache_cookie_collision,            "*COLLIDE*")            \
139         EM(fscache_cookie_discard,              "DISCARD  ")            \
140         EM(fscache_cookie_failed,               "FAILED   ")            \
141         EM(fscache_cookie_get_attach_object,    "GET attch")            \
142         EM(fscache_cookie_get_hash_collision,   "GET hcoll")            \
143         EM(fscache_cookie_get_end_access,       "GQ  endac")            \
144         EM(fscache_cookie_get_inval_work,       "GQ  inval")            \
145         EM(fscache_cookie_get_lru,              "GET lru  ")            \
146         EM(fscache_cookie_get_use_work,         "GQ  use  ")            \
147         EM(fscache_cookie_new_acquire,          "NEW acq  ")            \
148         EM(fscache_cookie_put_hash_collision,   "PUT hcoll")            \
149         EM(fscache_cookie_put_lru,              "PUT lru  ")            \
150         EM(fscache_cookie_put_object,           "PUT obj  ")            \
151         EM(fscache_cookie_put_over_queued,      "PQ  overq")            \
152         EM(fscache_cookie_put_relinquish,       "PUT relnq")            \
153         EM(fscache_cookie_put_withdrawn,        "PUT wthdn")            \
154         EM(fscache_cookie_put_work,             "PQ  work ")            \
155         EM(fscache_cookie_see_active,           "-   activ")            \
156         EM(fscache_cookie_see_lru_discard,      "-   x-lru")            \
157         EM(fscache_cookie_see_lru_discard_clear,"-   lrudc")            \
158         EM(fscache_cookie_see_lru_do_one,       "-   lrudo")            \
159         EM(fscache_cookie_see_relinquish,       "-   x-rlq")            \
160         EM(fscache_cookie_see_withdraw,         "-   x-wth")            \
161         E_(fscache_cookie_see_work,             "-   work ")
162 
163 #define fscache_active_traces           \
164         EM(fscache_active_use,                  "USE          ")        \
165         EM(fscache_active_use_modify,           "USE-m        ")        \
166         E_(fscache_active_unuse,                "UNUSE        ")
167 
168 #define fscache_access_traces           \
169         EM(fscache_access_acquire_volume,       "BEGIN acq_vol")        \
170         EM(fscache_access_acquire_volume_end,   "END   acq_vol")        \
171         EM(fscache_access_cache_pin,            "PIN   cache  ")        \
172         EM(fscache_access_cache_unpin,          "UNPIN cache  ")        \
173         EM(fscache_access_invalidate_cookie,    "BEGIN inval  ")        \
174         EM(fscache_access_invalidate_cookie_end,"END   inval  ")        \
175         EM(fscache_access_io_end,               "END   io     ")        \
176         EM(fscache_access_io_not_live,          "END   io_notl")        \
177         EM(fscache_access_io_read,              "BEGIN io_read")        \
178         EM(fscache_access_io_resize,            "BEGIN io_resz")        \
179         EM(fscache_access_io_wait,              "WAIT  io     ")        \
180         EM(fscache_access_io_write,             "BEGIN io_writ")        \
181         EM(fscache_access_lookup_cookie,        "BEGIN lookup ")        \
182         EM(fscache_access_lookup_cookie_end,    "END   lookup ")        \
183         EM(fscache_access_lookup_cookie_end_failed,"END   lookupf")     \
184         EM(fscache_access_relinquish_volume,    "BEGIN rlq_vol")        \
185         EM(fscache_access_relinquish_volume_end,"END   rlq_vol")        \
186         E_(fscache_access_unlive,               "END   unlive ")
187 
188 /*
189  * Export enum symbols via userspace.
190  */
191 #undef EM
192 #undef E_
193 #define EM(a, b) TRACE_DEFINE_ENUM(a);
194 #define E_(a, b) TRACE_DEFINE_ENUM(a);
195 
196 fscache_cache_traces;
197 fscache_volume_traces;
198 fscache_cookie_traces;
199 fscache_access_traces;
200 
201 /*
202  * Now redefine the EM() and E_() macros to map the enums to the strings that
203  * will be printed in the output.
204  */
205 #undef EM
206 #undef E_
207 #define EM(a, b)        { a, b },
208 #define E_(a, b)        { a, b }
209 
210 
211 TRACE_EVENT(fscache_cache,
212             TP_PROTO(unsigned int cache_debug_id,
213                      int usage,
214                      enum fscache_cache_trace where),
215 
216             TP_ARGS(cache_debug_id, usage, where),
217 
218             TP_STRUCT__entry(
219                     __field(unsigned int,               cache           )
220                     __field(int,                        usage           )
221                     __field(enum fscache_cache_trace,   where           )
222                              ),
223 
224             TP_fast_assign(
225                     __entry->cache      = cache_debug_id;
226                     __entry->usage      = usage;
227                     __entry->where      = where;
228                            ),
229 
230             TP_printk("C=%08x %s r=%d",
231                       __entry->cache,
232                       __print_symbolic(__entry->where, fscache_cache_traces),
233                       __entry->usage)
234             );
235 
236 TRACE_EVENT(fscache_volume,
237             TP_PROTO(unsigned int volume_debug_id,
238                      int usage,
239                      enum fscache_volume_trace where),
240 
241             TP_ARGS(volume_debug_id, usage, where),
242 
243             TP_STRUCT__entry(
244                     __field(unsigned int,               volume          )
245                     __field(int,                        usage           )
246                     __field(enum fscache_volume_trace,  where           )
247                              ),
248 
249             TP_fast_assign(
250                     __entry->volume     = volume_debug_id;
251                     __entry->usage      = usage;
252                     __entry->where      = where;
253                            ),
254 
255             TP_printk("V=%08x %s u=%d",
256                       __entry->volume,
257                       __print_symbolic(__entry->where, fscache_volume_traces),
258                       __entry->usage)
259             );
260 
261 TRACE_EVENT(fscache_cookie,
262             TP_PROTO(unsigned int cookie_debug_id,
263                      int ref,
264                      enum fscache_cookie_trace where),
265 
266             TP_ARGS(cookie_debug_id, ref, where),
267 
268             TP_STRUCT__entry(
269                     __field(unsigned int,               cookie          )
270                     __field(int,                        ref             )
271                     __field(enum fscache_cookie_trace,  where           )
272                              ),
273 
274             TP_fast_assign(
275                     __entry->cookie     = cookie_debug_id;
276                     __entry->ref        = ref;
277                     __entry->where      = where;
278                            ),
279 
280             TP_printk("c=%08x %s r=%d",
281                       __entry->cookie,
282                       __print_symbolic(__entry->where, fscache_cookie_traces),
283                       __entry->ref)
284             );
285 
286 TRACE_EVENT(fscache_active,
287             TP_PROTO(unsigned int cookie_debug_id,
288                      int ref,
289                      int n_active,
290                      int n_accesses,
291                      enum fscache_active_trace why),
292 
293             TP_ARGS(cookie_debug_id, ref, n_active, n_accesses, why),
294 
295             TP_STRUCT__entry(
296                     __field(unsigned int,               cookie          )
297                     __field(int,                        ref             )
298                     __field(int,                        n_active        )
299                     __field(int,                        n_accesses      )
300                     __field(enum fscache_active_trace,  why             )
301                              ),
302 
303             TP_fast_assign(
304                     __entry->cookie     = cookie_debug_id;
305                     __entry->ref        = ref;
306                     __entry->n_active   = n_active;
307                     __entry->n_accesses = n_accesses;
308                     __entry->why        = why;
309                            ),
310 
311             TP_printk("c=%08x %s r=%d a=%d c=%d",
312                       __entry->cookie,
313                       __print_symbolic(__entry->why, fscache_active_traces),
314                       __entry->ref,
315                       __entry->n_accesses,
316                       __entry->n_active)
317             );
318 
319 TRACE_EVENT(fscache_access_cache,
320             TP_PROTO(unsigned int cache_debug_id,
321                      int ref,
322                      int n_accesses,
323                      enum fscache_access_trace why),
324 
325             TP_ARGS(cache_debug_id, ref, n_accesses, why),
326 
327             TP_STRUCT__entry(
328                     __field(unsigned int,               cache           )
329                     __field(int,                        ref             )
330                     __field(int,                        n_accesses      )
331                     __field(enum fscache_access_trace,  why             )
332                              ),
333 
334             TP_fast_assign(
335                     __entry->cache      = cache_debug_id;
336                     __entry->ref        = ref;
337                     __entry->n_accesses = n_accesses;
338                     __entry->why        = why;
339                            ),
340 
341             TP_printk("C=%08x %s r=%d a=%d",
342                       __entry->cache,
343                       __print_symbolic(__entry->why, fscache_access_traces),
344                       __entry->ref,
345                       __entry->n_accesses)
346             );
347 
348 TRACE_EVENT(fscache_access_volume,
349             TP_PROTO(unsigned int volume_debug_id,
350                      unsigned int cookie_debug_id,
351                      int ref,
352                      int n_accesses,
353                      enum fscache_access_trace why),
354 
355             TP_ARGS(volume_debug_id, cookie_debug_id, ref, n_accesses, why),
356 
357             TP_STRUCT__entry(
358                     __field(unsigned int,               volume          )
359                     __field(unsigned int,               cookie          )
360                     __field(int,                        ref             )
361                     __field(int,                        n_accesses      )
362                     __field(enum fscache_access_trace,  why             )
363                              ),
364 
365             TP_fast_assign(
366                     __entry->volume     = volume_debug_id;
367                     __entry->cookie     = cookie_debug_id;
368                     __entry->ref        = ref;
369                     __entry->n_accesses = n_accesses;
370                     __entry->why        = why;
371                            ),
372 
373             TP_printk("V=%08x c=%08x %s r=%d a=%d",
374                       __entry->volume,
375                       __entry->cookie,
376                       __print_symbolic(__entry->why, fscache_access_traces),
377                       __entry->ref,
378                       __entry->n_accesses)
379             );
380 
381 TRACE_EVENT(fscache_access,
382             TP_PROTO(unsigned int cookie_debug_id,
383                      int ref,
384                      int n_accesses,
385                      enum fscache_access_trace why),
386 
387             TP_ARGS(cookie_debug_id, ref, n_accesses, why),
388 
389             TP_STRUCT__entry(
390                     __field(unsigned int,               cookie          )
391                     __field(int,                        ref             )
392                     __field(int,                        n_accesses      )
393                     __field(enum fscache_access_trace,  why             )
394                              ),
395 
396             TP_fast_assign(
397                     __entry->cookie     = cookie_debug_id;
398                     __entry->ref        = ref;
399                     __entry->n_accesses = n_accesses;
400                     __entry->why        = why;
401                            ),
402 
403             TP_printk("c=%08x %s r=%d a=%d",
404                       __entry->cookie,
405                       __print_symbolic(__entry->why, fscache_access_traces),
406                       __entry->ref,
407                       __entry->n_accesses)
408             );
409 
410 TRACE_EVENT(fscache_acquire,
411             TP_PROTO(struct fscache_cookie *cookie),
412 
413             TP_ARGS(cookie),
414 
415             TP_STRUCT__entry(
416                     __field(unsigned int,               cookie          )
417                     __field(unsigned int,               volume          )
418                     __field(int,                        v_ref           )
419                     __field(int,                        v_n_cookies     )
420                              ),
421 
422             TP_fast_assign(
423                     __entry->cookie             = cookie->debug_id;
424                     __entry->volume             = cookie->volume->debug_id;
425                     __entry->v_ref              = refcount_read(&cookie->volume->ref);
426                     __entry->v_n_cookies        = atomic_read(&cookie->volume->n_cookies);
427                            ),
428 
429             TP_printk("c=%08x V=%08x vr=%d vc=%d",
430                       __entry->cookie,
431                       __entry->volume, __entry->v_ref, __entry->v_n_cookies)
432             );
433 
434 TRACE_EVENT(fscache_relinquish,
435             TP_PROTO(struct fscache_cookie *cookie, bool retire),
436 
437             TP_ARGS(cookie, retire),
438 
439             TP_STRUCT__entry(
440                     __field(unsigned int,               cookie          )
441                     __field(unsigned int,               volume          )
442                     __field(int,                        ref             )
443                     __field(int,                        n_active        )
444                     __field(u8,                         flags           )
445                     __field(bool,                       retire          )
446                              ),
447 
448             TP_fast_assign(
449                     __entry->cookie     = cookie->debug_id;
450                     __entry->volume     = cookie->volume->debug_id;
451                     __entry->ref        = refcount_read(&cookie->ref);
452                     __entry->n_active   = atomic_read(&cookie->n_active);
453                     __entry->flags      = cookie->flags;
454                     __entry->retire     = retire;
455                            ),
456 
457             TP_printk("c=%08x V=%08x r=%d U=%d f=%02x rt=%u",
458                       __entry->cookie, __entry->volume, __entry->ref,
459                       __entry->n_active, __entry->flags, __entry->retire)
460             );
461 
462 TRACE_EVENT(fscache_invalidate,
463             TP_PROTO(struct fscache_cookie *cookie, loff_t new_size),
464 
465             TP_ARGS(cookie, new_size),
466 
467             TP_STRUCT__entry(
468                     __field(unsigned int,               cookie          )
469                     __field(loff_t,                     new_size        )
470                              ),
471 
472             TP_fast_assign(
473                     __entry->cookie     = cookie->debug_id;
474                     __entry->new_size   = new_size;
475                            ),
476 
477             TP_printk("c=%08x sz=%llx",
478                       __entry->cookie, __entry->new_size)
479             );
480 
481 TRACE_EVENT(fscache_resize,
482             TP_PROTO(struct fscache_cookie *cookie, loff_t new_size),
483 
484             TP_ARGS(cookie, new_size),
485 
486             TP_STRUCT__entry(
487                     __field(unsigned int,               cookie          )
488                     __field(loff_t,                     old_size        )
489                     __field(loff_t,                     new_size        )
490                              ),
491 
492             TP_fast_assign(
493                     __entry->cookie     = cookie->debug_id;
494                     __entry->old_size   = cookie->object_size;
495                     __entry->new_size   = new_size;
496                            ),
497 
498             TP_printk("c=%08x os=%08llx sz=%08llx",
499                       __entry->cookie,
500                       __entry->old_size,
501                       __entry->new_size)
502             );
503 
504 #endif /* _TRACE_FSCACHE_H */
505 
506 /* This part must be outside protection */
507 #include <trace/define_trace.h>
508 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php