162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* CacheFiles tracepoints 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. 562306a36Sopenharmony_ci * Written by David Howells (dhowells@redhat.com) 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci#undef TRACE_SYSTEM 862306a36Sopenharmony_ci#define TRACE_SYSTEM cachefiles 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ) 1162306a36Sopenharmony_ci#define _TRACE_CACHEFILES_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/tracepoint.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* 1662306a36Sopenharmony_ci * Define enums for tracing information. 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_ci#ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY 1962306a36Sopenharmony_ci#define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cienum cachefiles_obj_ref_trace { 2262306a36Sopenharmony_ci cachefiles_obj_get_ioreq, 2362306a36Sopenharmony_ci cachefiles_obj_new, 2462306a36Sopenharmony_ci cachefiles_obj_put_alloc_fail, 2562306a36Sopenharmony_ci cachefiles_obj_put_detach, 2662306a36Sopenharmony_ci cachefiles_obj_put_ioreq, 2762306a36Sopenharmony_ci cachefiles_obj_see_clean_commit, 2862306a36Sopenharmony_ci cachefiles_obj_see_clean_delete, 2962306a36Sopenharmony_ci cachefiles_obj_see_clean_drop_tmp, 3062306a36Sopenharmony_ci cachefiles_obj_see_lookup_cookie, 3162306a36Sopenharmony_ci cachefiles_obj_see_lookup_failed, 3262306a36Sopenharmony_ci cachefiles_obj_see_withdraw_cookie, 3362306a36Sopenharmony_ci cachefiles_obj_see_withdrawal, 3462306a36Sopenharmony_ci cachefiles_obj_get_ondemand_fd, 3562306a36Sopenharmony_ci cachefiles_obj_put_ondemand_fd, 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cienum fscache_why_object_killed { 3962306a36Sopenharmony_ci FSCACHE_OBJECT_IS_STALE, 4062306a36Sopenharmony_ci FSCACHE_OBJECT_IS_WEIRD, 4162306a36Sopenharmony_ci FSCACHE_OBJECT_INVALIDATED, 4262306a36Sopenharmony_ci FSCACHE_OBJECT_NO_SPACE, 4362306a36Sopenharmony_ci FSCACHE_OBJECT_WAS_RETIRED, 4462306a36Sopenharmony_ci FSCACHE_OBJECT_WAS_CULLED, 4562306a36Sopenharmony_ci FSCACHE_VOLUME_IS_WEIRD, 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cienum cachefiles_coherency_trace { 4962306a36Sopenharmony_ci cachefiles_coherency_check_aux, 5062306a36Sopenharmony_ci cachefiles_coherency_check_content, 5162306a36Sopenharmony_ci cachefiles_coherency_check_dirty, 5262306a36Sopenharmony_ci cachefiles_coherency_check_len, 5362306a36Sopenharmony_ci cachefiles_coherency_check_objsize, 5462306a36Sopenharmony_ci cachefiles_coherency_check_ok, 5562306a36Sopenharmony_ci cachefiles_coherency_check_type, 5662306a36Sopenharmony_ci cachefiles_coherency_check_xattr, 5762306a36Sopenharmony_ci cachefiles_coherency_set_fail, 5862306a36Sopenharmony_ci cachefiles_coherency_set_ok, 5962306a36Sopenharmony_ci cachefiles_coherency_vol_check_cmp, 6062306a36Sopenharmony_ci cachefiles_coherency_vol_check_ok, 6162306a36Sopenharmony_ci cachefiles_coherency_vol_check_resv, 6262306a36Sopenharmony_ci cachefiles_coherency_vol_check_xattr, 6362306a36Sopenharmony_ci cachefiles_coherency_vol_set_fail, 6462306a36Sopenharmony_ci cachefiles_coherency_vol_set_ok, 6562306a36Sopenharmony_ci}; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_cienum cachefiles_trunc_trace { 6862306a36Sopenharmony_ci cachefiles_trunc_dio_adjust, 6962306a36Sopenharmony_ci cachefiles_trunc_expand_tmpfile, 7062306a36Sopenharmony_ci cachefiles_trunc_shrink, 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cienum cachefiles_prepare_read_trace { 7462306a36Sopenharmony_ci cachefiles_trace_read_after_eof, 7562306a36Sopenharmony_ci cachefiles_trace_read_found_hole, 7662306a36Sopenharmony_ci cachefiles_trace_read_found_part, 7762306a36Sopenharmony_ci cachefiles_trace_read_have_data, 7862306a36Sopenharmony_ci cachefiles_trace_read_no_data, 7962306a36Sopenharmony_ci cachefiles_trace_read_no_file, 8062306a36Sopenharmony_ci cachefiles_trace_read_seek_error, 8162306a36Sopenharmony_ci cachefiles_trace_read_seek_nxio, 8262306a36Sopenharmony_ci}; 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_cienum cachefiles_error_trace { 8562306a36Sopenharmony_ci cachefiles_trace_fallocate_error, 8662306a36Sopenharmony_ci cachefiles_trace_getxattr_error, 8762306a36Sopenharmony_ci cachefiles_trace_link_error, 8862306a36Sopenharmony_ci cachefiles_trace_lookup_error, 8962306a36Sopenharmony_ci cachefiles_trace_mkdir_error, 9062306a36Sopenharmony_ci cachefiles_trace_notify_change_error, 9162306a36Sopenharmony_ci cachefiles_trace_open_error, 9262306a36Sopenharmony_ci cachefiles_trace_read_error, 9362306a36Sopenharmony_ci cachefiles_trace_remxattr_error, 9462306a36Sopenharmony_ci cachefiles_trace_rename_error, 9562306a36Sopenharmony_ci cachefiles_trace_seek_error, 9662306a36Sopenharmony_ci cachefiles_trace_setxattr_error, 9762306a36Sopenharmony_ci cachefiles_trace_statfs_error, 9862306a36Sopenharmony_ci cachefiles_trace_tmpfile_error, 9962306a36Sopenharmony_ci cachefiles_trace_trunc_error, 10062306a36Sopenharmony_ci cachefiles_trace_unlink_error, 10162306a36Sopenharmony_ci cachefiles_trace_write_error, 10262306a36Sopenharmony_ci}; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci#endif 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci/* 10762306a36Sopenharmony_ci * Define enum -> string mappings for display. 10862306a36Sopenharmony_ci */ 10962306a36Sopenharmony_ci#define cachefiles_obj_kill_traces \ 11062306a36Sopenharmony_ci EM(FSCACHE_OBJECT_IS_STALE, "stale") \ 11162306a36Sopenharmony_ci EM(FSCACHE_OBJECT_IS_WEIRD, "weird") \ 11262306a36Sopenharmony_ci EM(FSCACHE_OBJECT_INVALIDATED, "inval") \ 11362306a36Sopenharmony_ci EM(FSCACHE_OBJECT_NO_SPACE, "no_space") \ 11462306a36Sopenharmony_ci EM(FSCACHE_OBJECT_WAS_RETIRED, "was_retired") \ 11562306a36Sopenharmony_ci EM(FSCACHE_OBJECT_WAS_CULLED, "was_culled") \ 11662306a36Sopenharmony_ci E_(FSCACHE_VOLUME_IS_WEIRD, "volume_weird") 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci#define cachefiles_obj_ref_traces \ 11962306a36Sopenharmony_ci EM(cachefiles_obj_get_ioreq, "GET ioreq") \ 12062306a36Sopenharmony_ci EM(cachefiles_obj_new, "NEW obj") \ 12162306a36Sopenharmony_ci EM(cachefiles_obj_put_alloc_fail, "PUT alloc_fail") \ 12262306a36Sopenharmony_ci EM(cachefiles_obj_put_detach, "PUT detach") \ 12362306a36Sopenharmony_ci EM(cachefiles_obj_put_ioreq, "PUT ioreq") \ 12462306a36Sopenharmony_ci EM(cachefiles_obj_see_clean_commit, "SEE clean_commit") \ 12562306a36Sopenharmony_ci EM(cachefiles_obj_see_clean_delete, "SEE clean_delete") \ 12662306a36Sopenharmony_ci EM(cachefiles_obj_see_clean_drop_tmp, "SEE clean_drop_tmp") \ 12762306a36Sopenharmony_ci EM(cachefiles_obj_see_lookup_cookie, "SEE lookup_cookie") \ 12862306a36Sopenharmony_ci EM(cachefiles_obj_see_lookup_failed, "SEE lookup_failed") \ 12962306a36Sopenharmony_ci EM(cachefiles_obj_see_withdraw_cookie, "SEE withdraw_cookie") \ 13062306a36Sopenharmony_ci E_(cachefiles_obj_see_withdrawal, "SEE withdrawal") 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci#define cachefiles_coherency_traces \ 13362306a36Sopenharmony_ci EM(cachefiles_coherency_check_aux, "BAD aux ") \ 13462306a36Sopenharmony_ci EM(cachefiles_coherency_check_content, "BAD cont") \ 13562306a36Sopenharmony_ci EM(cachefiles_coherency_check_dirty, "BAD dirt") \ 13662306a36Sopenharmony_ci EM(cachefiles_coherency_check_len, "BAD len ") \ 13762306a36Sopenharmony_ci EM(cachefiles_coherency_check_objsize, "BAD osiz") \ 13862306a36Sopenharmony_ci EM(cachefiles_coherency_check_ok, "OK ") \ 13962306a36Sopenharmony_ci EM(cachefiles_coherency_check_type, "BAD type") \ 14062306a36Sopenharmony_ci EM(cachefiles_coherency_check_xattr, "BAD xatt") \ 14162306a36Sopenharmony_ci EM(cachefiles_coherency_set_fail, "SET fail") \ 14262306a36Sopenharmony_ci EM(cachefiles_coherency_set_ok, "SET ok ") \ 14362306a36Sopenharmony_ci EM(cachefiles_coherency_vol_check_cmp, "VOL BAD cmp ") \ 14462306a36Sopenharmony_ci EM(cachefiles_coherency_vol_check_ok, "VOL OK ") \ 14562306a36Sopenharmony_ci EM(cachefiles_coherency_vol_check_resv, "VOL BAD resv") \ 14662306a36Sopenharmony_ci EM(cachefiles_coherency_vol_check_xattr,"VOL BAD xatt") \ 14762306a36Sopenharmony_ci EM(cachefiles_coherency_vol_set_fail, "VOL SET fail") \ 14862306a36Sopenharmony_ci E_(cachefiles_coherency_vol_set_ok, "VOL SET ok ") 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci#define cachefiles_trunc_traces \ 15162306a36Sopenharmony_ci EM(cachefiles_trunc_dio_adjust, "DIOADJ") \ 15262306a36Sopenharmony_ci EM(cachefiles_trunc_expand_tmpfile, "EXPTMP") \ 15362306a36Sopenharmony_ci E_(cachefiles_trunc_shrink, "SHRINK") 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci#define cachefiles_prepare_read_traces \ 15662306a36Sopenharmony_ci EM(cachefiles_trace_read_after_eof, "after-eof ") \ 15762306a36Sopenharmony_ci EM(cachefiles_trace_read_found_hole, "found-hole") \ 15862306a36Sopenharmony_ci EM(cachefiles_trace_read_found_part, "found-part") \ 15962306a36Sopenharmony_ci EM(cachefiles_trace_read_have_data, "have-data ") \ 16062306a36Sopenharmony_ci EM(cachefiles_trace_read_no_data, "no-data ") \ 16162306a36Sopenharmony_ci EM(cachefiles_trace_read_no_file, "no-file ") \ 16262306a36Sopenharmony_ci EM(cachefiles_trace_read_seek_error, "seek-error") \ 16362306a36Sopenharmony_ci E_(cachefiles_trace_read_seek_nxio, "seek-enxio") 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci#define cachefiles_error_traces \ 16662306a36Sopenharmony_ci EM(cachefiles_trace_fallocate_error, "fallocate") \ 16762306a36Sopenharmony_ci EM(cachefiles_trace_getxattr_error, "getxattr") \ 16862306a36Sopenharmony_ci EM(cachefiles_trace_link_error, "link") \ 16962306a36Sopenharmony_ci EM(cachefiles_trace_lookup_error, "lookup") \ 17062306a36Sopenharmony_ci EM(cachefiles_trace_mkdir_error, "mkdir") \ 17162306a36Sopenharmony_ci EM(cachefiles_trace_notify_change_error, "notify_change") \ 17262306a36Sopenharmony_ci EM(cachefiles_trace_open_error, "open") \ 17362306a36Sopenharmony_ci EM(cachefiles_trace_read_error, "read") \ 17462306a36Sopenharmony_ci EM(cachefiles_trace_remxattr_error, "remxattr") \ 17562306a36Sopenharmony_ci EM(cachefiles_trace_rename_error, "rename") \ 17662306a36Sopenharmony_ci EM(cachefiles_trace_seek_error, "seek") \ 17762306a36Sopenharmony_ci EM(cachefiles_trace_setxattr_error, "setxattr") \ 17862306a36Sopenharmony_ci EM(cachefiles_trace_statfs_error, "statfs") \ 17962306a36Sopenharmony_ci EM(cachefiles_trace_tmpfile_error, "tmpfile") \ 18062306a36Sopenharmony_ci EM(cachefiles_trace_trunc_error, "trunc") \ 18162306a36Sopenharmony_ci EM(cachefiles_trace_unlink_error, "unlink") \ 18262306a36Sopenharmony_ci E_(cachefiles_trace_write_error, "write") 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* 18662306a36Sopenharmony_ci * Export enum symbols via userspace. 18762306a36Sopenharmony_ci */ 18862306a36Sopenharmony_ci#undef EM 18962306a36Sopenharmony_ci#undef E_ 19062306a36Sopenharmony_ci#define EM(a, b) TRACE_DEFINE_ENUM(a); 19162306a36Sopenharmony_ci#define E_(a, b) TRACE_DEFINE_ENUM(a); 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_cicachefiles_obj_kill_traces; 19462306a36Sopenharmony_cicachefiles_obj_ref_traces; 19562306a36Sopenharmony_cicachefiles_coherency_traces; 19662306a36Sopenharmony_cicachefiles_trunc_traces; 19762306a36Sopenharmony_cicachefiles_prepare_read_traces; 19862306a36Sopenharmony_cicachefiles_error_traces; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci/* 20162306a36Sopenharmony_ci * Now redefine the EM() and E_() macros to map the enums to the strings that 20262306a36Sopenharmony_ci * will be printed in the output. 20362306a36Sopenharmony_ci */ 20462306a36Sopenharmony_ci#undef EM 20562306a36Sopenharmony_ci#undef E_ 20662306a36Sopenharmony_ci#define EM(a, b) { a, b }, 20762306a36Sopenharmony_ci#define E_(a, b) { a, b } 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ref, 21162306a36Sopenharmony_ci TP_PROTO(unsigned int object_debug_id, 21262306a36Sopenharmony_ci unsigned int cookie_debug_id, 21362306a36Sopenharmony_ci int usage, 21462306a36Sopenharmony_ci enum cachefiles_obj_ref_trace why), 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci TP_ARGS(object_debug_id, cookie_debug_id, usage, why), 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci /* Note that obj may be NULL */ 21962306a36Sopenharmony_ci TP_STRUCT__entry( 22062306a36Sopenharmony_ci __field(unsigned int, obj ) 22162306a36Sopenharmony_ci __field(unsigned int, cookie ) 22262306a36Sopenharmony_ci __field(enum cachefiles_obj_ref_trace, why ) 22362306a36Sopenharmony_ci __field(int, usage ) 22462306a36Sopenharmony_ci ), 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci TP_fast_assign( 22762306a36Sopenharmony_ci __entry->obj = object_debug_id; 22862306a36Sopenharmony_ci __entry->cookie = cookie_debug_id; 22962306a36Sopenharmony_ci __entry->usage = usage; 23062306a36Sopenharmony_ci __entry->why = why; 23162306a36Sopenharmony_ci ), 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci TP_printk("c=%08x o=%08x u=%d %s", 23462306a36Sopenharmony_ci __entry->cookie, __entry->obj, __entry->usage, 23562306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_obj_ref_traces)) 23662306a36Sopenharmony_ci ); 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ciTRACE_EVENT(cachefiles_lookup, 23962306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 24062306a36Sopenharmony_ci struct dentry *dir, 24162306a36Sopenharmony_ci struct dentry *de), 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci TP_ARGS(obj, dir, de), 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci TP_STRUCT__entry( 24662306a36Sopenharmony_ci __field(unsigned int, obj ) 24762306a36Sopenharmony_ci __field(short, error ) 24862306a36Sopenharmony_ci __field(unsigned long, dino ) 24962306a36Sopenharmony_ci __field(unsigned long, ino ) 25062306a36Sopenharmony_ci ), 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci TP_fast_assign( 25362306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 25462306a36Sopenharmony_ci __entry->dino = d_backing_inode(dir)->i_ino; 25562306a36Sopenharmony_ci __entry->ino = (!IS_ERR(de) && d_backing_inode(de) ? 25662306a36Sopenharmony_ci d_backing_inode(de)->i_ino : 0); 25762306a36Sopenharmony_ci __entry->error = IS_ERR(de) ? PTR_ERR(de) : 0; 25862306a36Sopenharmony_ci ), 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci TP_printk("o=%08x dB=%lx B=%lx e=%d", 26162306a36Sopenharmony_ci __entry->obj, __entry->dino, __entry->ino, __entry->error) 26262306a36Sopenharmony_ci ); 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_mkdir, 26562306a36Sopenharmony_ci TP_PROTO(struct dentry *dir, struct dentry *subdir), 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci TP_ARGS(dir, subdir), 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci TP_STRUCT__entry( 27062306a36Sopenharmony_ci __field(unsigned int, dir ) 27162306a36Sopenharmony_ci __field(unsigned int, subdir ) 27262306a36Sopenharmony_ci ), 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci TP_fast_assign( 27562306a36Sopenharmony_ci __entry->dir = d_backing_inode(dir)->i_ino; 27662306a36Sopenharmony_ci __entry->subdir = d_backing_inode(subdir)->i_ino; 27762306a36Sopenharmony_ci ), 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci TP_printk("dB=%x sB=%x", 28062306a36Sopenharmony_ci __entry->dir, 28162306a36Sopenharmony_ci __entry->subdir) 28262306a36Sopenharmony_ci ); 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_tmpfile, 28562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer), 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci TP_ARGS(obj, backer), 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci TP_STRUCT__entry( 29062306a36Sopenharmony_ci __field(unsigned int, obj ) 29162306a36Sopenharmony_ci __field(unsigned int, backer ) 29262306a36Sopenharmony_ci ), 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci TP_fast_assign( 29562306a36Sopenharmony_ci __entry->obj = obj->debug_id; 29662306a36Sopenharmony_ci __entry->backer = backer->i_ino; 29762306a36Sopenharmony_ci ), 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci TP_printk("o=%08x B=%x", 30062306a36Sopenharmony_ci __entry->obj, 30162306a36Sopenharmony_ci __entry->backer) 30262306a36Sopenharmony_ci ); 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_link, 30562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer), 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ci TP_ARGS(obj, backer), 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci TP_STRUCT__entry( 31062306a36Sopenharmony_ci __field(unsigned int, obj ) 31162306a36Sopenharmony_ci __field(unsigned int, backer ) 31262306a36Sopenharmony_ci ), 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci TP_fast_assign( 31562306a36Sopenharmony_ci __entry->obj = obj->debug_id; 31662306a36Sopenharmony_ci __entry->backer = backer->i_ino; 31762306a36Sopenharmony_ci ), 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci TP_printk("o=%08x B=%x", 32062306a36Sopenharmony_ci __entry->obj, 32162306a36Sopenharmony_ci __entry->backer) 32262306a36Sopenharmony_ci ); 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_unlink, 32562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 32662306a36Sopenharmony_ci ino_t ino, 32762306a36Sopenharmony_ci enum fscache_why_object_killed why), 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci TP_ARGS(obj, ino, why), 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci /* Note that obj may be NULL */ 33262306a36Sopenharmony_ci TP_STRUCT__entry( 33362306a36Sopenharmony_ci __field(unsigned int, obj ) 33462306a36Sopenharmony_ci __field(unsigned int, ino ) 33562306a36Sopenharmony_ci __field(enum fscache_why_object_killed, why ) 33662306a36Sopenharmony_ci ), 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci TP_fast_assign( 33962306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : UINT_MAX; 34062306a36Sopenharmony_ci __entry->ino = ino; 34162306a36Sopenharmony_ci __entry->why = why; 34262306a36Sopenharmony_ci ), 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci TP_printk("o=%08x B=%x w=%s", 34562306a36Sopenharmony_ci __entry->obj, __entry->ino, 34662306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_obj_kill_traces)) 34762306a36Sopenharmony_ci ); 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ciTRACE_EVENT(cachefiles_rename, 35062306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 35162306a36Sopenharmony_ci ino_t ino, 35262306a36Sopenharmony_ci enum fscache_why_object_killed why), 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ci TP_ARGS(obj, ino, why), 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci /* Note that obj may be NULL */ 35762306a36Sopenharmony_ci TP_STRUCT__entry( 35862306a36Sopenharmony_ci __field(unsigned int, obj ) 35962306a36Sopenharmony_ci __field(unsigned int, ino ) 36062306a36Sopenharmony_ci __field(enum fscache_why_object_killed, why ) 36162306a36Sopenharmony_ci ), 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ci TP_fast_assign( 36462306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : UINT_MAX; 36562306a36Sopenharmony_ci __entry->ino = ino; 36662306a36Sopenharmony_ci __entry->why = why; 36762306a36Sopenharmony_ci ), 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci TP_printk("o=%08x B=%x w=%s", 37062306a36Sopenharmony_ci __entry->obj, __entry->ino, 37162306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_obj_kill_traces)) 37262306a36Sopenharmony_ci ); 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_coherency, 37562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 37662306a36Sopenharmony_ci ino_t ino, 37762306a36Sopenharmony_ci enum cachefiles_content content, 37862306a36Sopenharmony_ci enum cachefiles_coherency_trace why), 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci TP_ARGS(obj, ino, content, why), 38162306a36Sopenharmony_ci 38262306a36Sopenharmony_ci /* Note that obj may be NULL */ 38362306a36Sopenharmony_ci TP_STRUCT__entry( 38462306a36Sopenharmony_ci __field(unsigned int, obj ) 38562306a36Sopenharmony_ci __field(enum cachefiles_coherency_trace, why ) 38662306a36Sopenharmony_ci __field(enum cachefiles_content, content ) 38762306a36Sopenharmony_ci __field(u64, ino ) 38862306a36Sopenharmony_ci ), 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci TP_fast_assign( 39162306a36Sopenharmony_ci __entry->obj = obj->debug_id; 39262306a36Sopenharmony_ci __entry->why = why; 39362306a36Sopenharmony_ci __entry->content = content; 39462306a36Sopenharmony_ci __entry->ino = ino; 39562306a36Sopenharmony_ci ), 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci TP_printk("o=%08x %s B=%llx c=%u", 39862306a36Sopenharmony_ci __entry->obj, 39962306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_coherency_traces), 40062306a36Sopenharmony_ci __entry->ino, 40162306a36Sopenharmony_ci __entry->content) 40262306a36Sopenharmony_ci ); 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_vol_coherency, 40562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_volume *volume, 40662306a36Sopenharmony_ci ino_t ino, 40762306a36Sopenharmony_ci enum cachefiles_coherency_trace why), 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci TP_ARGS(volume, ino, why), 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci /* Note that obj may be NULL */ 41262306a36Sopenharmony_ci TP_STRUCT__entry( 41362306a36Sopenharmony_ci __field(unsigned int, vol ) 41462306a36Sopenharmony_ci __field(enum cachefiles_coherency_trace, why ) 41562306a36Sopenharmony_ci __field(u64, ino ) 41662306a36Sopenharmony_ci ), 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci TP_fast_assign( 41962306a36Sopenharmony_ci __entry->vol = volume->vcookie->debug_id; 42062306a36Sopenharmony_ci __entry->why = why; 42162306a36Sopenharmony_ci __entry->ino = ino; 42262306a36Sopenharmony_ci ), 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ci TP_printk("V=%08x %s B=%llx", 42562306a36Sopenharmony_ci __entry->vol, 42662306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_coherency_traces), 42762306a36Sopenharmony_ci __entry->ino) 42862306a36Sopenharmony_ci ); 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ciTRACE_EVENT(cachefiles_prep_read, 43162306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 43262306a36Sopenharmony_ci loff_t start, 43362306a36Sopenharmony_ci size_t len, 43462306a36Sopenharmony_ci unsigned short flags, 43562306a36Sopenharmony_ci enum netfs_io_source source, 43662306a36Sopenharmony_ci enum cachefiles_prepare_read_trace why, 43762306a36Sopenharmony_ci ino_t cache_inode, ino_t netfs_inode), 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci TP_ARGS(obj, start, len, flags, source, why, cache_inode, netfs_inode), 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ci TP_STRUCT__entry( 44262306a36Sopenharmony_ci __field(unsigned int, obj ) 44362306a36Sopenharmony_ci __field(unsigned short, flags ) 44462306a36Sopenharmony_ci __field(enum netfs_io_source, source ) 44562306a36Sopenharmony_ci __field(enum cachefiles_prepare_read_trace, why ) 44662306a36Sopenharmony_ci __field(size_t, len ) 44762306a36Sopenharmony_ci __field(loff_t, start ) 44862306a36Sopenharmony_ci __field(unsigned int, netfs_inode ) 44962306a36Sopenharmony_ci __field(unsigned int, cache_inode ) 45062306a36Sopenharmony_ci ), 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ci TP_fast_assign( 45362306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 45462306a36Sopenharmony_ci __entry->flags = flags; 45562306a36Sopenharmony_ci __entry->source = source; 45662306a36Sopenharmony_ci __entry->why = why; 45762306a36Sopenharmony_ci __entry->len = len; 45862306a36Sopenharmony_ci __entry->start = start; 45962306a36Sopenharmony_ci __entry->netfs_inode = netfs_inode; 46062306a36Sopenharmony_ci __entry->cache_inode = cache_inode; 46162306a36Sopenharmony_ci ), 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci TP_printk("o=%08x %s %s f=%02x s=%llx %zx ni=%x B=%x", 46462306a36Sopenharmony_ci __entry->obj, 46562306a36Sopenharmony_ci __print_symbolic(__entry->source, netfs_sreq_sources), 46662306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_prepare_read_traces), 46762306a36Sopenharmony_ci __entry->flags, 46862306a36Sopenharmony_ci __entry->start, __entry->len, 46962306a36Sopenharmony_ci __entry->netfs_inode, __entry->cache_inode) 47062306a36Sopenharmony_ci ); 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ciTRACE_EVENT(cachefiles_read, 47362306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 47462306a36Sopenharmony_ci struct inode *backer, 47562306a36Sopenharmony_ci loff_t start, 47662306a36Sopenharmony_ci size_t len), 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci TP_ARGS(obj, backer, start, len), 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci TP_STRUCT__entry( 48162306a36Sopenharmony_ci __field(unsigned int, obj ) 48262306a36Sopenharmony_ci __field(unsigned int, backer ) 48362306a36Sopenharmony_ci __field(size_t, len ) 48462306a36Sopenharmony_ci __field(loff_t, start ) 48562306a36Sopenharmony_ci ), 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ci TP_fast_assign( 48862306a36Sopenharmony_ci __entry->obj = obj->debug_id; 48962306a36Sopenharmony_ci __entry->backer = backer->i_ino; 49062306a36Sopenharmony_ci __entry->start = start; 49162306a36Sopenharmony_ci __entry->len = len; 49262306a36Sopenharmony_ci ), 49362306a36Sopenharmony_ci 49462306a36Sopenharmony_ci TP_printk("o=%08x B=%x s=%llx l=%zx", 49562306a36Sopenharmony_ci __entry->obj, 49662306a36Sopenharmony_ci __entry->backer, 49762306a36Sopenharmony_ci __entry->start, 49862306a36Sopenharmony_ci __entry->len) 49962306a36Sopenharmony_ci ); 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ciTRACE_EVENT(cachefiles_write, 50262306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 50362306a36Sopenharmony_ci struct inode *backer, 50462306a36Sopenharmony_ci loff_t start, 50562306a36Sopenharmony_ci size_t len), 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_ci TP_ARGS(obj, backer, start, len), 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci TP_STRUCT__entry( 51062306a36Sopenharmony_ci __field(unsigned int, obj ) 51162306a36Sopenharmony_ci __field(unsigned int, backer ) 51262306a36Sopenharmony_ci __field(size_t, len ) 51362306a36Sopenharmony_ci __field(loff_t, start ) 51462306a36Sopenharmony_ci ), 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ci TP_fast_assign( 51762306a36Sopenharmony_ci __entry->obj = obj->debug_id; 51862306a36Sopenharmony_ci __entry->backer = backer->i_ino; 51962306a36Sopenharmony_ci __entry->start = start; 52062306a36Sopenharmony_ci __entry->len = len; 52162306a36Sopenharmony_ci ), 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_ci TP_printk("o=%08x B=%x s=%llx l=%zx", 52462306a36Sopenharmony_ci __entry->obj, 52562306a36Sopenharmony_ci __entry->backer, 52662306a36Sopenharmony_ci __entry->start, 52762306a36Sopenharmony_ci __entry->len) 52862306a36Sopenharmony_ci ); 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_ciTRACE_EVENT(cachefiles_trunc, 53162306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 53262306a36Sopenharmony_ci loff_t from, loff_t to, enum cachefiles_trunc_trace why), 53362306a36Sopenharmony_ci 53462306a36Sopenharmony_ci TP_ARGS(obj, backer, from, to, why), 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ci TP_STRUCT__entry( 53762306a36Sopenharmony_ci __field(unsigned int, obj ) 53862306a36Sopenharmony_ci __field(unsigned int, backer ) 53962306a36Sopenharmony_ci __field(enum cachefiles_trunc_trace, why ) 54062306a36Sopenharmony_ci __field(loff_t, from ) 54162306a36Sopenharmony_ci __field(loff_t, to ) 54262306a36Sopenharmony_ci ), 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci TP_fast_assign( 54562306a36Sopenharmony_ci __entry->obj = obj->debug_id; 54662306a36Sopenharmony_ci __entry->backer = backer->i_ino; 54762306a36Sopenharmony_ci __entry->from = from; 54862306a36Sopenharmony_ci __entry->to = to; 54962306a36Sopenharmony_ci __entry->why = why; 55062306a36Sopenharmony_ci ), 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_ci TP_printk("o=%08x B=%x %s l=%llx->%llx", 55362306a36Sopenharmony_ci __entry->obj, 55462306a36Sopenharmony_ci __entry->backer, 55562306a36Sopenharmony_ci __print_symbolic(__entry->why, cachefiles_trunc_traces), 55662306a36Sopenharmony_ci __entry->from, 55762306a36Sopenharmony_ci __entry->to) 55862306a36Sopenharmony_ci ); 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ciTRACE_EVENT(cachefiles_mark_active, 56162306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 56262306a36Sopenharmony_ci struct inode *inode), 56362306a36Sopenharmony_ci 56462306a36Sopenharmony_ci TP_ARGS(obj, inode), 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci /* Note that obj may be NULL */ 56762306a36Sopenharmony_ci TP_STRUCT__entry( 56862306a36Sopenharmony_ci __field(unsigned int, obj ) 56962306a36Sopenharmony_ci __field(ino_t, inode ) 57062306a36Sopenharmony_ci ), 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci TP_fast_assign( 57362306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 57462306a36Sopenharmony_ci __entry->inode = inode->i_ino; 57562306a36Sopenharmony_ci ), 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ci TP_printk("o=%08x B=%lx", 57862306a36Sopenharmony_ci __entry->obj, __entry->inode) 57962306a36Sopenharmony_ci ); 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ciTRACE_EVENT(cachefiles_mark_failed, 58262306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 58362306a36Sopenharmony_ci struct inode *inode), 58462306a36Sopenharmony_ci 58562306a36Sopenharmony_ci TP_ARGS(obj, inode), 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ci /* Note that obj may be NULL */ 58862306a36Sopenharmony_ci TP_STRUCT__entry( 58962306a36Sopenharmony_ci __field(unsigned int, obj ) 59062306a36Sopenharmony_ci __field(ino_t, inode ) 59162306a36Sopenharmony_ci ), 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_ci TP_fast_assign( 59462306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 59562306a36Sopenharmony_ci __entry->inode = inode->i_ino; 59662306a36Sopenharmony_ci ), 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci TP_printk("o=%08x B=%lx", 59962306a36Sopenharmony_ci __entry->obj, __entry->inode) 60062306a36Sopenharmony_ci ); 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ciTRACE_EVENT(cachefiles_mark_inactive, 60362306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, 60462306a36Sopenharmony_ci struct inode *inode), 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ci TP_ARGS(obj, inode), 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ci /* Note that obj may be NULL */ 60962306a36Sopenharmony_ci TP_STRUCT__entry( 61062306a36Sopenharmony_ci __field(unsigned int, obj ) 61162306a36Sopenharmony_ci __field(ino_t, inode ) 61262306a36Sopenharmony_ci ), 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ci TP_fast_assign( 61562306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 61662306a36Sopenharmony_ci __entry->inode = inode->i_ino; 61762306a36Sopenharmony_ci ), 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_ci TP_printk("o=%08x B=%lx", 62062306a36Sopenharmony_ci __entry->obj, __entry->inode) 62162306a36Sopenharmony_ci ); 62262306a36Sopenharmony_ci 62362306a36Sopenharmony_ciTRACE_EVENT(cachefiles_vfs_error, 62462306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 62562306a36Sopenharmony_ci int error, enum cachefiles_error_trace where), 62662306a36Sopenharmony_ci 62762306a36Sopenharmony_ci TP_ARGS(obj, backer, error, where), 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci TP_STRUCT__entry( 63062306a36Sopenharmony_ci __field(unsigned int, obj ) 63162306a36Sopenharmony_ci __field(unsigned int, backer ) 63262306a36Sopenharmony_ci __field(enum cachefiles_error_trace, where ) 63362306a36Sopenharmony_ci __field(short, error ) 63462306a36Sopenharmony_ci ), 63562306a36Sopenharmony_ci 63662306a36Sopenharmony_ci TP_fast_assign( 63762306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 63862306a36Sopenharmony_ci __entry->backer = backer->i_ino; 63962306a36Sopenharmony_ci __entry->error = error; 64062306a36Sopenharmony_ci __entry->where = where; 64162306a36Sopenharmony_ci ), 64262306a36Sopenharmony_ci 64362306a36Sopenharmony_ci TP_printk("o=%08x B=%x %s e=%d", 64462306a36Sopenharmony_ci __entry->obj, 64562306a36Sopenharmony_ci __entry->backer, 64662306a36Sopenharmony_ci __print_symbolic(__entry->where, cachefiles_error_traces), 64762306a36Sopenharmony_ci __entry->error) 64862306a36Sopenharmony_ci ); 64962306a36Sopenharmony_ci 65062306a36Sopenharmony_ciTRACE_EVENT(cachefiles_io_error, 65162306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 65262306a36Sopenharmony_ci int error, enum cachefiles_error_trace where), 65362306a36Sopenharmony_ci 65462306a36Sopenharmony_ci TP_ARGS(obj, backer, error, where), 65562306a36Sopenharmony_ci 65662306a36Sopenharmony_ci TP_STRUCT__entry( 65762306a36Sopenharmony_ci __field(unsigned int, obj ) 65862306a36Sopenharmony_ci __field(unsigned int, backer ) 65962306a36Sopenharmony_ci __field(enum cachefiles_error_trace, where ) 66062306a36Sopenharmony_ci __field(short, error ) 66162306a36Sopenharmony_ci ), 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ci TP_fast_assign( 66462306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 66562306a36Sopenharmony_ci __entry->backer = backer->i_ino; 66662306a36Sopenharmony_ci __entry->error = error; 66762306a36Sopenharmony_ci __entry->where = where; 66862306a36Sopenharmony_ci ), 66962306a36Sopenharmony_ci 67062306a36Sopenharmony_ci TP_printk("o=%08x B=%x %s e=%d", 67162306a36Sopenharmony_ci __entry->obj, 67262306a36Sopenharmony_ci __entry->backer, 67362306a36Sopenharmony_ci __print_symbolic(__entry->where, cachefiles_error_traces), 67462306a36Sopenharmony_ci __entry->error) 67562306a36Sopenharmony_ci ); 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_open, 67862306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg, 67962306a36Sopenharmony_ci struct cachefiles_open *load), 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ci TP_ARGS(obj, msg, load), 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci TP_STRUCT__entry( 68462306a36Sopenharmony_ci __field(unsigned int, obj ) 68562306a36Sopenharmony_ci __field(unsigned int, msg_id ) 68662306a36Sopenharmony_ci __field(unsigned int, object_id ) 68762306a36Sopenharmony_ci __field(unsigned int, fd ) 68862306a36Sopenharmony_ci __field(unsigned int, flags ) 68962306a36Sopenharmony_ci ), 69062306a36Sopenharmony_ci 69162306a36Sopenharmony_ci TP_fast_assign( 69262306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 69362306a36Sopenharmony_ci __entry->msg_id = msg->msg_id; 69462306a36Sopenharmony_ci __entry->object_id = msg->object_id; 69562306a36Sopenharmony_ci __entry->fd = load->fd; 69662306a36Sopenharmony_ci __entry->flags = load->flags; 69762306a36Sopenharmony_ci ), 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ci TP_printk("o=%08x mid=%x oid=%x fd=%d f=%x", 70062306a36Sopenharmony_ci __entry->obj, 70162306a36Sopenharmony_ci __entry->msg_id, 70262306a36Sopenharmony_ci __entry->object_id, 70362306a36Sopenharmony_ci __entry->fd, 70462306a36Sopenharmony_ci __entry->flags) 70562306a36Sopenharmony_ci ); 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_copen, 70862306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id, 70962306a36Sopenharmony_ci long len), 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci TP_ARGS(obj, msg_id, len), 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ci TP_STRUCT__entry( 71462306a36Sopenharmony_ci __field(unsigned int, obj ) 71562306a36Sopenharmony_ci __field(unsigned int, msg_id ) 71662306a36Sopenharmony_ci __field(long, len ) 71762306a36Sopenharmony_ci ), 71862306a36Sopenharmony_ci 71962306a36Sopenharmony_ci TP_fast_assign( 72062306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 72162306a36Sopenharmony_ci __entry->msg_id = msg_id; 72262306a36Sopenharmony_ci __entry->len = len; 72362306a36Sopenharmony_ci ), 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ci TP_printk("o=%08x mid=%x l=%lx", 72662306a36Sopenharmony_ci __entry->obj, 72762306a36Sopenharmony_ci __entry->msg_id, 72862306a36Sopenharmony_ci __entry->len) 72962306a36Sopenharmony_ci ); 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_close, 73262306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg), 73362306a36Sopenharmony_ci 73462306a36Sopenharmony_ci TP_ARGS(obj, msg), 73562306a36Sopenharmony_ci 73662306a36Sopenharmony_ci TP_STRUCT__entry( 73762306a36Sopenharmony_ci __field(unsigned int, obj ) 73862306a36Sopenharmony_ci __field(unsigned int, msg_id ) 73962306a36Sopenharmony_ci __field(unsigned int, object_id ) 74062306a36Sopenharmony_ci ), 74162306a36Sopenharmony_ci 74262306a36Sopenharmony_ci TP_fast_assign( 74362306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 74462306a36Sopenharmony_ci __entry->msg_id = msg->msg_id; 74562306a36Sopenharmony_ci __entry->object_id = msg->object_id; 74662306a36Sopenharmony_ci ), 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_ci TP_printk("o=%08x mid=%x oid=%x", 74962306a36Sopenharmony_ci __entry->obj, 75062306a36Sopenharmony_ci __entry->msg_id, 75162306a36Sopenharmony_ci __entry->object_id) 75262306a36Sopenharmony_ci ); 75362306a36Sopenharmony_ci 75462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_read, 75562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg, 75662306a36Sopenharmony_ci struct cachefiles_read *load), 75762306a36Sopenharmony_ci 75862306a36Sopenharmony_ci TP_ARGS(obj, msg, load), 75962306a36Sopenharmony_ci 76062306a36Sopenharmony_ci TP_STRUCT__entry( 76162306a36Sopenharmony_ci __field(unsigned int, obj ) 76262306a36Sopenharmony_ci __field(unsigned int, msg_id ) 76362306a36Sopenharmony_ci __field(unsigned int, object_id ) 76462306a36Sopenharmony_ci __field(loff_t, start ) 76562306a36Sopenharmony_ci __field(size_t, len ) 76662306a36Sopenharmony_ci ), 76762306a36Sopenharmony_ci 76862306a36Sopenharmony_ci TP_fast_assign( 76962306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 77062306a36Sopenharmony_ci __entry->msg_id = msg->msg_id; 77162306a36Sopenharmony_ci __entry->object_id = msg->object_id; 77262306a36Sopenharmony_ci __entry->start = load->off; 77362306a36Sopenharmony_ci __entry->len = load->len; 77462306a36Sopenharmony_ci ), 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ci TP_printk("o=%08x mid=%x oid=%x s=%llx l=%zx", 77762306a36Sopenharmony_ci __entry->obj, 77862306a36Sopenharmony_ci __entry->msg_id, 77962306a36Sopenharmony_ci __entry->object_id, 78062306a36Sopenharmony_ci __entry->start, 78162306a36Sopenharmony_ci __entry->len) 78262306a36Sopenharmony_ci ); 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_cread, 78562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id), 78662306a36Sopenharmony_ci 78762306a36Sopenharmony_ci TP_ARGS(obj, msg_id), 78862306a36Sopenharmony_ci 78962306a36Sopenharmony_ci TP_STRUCT__entry( 79062306a36Sopenharmony_ci __field(unsigned int, obj ) 79162306a36Sopenharmony_ci __field(unsigned int, msg_id ) 79262306a36Sopenharmony_ci ), 79362306a36Sopenharmony_ci 79462306a36Sopenharmony_ci TP_fast_assign( 79562306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 79662306a36Sopenharmony_ci __entry->msg_id = msg_id; 79762306a36Sopenharmony_ci ), 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci TP_printk("o=%08x mid=%x", 80062306a36Sopenharmony_ci __entry->obj, 80162306a36Sopenharmony_ci __entry->msg_id) 80262306a36Sopenharmony_ci ); 80362306a36Sopenharmony_ci 80462306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_fd_write, 80562306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 80662306a36Sopenharmony_ci loff_t start, size_t len), 80762306a36Sopenharmony_ci 80862306a36Sopenharmony_ci TP_ARGS(obj, backer, start, len), 80962306a36Sopenharmony_ci 81062306a36Sopenharmony_ci TP_STRUCT__entry( 81162306a36Sopenharmony_ci __field(unsigned int, obj ) 81262306a36Sopenharmony_ci __field(unsigned int, backer ) 81362306a36Sopenharmony_ci __field(loff_t, start ) 81462306a36Sopenharmony_ci __field(size_t, len ) 81562306a36Sopenharmony_ci ), 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci TP_fast_assign( 81862306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 81962306a36Sopenharmony_ci __entry->backer = backer->i_ino; 82062306a36Sopenharmony_ci __entry->start = start; 82162306a36Sopenharmony_ci __entry->len = len; 82262306a36Sopenharmony_ci ), 82362306a36Sopenharmony_ci 82462306a36Sopenharmony_ci TP_printk("o=%08x iB=%x s=%llx l=%zx", 82562306a36Sopenharmony_ci __entry->obj, 82662306a36Sopenharmony_ci __entry->backer, 82762306a36Sopenharmony_ci __entry->start, 82862306a36Sopenharmony_ci __entry->len) 82962306a36Sopenharmony_ci ); 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ciTRACE_EVENT(cachefiles_ondemand_fd_release, 83262306a36Sopenharmony_ci TP_PROTO(struct cachefiles_object *obj, int object_id), 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_ci TP_ARGS(obj, object_id), 83562306a36Sopenharmony_ci 83662306a36Sopenharmony_ci TP_STRUCT__entry( 83762306a36Sopenharmony_ci __field(unsigned int, obj ) 83862306a36Sopenharmony_ci __field(unsigned int, object_id ) 83962306a36Sopenharmony_ci ), 84062306a36Sopenharmony_ci 84162306a36Sopenharmony_ci TP_fast_assign( 84262306a36Sopenharmony_ci __entry->obj = obj ? obj->debug_id : 0; 84362306a36Sopenharmony_ci __entry->object_id = object_id; 84462306a36Sopenharmony_ci ), 84562306a36Sopenharmony_ci 84662306a36Sopenharmony_ci TP_printk("o=%08x oid=%x", 84762306a36Sopenharmony_ci __entry->obj, 84862306a36Sopenharmony_ci __entry->object_id) 84962306a36Sopenharmony_ci ); 85062306a36Sopenharmony_ci 85162306a36Sopenharmony_ci#endif /* _TRACE_CACHEFILES_H */ 85262306a36Sopenharmony_ci 85362306a36Sopenharmony_ci/* This part must be outside protection */ 85462306a36Sopenharmony_ci#include <trace/define_trace.h> 855