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

TOMOYO Linux Cross Reference
Linux/include/trace/events/cachefiles.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 /* CacheFiles 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 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_get_ioreq,
 23         cachefiles_obj_new,
 24         cachefiles_obj_put_alloc_fail,
 25         cachefiles_obj_put_detach,
 26         cachefiles_obj_put_ioreq,
 27         cachefiles_obj_see_clean_commit,
 28         cachefiles_obj_see_clean_delete,
 29         cachefiles_obj_see_clean_drop_tmp,
 30         cachefiles_obj_see_lookup_cookie,
 31         cachefiles_obj_see_lookup_failed,
 32         cachefiles_obj_see_withdraw_cookie,
 33         cachefiles_obj_see_withdrawal,
 34         cachefiles_obj_get_ondemand_fd,
 35         cachefiles_obj_put_ondemand_fd,
 36         cachefiles_obj_get_read_req,
 37         cachefiles_obj_put_read_req,
 38 };
 39 
 40 enum fscache_why_object_killed {
 41         FSCACHE_OBJECT_IS_STALE,
 42         FSCACHE_OBJECT_IS_WEIRD,
 43         FSCACHE_OBJECT_INVALIDATED,
 44         FSCACHE_OBJECT_NO_SPACE,
 45         FSCACHE_OBJECT_WAS_RETIRED,
 46         FSCACHE_OBJECT_WAS_CULLED,
 47         FSCACHE_VOLUME_IS_WEIRD,
 48 };
 49 
 50 enum cachefiles_coherency_trace {
 51         cachefiles_coherency_check_aux,
 52         cachefiles_coherency_check_content,
 53         cachefiles_coherency_check_dirty,
 54         cachefiles_coherency_check_len,
 55         cachefiles_coherency_check_objsize,
 56         cachefiles_coherency_check_ok,
 57         cachefiles_coherency_check_type,
 58         cachefiles_coherency_check_xattr,
 59         cachefiles_coherency_set_fail,
 60         cachefiles_coherency_set_ok,
 61         cachefiles_coherency_vol_check_cmp,
 62         cachefiles_coherency_vol_check_ok,
 63         cachefiles_coherency_vol_check_resv,
 64         cachefiles_coherency_vol_check_xattr,
 65         cachefiles_coherency_vol_set_fail,
 66         cachefiles_coherency_vol_set_ok,
 67 };
 68 
 69 enum cachefiles_trunc_trace {
 70         cachefiles_trunc_dio_adjust,
 71         cachefiles_trunc_expand_tmpfile,
 72         cachefiles_trunc_shrink,
 73 };
 74 
 75 enum cachefiles_prepare_read_trace {
 76         cachefiles_trace_read_after_eof,
 77         cachefiles_trace_read_found_hole,
 78         cachefiles_trace_read_found_part,
 79         cachefiles_trace_read_have_data,
 80         cachefiles_trace_read_no_data,
 81         cachefiles_trace_read_no_file,
 82         cachefiles_trace_read_seek_error,
 83         cachefiles_trace_read_seek_nxio,
 84 };
 85 
 86 enum cachefiles_error_trace {
 87         cachefiles_trace_fallocate_error,
 88         cachefiles_trace_getxattr_error,
 89         cachefiles_trace_link_error,
 90         cachefiles_trace_lookup_error,
 91         cachefiles_trace_mkdir_error,
 92         cachefiles_trace_notify_change_error,
 93         cachefiles_trace_open_error,
 94         cachefiles_trace_read_error,
 95         cachefiles_trace_remxattr_error,
 96         cachefiles_trace_rename_error,
 97         cachefiles_trace_seek_error,
 98         cachefiles_trace_setxattr_error,
 99         cachefiles_trace_statfs_error,
100         cachefiles_trace_tmpfile_error,
101         cachefiles_trace_trunc_error,
102         cachefiles_trace_unlink_error,
103         cachefiles_trace_write_error,
104 };
105 
106 #endif
107 
108 /*
109  * Define enum -> string mappings for display.
110  */
111 #define cachefiles_obj_kill_traces                              \
112         EM(FSCACHE_OBJECT_IS_STALE,     "stale")                \
113         EM(FSCACHE_OBJECT_IS_WEIRD,     "weird")                \
114         EM(FSCACHE_OBJECT_INVALIDATED,  "inval")                \
115         EM(FSCACHE_OBJECT_NO_SPACE,     "no_space")             \
116         EM(FSCACHE_OBJECT_WAS_RETIRED,  "was_retired")          \
117         EM(FSCACHE_OBJECT_WAS_CULLED,   "was_culled")           \
118         E_(FSCACHE_VOLUME_IS_WEIRD,     "volume_weird")
119 
120 #define cachefiles_obj_ref_traces                                       \
121         EM(cachefiles_obj_get_ioreq,            "GET ioreq")            \
122         EM(cachefiles_obj_new,                  "NEW obj")              \
123         EM(cachefiles_obj_put_alloc_fail,       "PUT alloc_fail")       \
124         EM(cachefiles_obj_put_detach,           "PUT detach")           \
125         EM(cachefiles_obj_put_ioreq,            "PUT ioreq")            \
126         EM(cachefiles_obj_see_clean_commit,     "SEE clean_commit")     \
127         EM(cachefiles_obj_see_clean_delete,     "SEE clean_delete")     \
128         EM(cachefiles_obj_see_clean_drop_tmp,   "SEE clean_drop_tmp")   \
129         EM(cachefiles_obj_see_lookup_cookie,    "SEE lookup_cookie")    \
130         EM(cachefiles_obj_see_lookup_failed,    "SEE lookup_failed")    \
131         EM(cachefiles_obj_see_withdraw_cookie,  "SEE withdraw_cookie")  \
132         EM(cachefiles_obj_see_withdrawal,       "SEE withdrawal")       \
133         EM(cachefiles_obj_get_ondemand_fd,      "GET ondemand_fd")      \
134         EM(cachefiles_obj_put_ondemand_fd,      "PUT ondemand_fd")      \
135         EM(cachefiles_obj_get_read_req,         "GET read_req")         \
136         E_(cachefiles_obj_put_read_req,         "PUT read_req")
137 
138 #define cachefiles_coherency_traces                                     \
139         EM(cachefiles_coherency_check_aux,      "BAD aux ")             \
140         EM(cachefiles_coherency_check_content,  "BAD cont")             \
141         EM(cachefiles_coherency_check_dirty,    "BAD dirt")             \
142         EM(cachefiles_coherency_check_len,      "BAD len ")             \
143         EM(cachefiles_coherency_check_objsize,  "BAD osiz")             \
144         EM(cachefiles_coherency_check_ok,       "OK      ")             \
145         EM(cachefiles_coherency_check_type,     "BAD type")             \
146         EM(cachefiles_coherency_check_xattr,    "BAD xatt")             \
147         EM(cachefiles_coherency_set_fail,       "SET fail")             \
148         EM(cachefiles_coherency_set_ok,         "SET ok  ")             \
149         EM(cachefiles_coherency_vol_check_cmp,  "VOL BAD cmp ")         \
150         EM(cachefiles_coherency_vol_check_ok,   "VOL OK      ")         \
151         EM(cachefiles_coherency_vol_check_resv, "VOL BAD resv") \
152         EM(cachefiles_coherency_vol_check_xattr,"VOL BAD xatt")         \
153         EM(cachefiles_coherency_vol_set_fail,   "VOL SET fail")         \
154         E_(cachefiles_coherency_vol_set_ok,     "VOL SET ok  ")
155 
156 #define cachefiles_trunc_traces                                         \
157         EM(cachefiles_trunc_dio_adjust,         "DIOADJ")               \
158         EM(cachefiles_trunc_expand_tmpfile,     "EXPTMP")               \
159         E_(cachefiles_trunc_shrink,             "SHRINK")
160 
161 #define cachefiles_prepare_read_traces                                  \
162         EM(cachefiles_trace_read_after_eof,     "after-eof ")           \
163         EM(cachefiles_trace_read_found_hole,    "found-hole")           \
164         EM(cachefiles_trace_read_found_part,    "found-part")           \
165         EM(cachefiles_trace_read_have_data,     "have-data ")           \
166         EM(cachefiles_trace_read_no_data,       "no-data   ")           \
167         EM(cachefiles_trace_read_no_file,       "no-file   ")           \
168         EM(cachefiles_trace_read_seek_error,    "seek-error")           \
169         E_(cachefiles_trace_read_seek_nxio,     "seek-enxio")
170 
171 #define cachefiles_error_traces                                         \
172         EM(cachefiles_trace_fallocate_error,    "fallocate")            \
173         EM(cachefiles_trace_getxattr_error,     "getxattr")             \
174         EM(cachefiles_trace_link_error,         "link")                 \
175         EM(cachefiles_trace_lookup_error,       "lookup")               \
176         EM(cachefiles_trace_mkdir_error,        "mkdir")                \
177         EM(cachefiles_trace_notify_change_error, "notify_change")       \
178         EM(cachefiles_trace_open_error,         "open")                 \
179         EM(cachefiles_trace_read_error,         "read")                 \
180         EM(cachefiles_trace_remxattr_error,     "remxattr")             \
181         EM(cachefiles_trace_rename_error,       "rename")               \
182         EM(cachefiles_trace_seek_error,         "seek")                 \
183         EM(cachefiles_trace_setxattr_error,     "setxattr")             \
184         EM(cachefiles_trace_statfs_error,       "statfs")               \
185         EM(cachefiles_trace_tmpfile_error,      "tmpfile")              \
186         EM(cachefiles_trace_trunc_error,        "trunc")                \
187         EM(cachefiles_trace_unlink_error,       "unlink")               \
188         E_(cachefiles_trace_write_error,        "write")
189 
190 
191 /*
192  * Export enum symbols via userspace.
193  */
194 #undef EM
195 #undef E_
196 #define EM(a, b) TRACE_DEFINE_ENUM(a);
197 #define E_(a, b) TRACE_DEFINE_ENUM(a);
198 
199 cachefiles_obj_kill_traces;
200 cachefiles_obj_ref_traces;
201 cachefiles_coherency_traces;
202 cachefiles_trunc_traces;
203 cachefiles_prepare_read_traces;
204 cachefiles_error_traces;
205 
206 /*
207  * Now redefine the EM() and E_() macros to map the enums to the strings that
208  * will be printed in the output.
209  */
210 #undef EM
211 #undef E_
212 #define EM(a, b)        { a, b },
213 #define E_(a, b)        { a, b }
214 
215 
216 TRACE_EVENT(cachefiles_ref,
217             TP_PROTO(unsigned int object_debug_id,
218                      unsigned int cookie_debug_id,
219                      int usage,
220                      enum cachefiles_obj_ref_trace why),
221 
222             TP_ARGS(object_debug_id, cookie_debug_id, usage, why),
223 
224             /* Note that obj may be NULL */
225             TP_STRUCT__entry(
226                     __field(unsigned int,                       obj             )
227                     __field(unsigned int,                       cookie          )
228                     __field(enum cachefiles_obj_ref_trace,      why             )
229                     __field(int,                                usage           )
230                              ),
231 
232             TP_fast_assign(
233                     __entry->obj        = object_debug_id;
234                     __entry->cookie     = cookie_debug_id;
235                     __entry->usage      = usage;
236                     __entry->why        = why;
237                            ),
238 
239             TP_printk("c=%08x o=%08x u=%d %s",
240                       __entry->cookie, __entry->obj, __entry->usage,
241                       __print_symbolic(__entry->why, cachefiles_obj_ref_traces))
242             );
243 
244 TRACE_EVENT(cachefiles_lookup,
245             TP_PROTO(struct cachefiles_object *obj,
246                      struct dentry *dir,
247                      struct dentry *de),
248 
249             TP_ARGS(obj, dir, de),
250 
251             TP_STRUCT__entry(
252                     __field(unsigned int,               obj     )
253                     __field(short,                      error   )
254                     __field(unsigned long,              dino    )
255                     __field(unsigned long,              ino     )
256                              ),
257 
258             TP_fast_assign(
259                     __entry->obj        = obj ? obj->debug_id : 0;
260                     __entry->dino       = d_backing_inode(dir)->i_ino;
261                     __entry->ino        = (!IS_ERR(de) && d_backing_inode(de) ?
262                                            d_backing_inode(de)->i_ino : 0);
263                     __entry->error      = IS_ERR(de) ? PTR_ERR(de) : 0;
264                            ),
265 
266             TP_printk("o=%08x dB=%lx B=%lx e=%d",
267                       __entry->obj, __entry->dino, __entry->ino, __entry->error)
268             );
269 
270 TRACE_EVENT(cachefiles_mkdir,
271             TP_PROTO(struct dentry *dir, struct dentry *subdir),
272 
273             TP_ARGS(dir, subdir),
274 
275             TP_STRUCT__entry(
276                     __field(unsigned int,                       dir     )
277                     __field(unsigned int,                       subdir  )
278                              ),
279 
280             TP_fast_assign(
281                     __entry->dir        = d_backing_inode(dir)->i_ino;
282                     __entry->subdir     = d_backing_inode(subdir)->i_ino;
283                            ),
284 
285             TP_printk("dB=%x sB=%x",
286                       __entry->dir,
287                       __entry->subdir)
288             );
289 
290 TRACE_EVENT(cachefiles_tmpfile,
291             TP_PROTO(struct cachefiles_object *obj, struct inode *backer),
292 
293             TP_ARGS(obj, backer),
294 
295             TP_STRUCT__entry(
296                     __field(unsigned int,                       obj     )
297                     __field(unsigned int,                       backer  )
298                              ),
299 
300             TP_fast_assign(
301                     __entry->obj        = obj->debug_id;
302                     __entry->backer     = backer->i_ino;
303                            ),
304 
305             TP_printk("o=%08x B=%x",
306                       __entry->obj,
307                       __entry->backer)
308             );
309 
310 TRACE_EVENT(cachefiles_link,
311             TP_PROTO(struct cachefiles_object *obj, struct inode *backer),
312 
313             TP_ARGS(obj, backer),
314 
315             TP_STRUCT__entry(
316                     __field(unsigned int,                       obj     )
317                     __field(unsigned int,                       backer  )
318                              ),
319 
320             TP_fast_assign(
321                     __entry->obj        = obj->debug_id;
322                     __entry->backer     = backer->i_ino;
323                            ),
324 
325             TP_printk("o=%08x B=%x",
326                       __entry->obj,
327                       __entry->backer)
328             );
329 
330 TRACE_EVENT(cachefiles_unlink,
331             TP_PROTO(struct cachefiles_object *obj,
332                      ino_t ino,
333                      enum fscache_why_object_killed why),
334 
335             TP_ARGS(obj, ino, why),
336 
337             /* Note that obj may be NULL */
338             TP_STRUCT__entry(
339                     __field(unsigned int,               obj             )
340                     __field(unsigned int,               ino             )
341                     __field(enum fscache_why_object_killed, why         )
342                              ),
343 
344             TP_fast_assign(
345                     __entry->obj        = obj ? obj->debug_id : UINT_MAX;
346                     __entry->ino        = ino;
347                     __entry->why        = why;
348                            ),
349 
350             TP_printk("o=%08x B=%x w=%s",
351                       __entry->obj, __entry->ino,
352                       __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
353             );
354 
355 TRACE_EVENT(cachefiles_rename,
356             TP_PROTO(struct cachefiles_object *obj,
357                      ino_t ino,
358                      enum fscache_why_object_killed why),
359 
360             TP_ARGS(obj, ino, why),
361 
362             /* Note that obj may be NULL */
363             TP_STRUCT__entry(
364                     __field(unsigned int,               obj             )
365                     __field(unsigned int,               ino             )
366                     __field(enum fscache_why_object_killed, why         )
367                              ),
368 
369             TP_fast_assign(
370                     __entry->obj        = obj ? obj->debug_id : UINT_MAX;
371                     __entry->ino        = ino;
372                     __entry->why        = why;
373                            ),
374 
375             TP_printk("o=%08x B=%x w=%s",
376                       __entry->obj, __entry->ino,
377                       __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
378             );
379 
380 TRACE_EVENT(cachefiles_coherency,
381             TP_PROTO(struct cachefiles_object *obj,
382                      ino_t ino,
383                      enum cachefiles_content content,
384                      enum cachefiles_coherency_trace why),
385 
386             TP_ARGS(obj, ino, content, why),
387 
388             /* Note that obj may be NULL */
389             TP_STRUCT__entry(
390                     __field(unsigned int,                       obj     )
391                     __field(enum cachefiles_coherency_trace,    why     )
392                     __field(enum cachefiles_content,            content )
393                     __field(u64,                                ino     )
394                              ),
395 
396             TP_fast_assign(
397                     __entry->obj        = obj->debug_id;
398                     __entry->why        = why;
399                     __entry->content    = content;
400                     __entry->ino        = ino;
401                            ),
402 
403             TP_printk("o=%08x %s B=%llx c=%u",
404                       __entry->obj,
405                       __print_symbolic(__entry->why, cachefiles_coherency_traces),
406                       __entry->ino,
407                       __entry->content)
408             );
409 
410 TRACE_EVENT(cachefiles_vol_coherency,
411             TP_PROTO(struct cachefiles_volume *volume,
412                      ino_t ino,
413                      enum cachefiles_coherency_trace why),
414 
415             TP_ARGS(volume, ino, why),
416 
417             /* Note that obj may be NULL */
418             TP_STRUCT__entry(
419                     __field(unsigned int,                       vol     )
420                     __field(enum cachefiles_coherency_trace,    why     )
421                     __field(u64,                                ino     )
422                              ),
423 
424             TP_fast_assign(
425                     __entry->vol        = volume->vcookie->debug_id;
426                     __entry->why        = why;
427                     __entry->ino        = ino;
428                            ),
429 
430             TP_printk("V=%08x %s B=%llx",
431                       __entry->vol,
432                       __print_symbolic(__entry->why, cachefiles_coherency_traces),
433                       __entry->ino)
434             );
435 
436 TRACE_EVENT(cachefiles_prep_read,
437             TP_PROTO(struct cachefiles_object *obj,
438                      loff_t start,
439                      size_t len,
440                      unsigned short flags,
441                      enum netfs_io_source source,
442                      enum cachefiles_prepare_read_trace why,
443                      ino_t cache_inode, ino_t netfs_inode),
444 
445             TP_ARGS(obj, start, len, flags, source, why, cache_inode, netfs_inode),
446 
447             TP_STRUCT__entry(
448                     __field(unsigned int,               obj             )
449                     __field(unsigned short,             flags           )
450                     __field(enum netfs_io_source,       source          )
451                     __field(enum cachefiles_prepare_read_trace, why     )
452                     __field(size_t,                     len             )
453                     __field(loff_t,                     start           )
454                     __field(unsigned int,               netfs_inode     )
455                     __field(unsigned int,               cache_inode     )
456                              ),
457 
458             TP_fast_assign(
459                     __entry->obj        = obj ? obj->debug_id : 0;
460                     __entry->flags      = flags;
461                     __entry->source     = source;
462                     __entry->why        = why;
463                     __entry->len        = len;
464                     __entry->start      = start;
465                     __entry->netfs_inode = netfs_inode;
466                     __entry->cache_inode = cache_inode;
467                            ),
468 
469             TP_printk("o=%08x %s %s f=%02x s=%llx %zx ni=%x B=%x",
470                       __entry->obj,
471                       __print_symbolic(__entry->source, netfs_sreq_sources),
472                       __print_symbolic(__entry->why, cachefiles_prepare_read_traces),
473                       __entry->flags,
474                       __entry->start, __entry->len,
475                       __entry->netfs_inode, __entry->cache_inode)
476             );
477 
478 TRACE_EVENT(cachefiles_read,
479             TP_PROTO(struct cachefiles_object *obj,
480                      struct inode *backer,
481                      loff_t start,
482                      size_t len),
483 
484             TP_ARGS(obj, backer, start, len),
485 
486             TP_STRUCT__entry(
487                     __field(unsigned int,                       obj     )
488                     __field(unsigned int,                       backer  )
489                     __field(size_t,                             len     )
490                     __field(loff_t,                             start   )
491                              ),
492 
493             TP_fast_assign(
494                     __entry->obj        = obj->debug_id;
495                     __entry->backer     = backer->i_ino;
496                     __entry->start      = start;
497                     __entry->len        = len;
498                            ),
499 
500             TP_printk("o=%08x B=%x s=%llx l=%zx",
501                       __entry->obj,
502                       __entry->backer,
503                       __entry->start,
504                       __entry->len)
505             );
506 
507 TRACE_EVENT(cachefiles_write,
508             TP_PROTO(struct cachefiles_object *obj,
509                      struct inode *backer,
510                      loff_t start,
511                      size_t len),
512 
513             TP_ARGS(obj, backer, start, len),
514 
515             TP_STRUCT__entry(
516                     __field(unsigned int,                       obj     )
517                     __field(unsigned int,                       backer  )
518                     __field(size_t,                             len     )
519                     __field(loff_t,                             start   )
520                              ),
521 
522             TP_fast_assign(
523                     __entry->obj        = obj->debug_id;
524                     __entry->backer     = backer->i_ino;
525                     __entry->start      = start;
526                     __entry->len        = len;
527                            ),
528 
529             TP_printk("o=%08x B=%x s=%llx l=%zx",
530                       __entry->obj,
531                       __entry->backer,
532                       __entry->start,
533                       __entry->len)
534             );
535 
536 TRACE_EVENT(cachefiles_trunc,
537             TP_PROTO(struct cachefiles_object *obj, struct inode *backer,
538                      loff_t from, loff_t to, enum cachefiles_trunc_trace why),
539 
540             TP_ARGS(obj, backer, from, to, why),
541 
542             TP_STRUCT__entry(
543                     __field(unsigned int,                       obj     )
544                     __field(unsigned int,                       backer  )
545                     __field(enum cachefiles_trunc_trace,        why     )
546                     __field(loff_t,                             from    )
547                     __field(loff_t,                             to      )
548                              ),
549 
550             TP_fast_assign(
551                     __entry->obj        = obj->debug_id;
552                     __entry->backer     = backer->i_ino;
553                     __entry->from       = from;
554                     __entry->to         = to;
555                     __entry->why        = why;
556                            ),
557 
558             TP_printk("o=%08x B=%x %s l=%llx->%llx",
559                       __entry->obj,
560                       __entry->backer,
561                       __print_symbolic(__entry->why, cachefiles_trunc_traces),
562                       __entry->from,
563                       __entry->to)
564             );
565 
566 TRACE_EVENT(cachefiles_mark_active,
567             TP_PROTO(struct cachefiles_object *obj,
568                      struct inode *inode),
569 
570             TP_ARGS(obj, inode),
571 
572             /* Note that obj may be NULL */
573             TP_STRUCT__entry(
574                     __field(unsigned int,               obj             )
575                     __field(ino_t,                      inode           )
576                              ),
577 
578             TP_fast_assign(
579                     __entry->obj        = obj ? obj->debug_id : 0;
580                     __entry->inode      = inode->i_ino;
581                            ),
582 
583             TP_printk("o=%08x B=%lx",
584                       __entry->obj, __entry->inode)
585             );
586 
587 TRACE_EVENT(cachefiles_mark_failed,
588             TP_PROTO(struct cachefiles_object *obj,
589                      struct inode *inode),
590 
591             TP_ARGS(obj, inode),
592 
593             /* Note that obj may be NULL */
594             TP_STRUCT__entry(
595                     __field(unsigned int,               obj             )
596                     __field(ino_t,                      inode           )
597                              ),
598 
599             TP_fast_assign(
600                     __entry->obj        = obj ? obj->debug_id : 0;
601                     __entry->inode      = inode->i_ino;
602                            ),
603 
604             TP_printk("o=%08x B=%lx",
605                       __entry->obj, __entry->inode)
606             );
607 
608 TRACE_EVENT(cachefiles_mark_inactive,
609             TP_PROTO(struct cachefiles_object *obj,
610                      struct inode *inode),
611 
612             TP_ARGS(obj, inode),
613 
614             /* Note that obj may be NULL */
615             TP_STRUCT__entry(
616                     __field(unsigned int,               obj             )
617                     __field(ino_t,                      inode           )
618                              ),
619 
620             TP_fast_assign(
621                     __entry->obj        = obj ? obj->debug_id : 0;
622                     __entry->inode      = inode->i_ino;
623                            ),
624 
625             TP_printk("o=%08x B=%lx",
626                       __entry->obj, __entry->inode)
627             );
628 
629 TRACE_EVENT(cachefiles_vfs_error,
630             TP_PROTO(struct cachefiles_object *obj, struct inode *backer,
631                      int error, enum cachefiles_error_trace where),
632 
633             TP_ARGS(obj, backer, error, where),
634 
635             TP_STRUCT__entry(
636                     __field(unsigned int,                       obj     )
637                     __field(unsigned int,                       backer  )
638                     __field(enum cachefiles_error_trace,        where   )
639                     __field(short,                              error   )
640                              ),
641 
642             TP_fast_assign(
643                     __entry->obj        = obj ? obj->debug_id : 0;
644                     __entry->backer     = backer->i_ino;
645                     __entry->error      = error;
646                     __entry->where      = where;
647                            ),
648 
649             TP_printk("o=%08x B=%x %s e=%d",
650                       __entry->obj,
651                       __entry->backer,
652                       __print_symbolic(__entry->where, cachefiles_error_traces),
653                       __entry->error)
654             );
655 
656 TRACE_EVENT(cachefiles_io_error,
657             TP_PROTO(struct cachefiles_object *obj, struct inode *backer,
658                      int error, enum cachefiles_error_trace where),
659 
660             TP_ARGS(obj, backer, error, where),
661 
662             TP_STRUCT__entry(
663                     __field(unsigned int,                       obj     )
664                     __field(unsigned int,                       backer  )
665                     __field(enum cachefiles_error_trace,        where   )
666                     __field(short,                              error   )
667                              ),
668 
669             TP_fast_assign(
670                     __entry->obj        = obj ? obj->debug_id : 0;
671                     __entry->backer     = backer->i_ino;
672                     __entry->error      = error;
673                     __entry->where      = where;
674                            ),
675 
676             TP_printk("o=%08x B=%x %s e=%d",
677                       __entry->obj,
678                       __entry->backer,
679                       __print_symbolic(__entry->where, cachefiles_error_traces),
680                       __entry->error)
681             );
682 
683 TRACE_EVENT(cachefiles_ondemand_open,
684             TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg,
685                      struct cachefiles_open *load),
686 
687             TP_ARGS(obj, msg, load),
688 
689             TP_STRUCT__entry(
690                     __field(unsigned int,       obj             )
691                     __field(unsigned int,       msg_id          )
692                     __field(unsigned int,       object_id       )
693                     __field(unsigned int,       fd              )
694                     __field(unsigned int,       flags           )
695                              ),
696 
697             TP_fast_assign(
698                     __entry->obj        = obj ? obj->debug_id : 0;
699                     __entry->msg_id     = msg->msg_id;
700                     __entry->object_id  = msg->object_id;
701                     __entry->fd         = load->fd;
702                     __entry->flags      = load->flags;
703                            ),
704 
705             TP_printk("o=%08x mid=%x oid=%x fd=%d f=%x",
706                       __entry->obj,
707                       __entry->msg_id,
708                       __entry->object_id,
709                       __entry->fd,
710                       __entry->flags)
711             );
712 
713 TRACE_EVENT(cachefiles_ondemand_copen,
714             TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id,
715                      long len),
716 
717             TP_ARGS(obj, msg_id, len),
718 
719             TP_STRUCT__entry(
720                     __field(unsigned int,       obj     )
721                     __field(unsigned int,       msg_id  )
722                     __field(long,               len     )
723                              ),
724 
725             TP_fast_assign(
726                     __entry->obj        = obj ? obj->debug_id : 0;
727                     __entry->msg_id     = msg_id;
728                     __entry->len        = len;
729                            ),
730 
731             TP_printk("o=%08x mid=%x l=%lx",
732                       __entry->obj,
733                       __entry->msg_id,
734                       __entry->len)
735             );
736 
737 TRACE_EVENT(cachefiles_ondemand_close,
738             TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg),
739 
740             TP_ARGS(obj, msg),
741 
742             TP_STRUCT__entry(
743                     __field(unsigned int,       obj             )
744                     __field(unsigned int,       msg_id          )
745                     __field(unsigned int,       object_id       )
746                              ),
747 
748             TP_fast_assign(
749                     __entry->obj        = obj ? obj->debug_id : 0;
750                     __entry->msg_id     = msg->msg_id;
751                     __entry->object_id  = msg->object_id;
752                            ),
753 
754             TP_printk("o=%08x mid=%x oid=%x",
755                       __entry->obj,
756                       __entry->msg_id,
757                       __entry->object_id)
758             );
759 
760 TRACE_EVENT(cachefiles_ondemand_read,
761             TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg,
762                      struct cachefiles_read *load),
763 
764             TP_ARGS(obj, msg, load),
765 
766             TP_STRUCT__entry(
767                     __field(unsigned int,       obj             )
768                     __field(unsigned int,       msg_id          )
769                     __field(unsigned int,       object_id       )
770                     __field(loff_t,             start           )
771                     __field(size_t,             len             )
772                              ),
773 
774             TP_fast_assign(
775                     __entry->obj        = obj ? obj->debug_id : 0;
776                     __entry->msg_id     = msg->msg_id;
777                     __entry->object_id  = msg->object_id;
778                     __entry->start      = load->off;
779                     __entry->len        = load->len;
780                            ),
781 
782             TP_printk("o=%08x mid=%x oid=%x s=%llx l=%zx",
783                       __entry->obj,
784                       __entry->msg_id,
785                       __entry->object_id,
786                       __entry->start,
787                       __entry->len)
788             );
789 
790 TRACE_EVENT(cachefiles_ondemand_cread,
791             TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id),
792 
793             TP_ARGS(obj, msg_id),
794 
795             TP_STRUCT__entry(
796                     __field(unsigned int,       obj     )
797                     __field(unsigned int,       msg_id  )
798                              ),
799 
800             TP_fast_assign(
801                     __entry->obj        = obj ? obj->debug_id : 0;
802                     __entry->msg_id     = msg_id;
803                            ),
804 
805             TP_printk("o=%08x mid=%x",
806                       __entry->obj,
807                       __entry->msg_id)
808             );
809 
810 TRACE_EVENT(cachefiles_ondemand_fd_write,
811             TP_PROTO(struct cachefiles_object *obj, struct inode *backer,
812                      loff_t start, size_t len),
813 
814             TP_ARGS(obj, backer, start, len),
815 
816             TP_STRUCT__entry(
817                     __field(unsigned int,       obj     )
818                     __field(unsigned int,       backer  )
819                     __field(loff_t,             start   )
820                     __field(size_t,             len     )
821                              ),
822 
823             TP_fast_assign(
824                     __entry->obj        = obj ? obj->debug_id : 0;
825                     __entry->backer     = backer->i_ino;
826                     __entry->start      = start;
827                     __entry->len        = len;
828                            ),
829 
830             TP_printk("o=%08x iB=%x s=%llx l=%zx",
831                       __entry->obj,
832                       __entry->backer,
833                       __entry->start,
834                       __entry->len)
835             );
836 
837 TRACE_EVENT(cachefiles_ondemand_fd_release,
838             TP_PROTO(struct cachefiles_object *obj, int object_id),
839 
840             TP_ARGS(obj, object_id),
841 
842             TP_STRUCT__entry(
843                     __field(unsigned int,       obj             )
844                     __field(unsigned int,       object_id       )
845                              ),
846 
847             TP_fast_assign(
848                     __entry->obj        = obj ? obj->debug_id : 0;
849                     __entry->object_id  = object_id;
850                            ),
851 
852             TP_printk("o=%08x oid=%x",
853                       __entry->obj,
854                       __entry->object_id)
855             );
856 
857 #endif /* _TRACE_CACHEFILES_H */
858 
859 /* This part must be outside protection */
860 #include <trace/define_trace.h>
861 

~ [ 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