861 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/* CacheFiles tracepoints3 *4 * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved.5 * Written by David Howells (dhowells@redhat.com)6 */7#undef TRACE_SYSTEM8#define TRACE_SYSTEM cachefiles9 10#if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ)11#define _TRACE_CACHEFILES_H12 13#include <linux/tracepoint.h>14 15/*16 * Define enums for tracing information.17 */18#ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY19#define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY20 21enum 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 40enum 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 50enum 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 69enum cachefiles_trunc_trace {70 cachefiles_trunc_dio_adjust,71 cachefiles_trunc_expand_tmpfile,72 cachefiles_trunc_shrink,73};74 75enum 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 86enum 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#endif107 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 EM195#undef E_196#define EM(a, b) TRACE_DEFINE_ENUM(a);197#define E_(a, b) TRACE_DEFINE_ENUM(a);198 199cachefiles_obj_kill_traces;200cachefiles_obj_ref_traces;201cachefiles_coherency_traces;202cachefiles_trunc_traces;203cachefiles_prepare_read_traces;204cachefiles_error_traces;205 206/*207 * Now redefine the EM() and E_() macros to map the enums to the strings that208 * will be printed in the output.209 */210#undef EM211#undef E_212#define EM(a, b) { a, b },213#define E_(a, b) { a, b }214 215 216TRACE_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 244TRACE_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 270TRACE_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 290TRACE_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 310TRACE_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 330TRACE_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 355TRACE_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 380TRACE_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 410TRACE_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 436TRACE_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 478TRACE_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 507TRACE_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 536TRACE_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 566TRACE_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 587TRACE_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 608TRACE_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 629TRACE_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 656TRACE_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 683TRACE_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 713TRACE_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 737TRACE_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 760TRACE_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 790TRACE_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 810TRACE_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 837TRACE_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