177443f61SDavid Howells /* SPDX-License-Identifier: GPL-2.0-or-later */ 277443f61SDavid Howells /* CacheFiles tracepoints 377443f61SDavid Howells * 477443f61SDavid Howells * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. 577443f61SDavid Howells * Written by David Howells (dhowells@redhat.com) 677443f61SDavid Howells */ 777443f61SDavid Howells #undef TRACE_SYSTEM 877443f61SDavid Howells #define TRACE_SYSTEM cachefiles 977443f61SDavid Howells 1077443f61SDavid Howells #if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ) 1177443f61SDavid Howells #define _TRACE_CACHEFILES_H 1277443f61SDavid Howells 1377443f61SDavid Howells #include <linux/tracepoint.h> 1477443f61SDavid Howells 1577443f61SDavid Howells /* 1677443f61SDavid Howells * Define enums for tracing information. 1777443f61SDavid Howells */ 1877443f61SDavid Howells #ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY 1977443f61SDavid Howells #define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY 2077443f61SDavid Howells 21df98e87fSDavid Howells enum cachefiles_obj_ref_trace { 22df98e87fSDavid Howells cachefiles_obj_get_ioreq, 23df98e87fSDavid Howells cachefiles_obj_new, 24df98e87fSDavid Howells cachefiles_obj_put_alloc_fail, 25df98e87fSDavid Howells cachefiles_obj_put_detach, 26df98e87fSDavid Howells cachefiles_obj_put_ioreq, 27df98e87fSDavid Howells cachefiles_obj_see_clean_commit, 28df98e87fSDavid Howells cachefiles_obj_see_clean_delete, 29df98e87fSDavid Howells cachefiles_obj_see_clean_drop_tmp, 30df98e87fSDavid Howells cachefiles_obj_see_lookup_cookie, 31df98e87fSDavid Howells cachefiles_obj_see_lookup_failed, 32df98e87fSDavid Howells cachefiles_obj_see_withdraw_cookie, 33df98e87fSDavid Howells cachefiles_obj_see_withdrawal, 34c8383054SJeffle Xu cachefiles_obj_get_ondemand_fd, 35c8383054SJeffle Xu cachefiles_obj_put_ondemand_fd, 363958679cSBaokun Li cachefiles_obj_get_read_req, 373958679cSBaokun Li cachefiles_obj_put_read_req, 38df98e87fSDavid Howells }; 39df98e87fSDavid Howells 4013871badSDavid Howells enum fscache_why_object_killed { 4113871badSDavid Howells FSCACHE_OBJECT_IS_STALE, 4213871badSDavid Howells FSCACHE_OBJECT_IS_WEIRD, 4313871badSDavid Howells FSCACHE_OBJECT_INVALIDATED, 4413871badSDavid Howells FSCACHE_OBJECT_NO_SPACE, 4513871badSDavid Howells FSCACHE_OBJECT_WAS_RETIRED, 4613871badSDavid Howells FSCACHE_OBJECT_WAS_CULLED, 4732e15003SDavid Howells FSCACHE_VOLUME_IS_WEIRD, 4813871badSDavid Howells }; 4913871badSDavid Howells 5072b95785SDavid Howells enum cachefiles_coherency_trace { 5172b95785SDavid Howells cachefiles_coherency_check_aux, 5272b95785SDavid Howells cachefiles_coherency_check_content, 5372b95785SDavid Howells cachefiles_coherency_check_dirty, 5472b95785SDavid Howells cachefiles_coherency_check_len, 5572b95785SDavid Howells cachefiles_coherency_check_objsize, 5672b95785SDavid Howells cachefiles_coherency_check_ok, 5772b95785SDavid Howells cachefiles_coherency_check_type, 5872b95785SDavid Howells cachefiles_coherency_check_xattr, 5972b95785SDavid Howells cachefiles_coherency_set_fail, 6072b95785SDavid Howells cachefiles_coherency_set_ok, 6132e15003SDavid Howells cachefiles_coherency_vol_check_cmp, 6232e15003SDavid Howells cachefiles_coherency_vol_check_ok, 63413a4a6bSDavid Howells cachefiles_coherency_vol_check_resv, 6432e15003SDavid Howells cachefiles_coherency_vol_check_xattr, 6532e15003SDavid Howells cachefiles_coherency_vol_set_fail, 6632e15003SDavid Howells cachefiles_coherency_vol_set_ok, 6772b95785SDavid Howells }; 6872b95785SDavid Howells 6913871badSDavid Howells enum cachefiles_trunc_trace { 7013871badSDavid Howells cachefiles_trunc_dio_adjust, 7113871badSDavid Howells cachefiles_trunc_expand_tmpfile, 7213871badSDavid Howells cachefiles_trunc_shrink, 7313871badSDavid Howells }; 7413871badSDavid Howells 75047487c9SDavid Howells enum cachefiles_prepare_read_trace { 76047487c9SDavid Howells cachefiles_trace_read_after_eof, 77047487c9SDavid Howells cachefiles_trace_read_found_hole, 78047487c9SDavid Howells cachefiles_trace_read_found_part, 79047487c9SDavid Howells cachefiles_trace_read_have_data, 80047487c9SDavid Howells cachefiles_trace_read_no_data, 81047487c9SDavid Howells cachefiles_trace_read_no_file, 82047487c9SDavid Howells cachefiles_trace_read_seek_error, 83047487c9SDavid Howells cachefiles_trace_read_seek_nxio, 84047487c9SDavid Howells }; 85047487c9SDavid Howells 86ecf5a6ceSDavid Howells enum cachefiles_error_trace { 87ecf5a6ceSDavid Howells cachefiles_trace_fallocate_error, 88ecf5a6ceSDavid Howells cachefiles_trace_getxattr_error, 89ecf5a6ceSDavid Howells cachefiles_trace_link_error, 90ecf5a6ceSDavid Howells cachefiles_trace_lookup_error, 91ecf5a6ceSDavid Howells cachefiles_trace_mkdir_error, 92ecf5a6ceSDavid Howells cachefiles_trace_notify_change_error, 93ecf5a6ceSDavid Howells cachefiles_trace_open_error, 94ecf5a6ceSDavid Howells cachefiles_trace_read_error, 95ecf5a6ceSDavid Howells cachefiles_trace_remxattr_error, 96ecf5a6ceSDavid Howells cachefiles_trace_rename_error, 97ecf5a6ceSDavid Howells cachefiles_trace_seek_error, 98ecf5a6ceSDavid Howells cachefiles_trace_setxattr_error, 99ecf5a6ceSDavid Howells cachefiles_trace_statfs_error, 100ecf5a6ceSDavid Howells cachefiles_trace_tmpfile_error, 101ecf5a6ceSDavid Howells cachefiles_trace_trunc_error, 102ecf5a6ceSDavid Howells cachefiles_trace_unlink_error, 103ecf5a6ceSDavid Howells cachefiles_trace_write_error, 104ecf5a6ceSDavid Howells }; 105ecf5a6ceSDavid Howells 10677443f61SDavid Howells #endif 10777443f61SDavid Howells 10877443f61SDavid Howells /* 10977443f61SDavid Howells * Define enum -> string mappings for display. 11077443f61SDavid Howells */ 11113871badSDavid Howells #define cachefiles_obj_kill_traces \ 11213871badSDavid Howells EM(FSCACHE_OBJECT_IS_STALE, "stale") \ 11313871badSDavid Howells EM(FSCACHE_OBJECT_IS_WEIRD, "weird") \ 11413871badSDavid Howells EM(FSCACHE_OBJECT_INVALIDATED, "inval") \ 11513871badSDavid Howells EM(FSCACHE_OBJECT_NO_SPACE, "no_space") \ 11613871badSDavid Howells EM(FSCACHE_OBJECT_WAS_RETIRED, "was_retired") \ 11732e15003SDavid Howells EM(FSCACHE_OBJECT_WAS_CULLED, "was_culled") \ 11832e15003SDavid Howells E_(FSCACHE_VOLUME_IS_WEIRD, "volume_weird") 11913871badSDavid Howells 120df98e87fSDavid Howells #define cachefiles_obj_ref_traces \ 121df98e87fSDavid Howells EM(cachefiles_obj_get_ioreq, "GET ioreq") \ 122df98e87fSDavid Howells EM(cachefiles_obj_new, "NEW obj") \ 123df98e87fSDavid Howells EM(cachefiles_obj_put_alloc_fail, "PUT alloc_fail") \ 124df98e87fSDavid Howells EM(cachefiles_obj_put_detach, "PUT detach") \ 125df98e87fSDavid Howells EM(cachefiles_obj_put_ioreq, "PUT ioreq") \ 126df98e87fSDavid Howells EM(cachefiles_obj_see_clean_commit, "SEE clean_commit") \ 127df98e87fSDavid Howells EM(cachefiles_obj_see_clean_delete, "SEE clean_delete") \ 128df98e87fSDavid Howells EM(cachefiles_obj_see_clean_drop_tmp, "SEE clean_drop_tmp") \ 129df98e87fSDavid Howells EM(cachefiles_obj_see_lookup_cookie, "SEE lookup_cookie") \ 130df98e87fSDavid Howells EM(cachefiles_obj_see_lookup_failed, "SEE lookup_failed") \ 131df98e87fSDavid Howells EM(cachefiles_obj_see_withdraw_cookie, "SEE withdraw_cookie") \ 13219133f53SBaokun Li EM(cachefiles_obj_see_withdrawal, "SEE withdrawal") \ 13319133f53SBaokun Li EM(cachefiles_obj_get_ondemand_fd, "GET ondemand_fd") \ 1343958679cSBaokun Li EM(cachefiles_obj_put_ondemand_fd, "PUT ondemand_fd") \ 1353958679cSBaokun Li EM(cachefiles_obj_get_read_req, "GET read_req") \ 1363958679cSBaokun Li E_(cachefiles_obj_put_read_req, "PUT read_req") 137df98e87fSDavid Howells 13872b95785SDavid Howells #define cachefiles_coherency_traces \ 13972b95785SDavid Howells EM(cachefiles_coherency_check_aux, "BAD aux ") \ 14072b95785SDavid Howells EM(cachefiles_coherency_check_content, "BAD cont") \ 14172b95785SDavid Howells EM(cachefiles_coherency_check_dirty, "BAD dirt") \ 14272b95785SDavid Howells EM(cachefiles_coherency_check_len, "BAD len ") \ 14372b95785SDavid Howells EM(cachefiles_coherency_check_objsize, "BAD osiz") \ 14472b95785SDavid Howells EM(cachefiles_coherency_check_ok, "OK ") \ 14572b95785SDavid Howells EM(cachefiles_coherency_check_type, "BAD type") \ 14672b95785SDavid Howells EM(cachefiles_coherency_check_xattr, "BAD xatt") \ 14772b95785SDavid Howells EM(cachefiles_coherency_set_fail, "SET fail") \ 14832e15003SDavid Howells EM(cachefiles_coherency_set_ok, "SET ok ") \ 14932e15003SDavid Howells EM(cachefiles_coherency_vol_check_cmp, "VOL BAD cmp ") \ 15032e15003SDavid Howells EM(cachefiles_coherency_vol_check_ok, "VOL OK ") \ 151413a4a6bSDavid Howells EM(cachefiles_coherency_vol_check_resv, "VOL BAD resv") \ 15232e15003SDavid Howells EM(cachefiles_coherency_vol_check_xattr,"VOL BAD xatt") \ 15332e15003SDavid Howells EM(cachefiles_coherency_vol_set_fail, "VOL SET fail") \ 15432e15003SDavid Howells E_(cachefiles_coherency_vol_set_ok, "VOL SET ok ") 15572b95785SDavid Howells 15613871badSDavid Howells #define cachefiles_trunc_traces \ 15713871badSDavid Howells EM(cachefiles_trunc_dio_adjust, "DIOADJ") \ 15813871badSDavid Howells EM(cachefiles_trunc_expand_tmpfile, "EXPTMP") \ 15913871badSDavid Howells E_(cachefiles_trunc_shrink, "SHRINK") 16013871badSDavid Howells 161047487c9SDavid Howells #define cachefiles_prepare_read_traces \ 162047487c9SDavid Howells EM(cachefiles_trace_read_after_eof, "after-eof ") \ 163047487c9SDavid Howells EM(cachefiles_trace_read_found_hole, "found-hole") \ 164047487c9SDavid Howells EM(cachefiles_trace_read_found_part, "found-part") \ 165047487c9SDavid Howells EM(cachefiles_trace_read_have_data, "have-data ") \ 166047487c9SDavid Howells EM(cachefiles_trace_read_no_data, "no-data ") \ 167047487c9SDavid Howells EM(cachefiles_trace_read_no_file, "no-file ") \ 168047487c9SDavid Howells EM(cachefiles_trace_read_seek_error, "seek-error") \ 169047487c9SDavid Howells E_(cachefiles_trace_read_seek_nxio, "seek-enxio") 170047487c9SDavid Howells 171ecf5a6ceSDavid Howells #define cachefiles_error_traces \ 172ecf5a6ceSDavid Howells EM(cachefiles_trace_fallocate_error, "fallocate") \ 173ecf5a6ceSDavid Howells EM(cachefiles_trace_getxattr_error, "getxattr") \ 174ecf5a6ceSDavid Howells EM(cachefiles_trace_link_error, "link") \ 175ecf5a6ceSDavid Howells EM(cachefiles_trace_lookup_error, "lookup") \ 176ecf5a6ceSDavid Howells EM(cachefiles_trace_mkdir_error, "mkdir") \ 177ecf5a6ceSDavid Howells EM(cachefiles_trace_notify_change_error, "notify_change") \ 178ecf5a6ceSDavid Howells EM(cachefiles_trace_open_error, "open") \ 179ecf5a6ceSDavid Howells EM(cachefiles_trace_read_error, "read") \ 180ecf5a6ceSDavid Howells EM(cachefiles_trace_remxattr_error, "remxattr") \ 181ecf5a6ceSDavid Howells EM(cachefiles_trace_rename_error, "rename") \ 182ecf5a6ceSDavid Howells EM(cachefiles_trace_seek_error, "seek") \ 183ecf5a6ceSDavid Howells EM(cachefiles_trace_setxattr_error, "setxattr") \ 184ecf5a6ceSDavid Howells EM(cachefiles_trace_statfs_error, "statfs") \ 185ecf5a6ceSDavid Howells EM(cachefiles_trace_tmpfile_error, "tmpfile") \ 186ecf5a6ceSDavid Howells EM(cachefiles_trace_trunc_error, "trunc") \ 187ecf5a6ceSDavid Howells EM(cachefiles_trace_unlink_error, "unlink") \ 188ecf5a6ceSDavid Howells E_(cachefiles_trace_write_error, "write") 18977443f61SDavid Howells 19077443f61SDavid Howells 19177443f61SDavid Howells /* 19277443f61SDavid Howells * Export enum symbols via userspace. 19377443f61SDavid Howells */ 19477443f61SDavid Howells #undef EM 19577443f61SDavid Howells #undef E_ 19677443f61SDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a); 19777443f61SDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a); 19877443f61SDavid Howells 19913871badSDavid Howells cachefiles_obj_kill_traces; 200df98e87fSDavid Howells cachefiles_obj_ref_traces; 20172b95785SDavid Howells cachefiles_coherency_traces; 20213871badSDavid Howells cachefiles_trunc_traces; 203047487c9SDavid Howells cachefiles_prepare_read_traces; 204ecf5a6ceSDavid Howells cachefiles_error_traces; 205ecf5a6ceSDavid Howells 20677443f61SDavid Howells /* 20777443f61SDavid Howells * Now redefine the EM() and E_() macros to map the enums to the strings that 20877443f61SDavid Howells * will be printed in the output. 20977443f61SDavid Howells */ 21077443f61SDavid Howells #undef EM 21177443f61SDavid Howells #undef E_ 21277443f61SDavid Howells #define EM(a, b) { a, b }, 21377443f61SDavid Howells #define E_(a, b) { a, b } 21477443f61SDavid Howells 21577443f61SDavid Howells 216df98e87fSDavid Howells TRACE_EVENT(cachefiles_ref, 217df98e87fSDavid Howells TP_PROTO(unsigned int object_debug_id, 218df98e87fSDavid Howells unsigned int cookie_debug_id, 219df98e87fSDavid Howells int usage, 220df98e87fSDavid Howells enum cachefiles_obj_ref_trace why), 221df98e87fSDavid Howells 222df98e87fSDavid Howells TP_ARGS(object_debug_id, cookie_debug_id, usage, why), 223df98e87fSDavid Howells 224df98e87fSDavid Howells /* Note that obj may be NULL */ 225df98e87fSDavid Howells TP_STRUCT__entry( 226df98e87fSDavid Howells __field(unsigned int, obj ) 227df98e87fSDavid Howells __field(unsigned int, cookie ) 228df98e87fSDavid Howells __field(enum cachefiles_obj_ref_trace, why ) 229df98e87fSDavid Howells __field(int, usage ) 230df98e87fSDavid Howells ), 231df98e87fSDavid Howells 232df98e87fSDavid Howells TP_fast_assign( 233df98e87fSDavid Howells __entry->obj = object_debug_id; 234df98e87fSDavid Howells __entry->cookie = cookie_debug_id; 235df98e87fSDavid Howells __entry->usage = usage; 236df98e87fSDavid Howells __entry->why = why; 237df98e87fSDavid Howells ), 238df98e87fSDavid Howells 239df98e87fSDavid Howells TP_printk("c=%08x o=%08x u=%d %s", 240df98e87fSDavid Howells __entry->cookie, __entry->obj, __entry->usage, 241df98e87fSDavid Howells __print_symbolic(__entry->why, cachefiles_obj_ref_traces)) 242df98e87fSDavid Howells ); 243df98e87fSDavid Howells 24413871badSDavid Howells TRACE_EVENT(cachefiles_lookup, 24513871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, 2468c39b8bcSDavid Howells struct dentry *dir, 24713871badSDavid Howells struct dentry *de), 24813871badSDavid Howells 2498c39b8bcSDavid Howells TP_ARGS(obj, dir, de), 25013871badSDavid Howells 25113871badSDavid Howells TP_STRUCT__entry( 25213871badSDavid Howells __field(unsigned int, obj ) 25313871badSDavid Howells __field(short, error ) 2548c39b8bcSDavid Howells __field(unsigned long, dino ) 25513871badSDavid Howells __field(unsigned long, ino ) 25613871badSDavid Howells ), 25713871badSDavid Howells 25813871badSDavid Howells TP_fast_assign( 2598c39b8bcSDavid Howells __entry->obj = obj ? obj->debug_id : 0; 2608c39b8bcSDavid Howells __entry->dino = d_backing_inode(dir)->i_ino; 26113871badSDavid Howells __entry->ino = (!IS_ERR(de) && d_backing_inode(de) ? 26213871badSDavid Howells d_backing_inode(de)->i_ino : 0); 26313871badSDavid Howells __entry->error = IS_ERR(de) ? PTR_ERR(de) : 0; 26413871badSDavid Howells ), 26513871badSDavid Howells 2668c39b8bcSDavid Howells TP_printk("o=%08x dB=%lx B=%lx e=%d", 2678c39b8bcSDavid Howells __entry->obj, __entry->dino, __entry->ino, __entry->error) 2688c39b8bcSDavid Howells ); 2698c39b8bcSDavid Howells 2708c39b8bcSDavid Howells TRACE_EVENT(cachefiles_mkdir, 2718c39b8bcSDavid Howells TP_PROTO(struct dentry *dir, struct dentry *subdir), 2728c39b8bcSDavid Howells 2738c39b8bcSDavid Howells TP_ARGS(dir, subdir), 2748c39b8bcSDavid Howells 2758c39b8bcSDavid Howells TP_STRUCT__entry( 2768c39b8bcSDavid Howells __field(unsigned int, dir ) 2778c39b8bcSDavid Howells __field(unsigned int, subdir ) 2788c39b8bcSDavid Howells ), 2798c39b8bcSDavid Howells 2808c39b8bcSDavid Howells TP_fast_assign( 2818c39b8bcSDavid Howells __entry->dir = d_backing_inode(dir)->i_ino; 2828c39b8bcSDavid Howells __entry->subdir = d_backing_inode(subdir)->i_ino; 2838c39b8bcSDavid Howells ), 2848c39b8bcSDavid Howells 2858c39b8bcSDavid Howells TP_printk("dB=%x sB=%x", 2868c39b8bcSDavid Howells __entry->dir, 2878c39b8bcSDavid Howells __entry->subdir) 28813871badSDavid Howells ); 28913871badSDavid Howells 29013871badSDavid Howells TRACE_EVENT(cachefiles_tmpfile, 29113871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, struct inode *backer), 29213871badSDavid Howells 29313871badSDavid Howells TP_ARGS(obj, backer), 29413871badSDavid Howells 29513871badSDavid Howells TP_STRUCT__entry( 29613871badSDavid Howells __field(unsigned int, obj ) 29713871badSDavid Howells __field(unsigned int, backer ) 29813871badSDavid Howells ), 29913871badSDavid Howells 30013871badSDavid Howells TP_fast_assign( 30113871badSDavid Howells __entry->obj = obj->debug_id; 30213871badSDavid Howells __entry->backer = backer->i_ino; 30313871badSDavid Howells ), 30413871badSDavid Howells 3058c39b8bcSDavid Howells TP_printk("o=%08x B=%x", 30613871badSDavid Howells __entry->obj, 30713871badSDavid Howells __entry->backer) 30813871badSDavid Howells ); 30913871badSDavid Howells 31013871badSDavid Howells TRACE_EVENT(cachefiles_link, 31113871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, struct inode *backer), 31213871badSDavid Howells 31313871badSDavid Howells TP_ARGS(obj, backer), 31413871badSDavid Howells 31513871badSDavid Howells TP_STRUCT__entry( 31613871badSDavid Howells __field(unsigned int, obj ) 31713871badSDavid Howells __field(unsigned int, backer ) 31813871badSDavid Howells ), 31913871badSDavid Howells 32013871badSDavid Howells TP_fast_assign( 32113871badSDavid Howells __entry->obj = obj->debug_id; 32213871badSDavid Howells __entry->backer = backer->i_ino; 32313871badSDavid Howells ), 32413871badSDavid Howells 3258c39b8bcSDavid Howells TP_printk("o=%08x B=%x", 32613871badSDavid Howells __entry->obj, 32713871badSDavid Howells __entry->backer) 32813871badSDavid Howells ); 32913871badSDavid Howells 33013871badSDavid Howells TRACE_EVENT(cachefiles_unlink, 33113871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, 3328c39b8bcSDavid Howells ino_t ino, 33313871badSDavid Howells enum fscache_why_object_killed why), 33413871badSDavid Howells 3358c39b8bcSDavid Howells TP_ARGS(obj, ino, why), 33613871badSDavid Howells 33713871badSDavid Howells /* Note that obj may be NULL */ 33813871badSDavid Howells TP_STRUCT__entry( 33913871badSDavid Howells __field(unsigned int, obj ) 3408c39b8bcSDavid Howells __field(unsigned int, ino ) 34113871badSDavid Howells __field(enum fscache_why_object_killed, why ) 34213871badSDavid Howells ), 34313871badSDavid Howells 34413871badSDavid Howells TP_fast_assign( 34513871badSDavid Howells __entry->obj = obj ? obj->debug_id : UINT_MAX; 3468c39b8bcSDavid Howells __entry->ino = ino; 34713871badSDavid Howells __entry->why = why; 34813871badSDavid Howells ), 34913871badSDavid Howells 3508c39b8bcSDavid Howells TP_printk("o=%08x B=%x w=%s", 3518c39b8bcSDavid Howells __entry->obj, __entry->ino, 35213871badSDavid Howells __print_symbolic(__entry->why, cachefiles_obj_kill_traces)) 35313871badSDavid Howells ); 35413871badSDavid Howells 35513871badSDavid Howells TRACE_EVENT(cachefiles_rename, 35613871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, 3578c39b8bcSDavid Howells ino_t ino, 35813871badSDavid Howells enum fscache_why_object_killed why), 35913871badSDavid Howells 3608c39b8bcSDavid Howells TP_ARGS(obj, ino, why), 36113871badSDavid Howells 36213871badSDavid Howells /* Note that obj may be NULL */ 36313871badSDavid Howells TP_STRUCT__entry( 36413871badSDavid Howells __field(unsigned int, obj ) 3658c39b8bcSDavid Howells __field(unsigned int, ino ) 36613871badSDavid Howells __field(enum fscache_why_object_killed, why ) 36713871badSDavid Howells ), 36813871badSDavid Howells 36913871badSDavid Howells TP_fast_assign( 37013871badSDavid Howells __entry->obj = obj ? obj->debug_id : UINT_MAX; 3718c39b8bcSDavid Howells __entry->ino = ino; 37213871badSDavid Howells __entry->why = why; 37313871badSDavid Howells ), 37413871badSDavid Howells 3758c39b8bcSDavid Howells TP_printk("o=%08x B=%x w=%s", 3768c39b8bcSDavid Howells __entry->obj, __entry->ino, 37713871badSDavid Howells __print_symbolic(__entry->why, cachefiles_obj_kill_traces)) 37813871badSDavid Howells ); 37913871badSDavid Howells 38072b95785SDavid Howells TRACE_EVENT(cachefiles_coherency, 38172b95785SDavid Howells TP_PROTO(struct cachefiles_object *obj, 38272b95785SDavid Howells ino_t ino, 38372b95785SDavid Howells enum cachefiles_content content, 38472b95785SDavid Howells enum cachefiles_coherency_trace why), 38572b95785SDavid Howells 38672b95785SDavid Howells TP_ARGS(obj, ino, content, why), 38772b95785SDavid Howells 38872b95785SDavid Howells /* Note that obj may be NULL */ 38972b95785SDavid Howells TP_STRUCT__entry( 39072b95785SDavid Howells __field(unsigned int, obj ) 39172b95785SDavid Howells __field(enum cachefiles_coherency_trace, why ) 39272b95785SDavid Howells __field(enum cachefiles_content, content ) 39372b95785SDavid Howells __field(u64, ino ) 39472b95785SDavid Howells ), 39572b95785SDavid Howells 39672b95785SDavid Howells TP_fast_assign( 39772b95785SDavid Howells __entry->obj = obj->debug_id; 39872b95785SDavid Howells __entry->why = why; 39972b95785SDavid Howells __entry->content = content; 40072b95785SDavid Howells __entry->ino = ino; 40172b95785SDavid Howells ), 40272b95785SDavid Howells 4038c39b8bcSDavid Howells TP_printk("o=%08x %s B=%llx c=%u", 40472b95785SDavid Howells __entry->obj, 40572b95785SDavid Howells __print_symbolic(__entry->why, cachefiles_coherency_traces), 40672b95785SDavid Howells __entry->ino, 40772b95785SDavid Howells __entry->content) 40872b95785SDavid Howells ); 40972b95785SDavid Howells 41032e15003SDavid Howells TRACE_EVENT(cachefiles_vol_coherency, 41132e15003SDavid Howells TP_PROTO(struct cachefiles_volume *volume, 41232e15003SDavid Howells ino_t ino, 41332e15003SDavid Howells enum cachefiles_coherency_trace why), 41432e15003SDavid Howells 41532e15003SDavid Howells TP_ARGS(volume, ino, why), 41632e15003SDavid Howells 41732e15003SDavid Howells /* Note that obj may be NULL */ 41832e15003SDavid Howells TP_STRUCT__entry( 41932e15003SDavid Howells __field(unsigned int, vol ) 42032e15003SDavid Howells __field(enum cachefiles_coherency_trace, why ) 42132e15003SDavid Howells __field(u64, ino ) 42232e15003SDavid Howells ), 42332e15003SDavid Howells 42432e15003SDavid Howells TP_fast_assign( 42532e15003SDavid Howells __entry->vol = volume->vcookie->debug_id; 42632e15003SDavid Howells __entry->why = why; 42732e15003SDavid Howells __entry->ino = ino; 42832e15003SDavid Howells ), 42932e15003SDavid Howells 4308c39b8bcSDavid Howells TP_printk("V=%08x %s B=%llx", 43132e15003SDavid Howells __entry->vol, 43232e15003SDavid Howells __print_symbolic(__entry->why, cachefiles_coherency_traces), 43332e15003SDavid Howells __entry->ino) 43432e15003SDavid Howells ); 43532e15003SDavid Howells 436047487c9SDavid Howells TRACE_EVENT(cachefiles_prep_read, 43786692475SJingbo Xu TP_PROTO(struct cachefiles_object *obj, 43886692475SJingbo Xu loff_t start, 43986692475SJingbo Xu size_t len, 44086692475SJingbo Xu unsigned short flags, 4416a19114bSDavid Howells enum netfs_io_source source, 442047487c9SDavid Howells enum cachefiles_prepare_read_trace why, 44386692475SJingbo Xu ino_t cache_inode, ino_t netfs_inode), 444047487c9SDavid Howells 44586692475SJingbo Xu TP_ARGS(obj, start, len, flags, source, why, cache_inode, netfs_inode), 446047487c9SDavid Howells 447047487c9SDavid Howells TP_STRUCT__entry( 44886692475SJingbo Xu __field(unsigned int, obj ) 449047487c9SDavid Howells __field(unsigned short, flags ) 4506a19114bSDavid Howells __field(enum netfs_io_source, source ) 451047487c9SDavid Howells __field(enum cachefiles_prepare_read_trace, why ) 452047487c9SDavid Howells __field(size_t, len ) 453047487c9SDavid Howells __field(loff_t, start ) 454047487c9SDavid Howells __field(unsigned int, netfs_inode ) 455047487c9SDavid Howells __field(unsigned int, cache_inode ) 456047487c9SDavid Howells ), 457047487c9SDavid Howells 458047487c9SDavid Howells TP_fast_assign( 45986692475SJingbo Xu __entry->obj = obj ? obj->debug_id : 0; 46086692475SJingbo Xu __entry->flags = flags; 461047487c9SDavid Howells __entry->source = source; 462047487c9SDavid Howells __entry->why = why; 46386692475SJingbo Xu __entry->len = len; 46486692475SJingbo Xu __entry->start = start; 46586692475SJingbo Xu __entry->netfs_inode = netfs_inode; 466047487c9SDavid Howells __entry->cache_inode = cache_inode; 467047487c9SDavid Howells ), 468047487c9SDavid Howells 46986692475SJingbo Xu TP_printk("o=%08x %s %s f=%02x s=%llx %zx ni=%x B=%x", 47086692475SJingbo Xu __entry->obj, 471047487c9SDavid Howells __print_symbolic(__entry->source, netfs_sreq_sources), 472047487c9SDavid Howells __print_symbolic(__entry->why, cachefiles_prepare_read_traces), 473047487c9SDavid Howells __entry->flags, 474047487c9SDavid Howells __entry->start, __entry->len, 475047487c9SDavid Howells __entry->netfs_inode, __entry->cache_inode) 476047487c9SDavid Howells ); 477047487c9SDavid Howells 478047487c9SDavid Howells TRACE_EVENT(cachefiles_read, 479047487c9SDavid Howells TP_PROTO(struct cachefiles_object *obj, 480047487c9SDavid Howells struct inode *backer, 481047487c9SDavid Howells loff_t start, 482047487c9SDavid Howells size_t len), 483047487c9SDavid Howells 484047487c9SDavid Howells TP_ARGS(obj, backer, start, len), 485047487c9SDavid Howells 486047487c9SDavid Howells TP_STRUCT__entry( 487047487c9SDavid Howells __field(unsigned int, obj ) 488047487c9SDavid Howells __field(unsigned int, backer ) 489047487c9SDavid Howells __field(size_t, len ) 490047487c9SDavid Howells __field(loff_t, start ) 491047487c9SDavid Howells ), 492047487c9SDavid Howells 493047487c9SDavid Howells TP_fast_assign( 494047487c9SDavid Howells __entry->obj = obj->debug_id; 495047487c9SDavid Howells __entry->backer = backer->i_ino; 496047487c9SDavid Howells __entry->start = start; 497047487c9SDavid Howells __entry->len = len; 498047487c9SDavid Howells ), 499047487c9SDavid Howells 5008c39b8bcSDavid Howells TP_printk("o=%08x B=%x s=%llx l=%zx", 501047487c9SDavid Howells __entry->obj, 502047487c9SDavid Howells __entry->backer, 503047487c9SDavid Howells __entry->start, 504047487c9SDavid Howells __entry->len) 505047487c9SDavid Howells ); 506047487c9SDavid Howells 507047487c9SDavid Howells TRACE_EVENT(cachefiles_write, 508047487c9SDavid Howells TP_PROTO(struct cachefiles_object *obj, 509047487c9SDavid Howells struct inode *backer, 510047487c9SDavid Howells loff_t start, 511047487c9SDavid Howells size_t len), 512047487c9SDavid Howells 513047487c9SDavid Howells TP_ARGS(obj, backer, start, len), 514047487c9SDavid Howells 515047487c9SDavid Howells TP_STRUCT__entry( 516047487c9SDavid Howells __field(unsigned int, obj ) 517047487c9SDavid Howells __field(unsigned int, backer ) 518047487c9SDavid Howells __field(size_t, len ) 519047487c9SDavid Howells __field(loff_t, start ) 520047487c9SDavid Howells ), 521047487c9SDavid Howells 522047487c9SDavid Howells TP_fast_assign( 523047487c9SDavid Howells __entry->obj = obj->debug_id; 524047487c9SDavid Howells __entry->backer = backer->i_ino; 525047487c9SDavid Howells __entry->start = start; 526047487c9SDavid Howells __entry->len = len; 527047487c9SDavid Howells ), 528047487c9SDavid Howells 5298c39b8bcSDavid Howells TP_printk("o=%08x B=%x s=%llx l=%zx", 530047487c9SDavid Howells __entry->obj, 531047487c9SDavid Howells __entry->backer, 532047487c9SDavid Howells __entry->start, 533047487c9SDavid Howells __entry->len) 534047487c9SDavid Howells ); 535047487c9SDavid Howells 53613871badSDavid Howells TRACE_EVENT(cachefiles_trunc, 53713871badSDavid Howells TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 53813871badSDavid Howells loff_t from, loff_t to, enum cachefiles_trunc_trace why), 53913871badSDavid Howells 54013871badSDavid Howells TP_ARGS(obj, backer, from, to, why), 54113871badSDavid Howells 54213871badSDavid Howells TP_STRUCT__entry( 54313871badSDavid Howells __field(unsigned int, obj ) 54413871badSDavid Howells __field(unsigned int, backer ) 54513871badSDavid Howells __field(enum cachefiles_trunc_trace, why ) 54613871badSDavid Howells __field(loff_t, from ) 54713871badSDavid Howells __field(loff_t, to ) 54813871badSDavid Howells ), 54913871badSDavid Howells 55013871badSDavid Howells TP_fast_assign( 55113871badSDavid Howells __entry->obj = obj->debug_id; 55213871badSDavid Howells __entry->backer = backer->i_ino; 55313871badSDavid Howells __entry->from = from; 55413871badSDavid Howells __entry->to = to; 55513871badSDavid Howells __entry->why = why; 55613871badSDavid Howells ), 55713871badSDavid Howells 5588c39b8bcSDavid Howells TP_printk("o=%08x B=%x %s l=%llx->%llx", 55913871badSDavid Howells __entry->obj, 56013871badSDavid Howells __entry->backer, 56113871badSDavid Howells __print_symbolic(__entry->why, cachefiles_trunc_traces), 56213871badSDavid Howells __entry->from, 56313871badSDavid Howells __entry->to) 56413871badSDavid Howells ); 56513871badSDavid Howells 5661bd9c4e4SDavid Howells TRACE_EVENT(cachefiles_mark_active, 5671bd9c4e4SDavid Howells TP_PROTO(struct cachefiles_object *obj, 5681bd9c4e4SDavid Howells struct inode *inode), 5691bd9c4e4SDavid Howells 5701bd9c4e4SDavid Howells TP_ARGS(obj, inode), 5711bd9c4e4SDavid Howells 5721bd9c4e4SDavid Howells /* Note that obj may be NULL */ 5731bd9c4e4SDavid Howells TP_STRUCT__entry( 5741bd9c4e4SDavid Howells __field(unsigned int, obj ) 5751bd9c4e4SDavid Howells __field(ino_t, inode ) 5761bd9c4e4SDavid Howells ), 5771bd9c4e4SDavid Howells 5781bd9c4e4SDavid Howells TP_fast_assign( 5791bd9c4e4SDavid Howells __entry->obj = obj ? obj->debug_id : 0; 5801bd9c4e4SDavid Howells __entry->inode = inode->i_ino; 5811bd9c4e4SDavid Howells ), 5821bd9c4e4SDavid Howells 5838c39b8bcSDavid Howells TP_printk("o=%08x B=%lx", 5841bd9c4e4SDavid Howells __entry->obj, __entry->inode) 5851bd9c4e4SDavid Howells ); 5861bd9c4e4SDavid Howells 587b64a3314SDavid Howells TRACE_EVENT(cachefiles_mark_failed, 588b64a3314SDavid Howells TP_PROTO(struct cachefiles_object *obj, 589b64a3314SDavid Howells struct inode *inode), 590b64a3314SDavid Howells 591b64a3314SDavid Howells TP_ARGS(obj, inode), 592b64a3314SDavid Howells 593b64a3314SDavid Howells /* Note that obj may be NULL */ 594b64a3314SDavid Howells TP_STRUCT__entry( 595b64a3314SDavid Howells __field(unsigned int, obj ) 596b64a3314SDavid Howells __field(ino_t, inode ) 597b64a3314SDavid Howells ), 598b64a3314SDavid Howells 599b64a3314SDavid Howells TP_fast_assign( 600b64a3314SDavid Howells __entry->obj = obj ? obj->debug_id : 0; 601b64a3314SDavid Howells __entry->inode = inode->i_ino; 602b64a3314SDavid Howells ), 603b64a3314SDavid Howells 604b64a3314SDavid Howells TP_printk("o=%08x B=%lx", 605b64a3314SDavid Howells __entry->obj, __entry->inode) 606b64a3314SDavid Howells ); 607b64a3314SDavid Howells 6081bd9c4e4SDavid Howells TRACE_EVENT(cachefiles_mark_inactive, 6091bd9c4e4SDavid Howells TP_PROTO(struct cachefiles_object *obj, 6101bd9c4e4SDavid Howells struct inode *inode), 6111bd9c4e4SDavid Howells 6121bd9c4e4SDavid Howells TP_ARGS(obj, inode), 6131bd9c4e4SDavid Howells 6141bd9c4e4SDavid Howells /* Note that obj may be NULL */ 6151bd9c4e4SDavid Howells TP_STRUCT__entry( 6161bd9c4e4SDavid Howells __field(unsigned int, obj ) 6171bd9c4e4SDavid Howells __field(ino_t, inode ) 6181bd9c4e4SDavid Howells ), 6191bd9c4e4SDavid Howells 6201bd9c4e4SDavid Howells TP_fast_assign( 6211bd9c4e4SDavid Howells __entry->obj = obj ? obj->debug_id : 0; 6221bd9c4e4SDavid Howells __entry->inode = inode->i_ino; 6231bd9c4e4SDavid Howells ), 6241bd9c4e4SDavid Howells 6258c39b8bcSDavid Howells TP_printk("o=%08x B=%lx", 6261bd9c4e4SDavid Howells __entry->obj, __entry->inode) 6271bd9c4e4SDavid Howells ); 6281bd9c4e4SDavid Howells 629ecf5a6ceSDavid Howells TRACE_EVENT(cachefiles_vfs_error, 630ecf5a6ceSDavid Howells TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 631ecf5a6ceSDavid Howells int error, enum cachefiles_error_trace where), 632ecf5a6ceSDavid Howells 633ecf5a6ceSDavid Howells TP_ARGS(obj, backer, error, where), 634ecf5a6ceSDavid Howells 635ecf5a6ceSDavid Howells TP_STRUCT__entry( 636ecf5a6ceSDavid Howells __field(unsigned int, obj ) 637ecf5a6ceSDavid Howells __field(unsigned int, backer ) 638ecf5a6ceSDavid Howells __field(enum cachefiles_error_trace, where ) 639ecf5a6ceSDavid Howells __field(short, error ) 640ecf5a6ceSDavid Howells ), 641ecf5a6ceSDavid Howells 642ecf5a6ceSDavid Howells TP_fast_assign( 643ecf5a6ceSDavid Howells __entry->obj = obj ? obj->debug_id : 0; 644ecf5a6ceSDavid Howells __entry->backer = backer->i_ino; 645ecf5a6ceSDavid Howells __entry->error = error; 646ecf5a6ceSDavid Howells __entry->where = where; 647ecf5a6ceSDavid Howells ), 648ecf5a6ceSDavid Howells 6498c39b8bcSDavid Howells TP_printk("o=%08x B=%x %s e=%d", 650ecf5a6ceSDavid Howells __entry->obj, 651ecf5a6ceSDavid Howells __entry->backer, 652ecf5a6ceSDavid Howells __print_symbolic(__entry->where, cachefiles_error_traces), 653ecf5a6ceSDavid Howells __entry->error) 654ecf5a6ceSDavid Howells ); 655ecf5a6ceSDavid Howells 656ecf5a6ceSDavid Howells TRACE_EVENT(cachefiles_io_error, 657ecf5a6ceSDavid Howells TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 658ecf5a6ceSDavid Howells int error, enum cachefiles_error_trace where), 659ecf5a6ceSDavid Howells 660ecf5a6ceSDavid Howells TP_ARGS(obj, backer, error, where), 661ecf5a6ceSDavid Howells 662ecf5a6ceSDavid Howells TP_STRUCT__entry( 663ecf5a6ceSDavid Howells __field(unsigned int, obj ) 664ecf5a6ceSDavid Howells __field(unsigned int, backer ) 665ecf5a6ceSDavid Howells __field(enum cachefiles_error_trace, where ) 666ecf5a6ceSDavid Howells __field(short, error ) 667ecf5a6ceSDavid Howells ), 668ecf5a6ceSDavid Howells 669ecf5a6ceSDavid Howells TP_fast_assign( 670ecf5a6ceSDavid Howells __entry->obj = obj ? obj->debug_id : 0; 671ecf5a6ceSDavid Howells __entry->backer = backer->i_ino; 672ecf5a6ceSDavid Howells __entry->error = error; 673ecf5a6ceSDavid Howells __entry->where = where; 674ecf5a6ceSDavid Howells ), 675ecf5a6ceSDavid Howells 6768c39b8bcSDavid Howells TP_printk("o=%08x B=%x %s e=%d", 677ecf5a6ceSDavid Howells __entry->obj, 678ecf5a6ceSDavid Howells __entry->backer, 679ecf5a6ceSDavid Howells __print_symbolic(__entry->where, cachefiles_error_traces), 680ecf5a6ceSDavid Howells __entry->error) 681ecf5a6ceSDavid Howells ); 682ecf5a6ceSDavid Howells 6831519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_open, 6841519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg, 6851519670eSJeffle Xu struct cachefiles_open *load), 6861519670eSJeffle Xu 6871519670eSJeffle Xu TP_ARGS(obj, msg, load), 6881519670eSJeffle Xu 6891519670eSJeffle Xu TP_STRUCT__entry( 6901519670eSJeffle Xu __field(unsigned int, obj ) 6911519670eSJeffle Xu __field(unsigned int, msg_id ) 6921519670eSJeffle Xu __field(unsigned int, object_id ) 6931519670eSJeffle Xu __field(unsigned int, fd ) 6941519670eSJeffle Xu __field(unsigned int, flags ) 6951519670eSJeffle Xu ), 6961519670eSJeffle Xu 6971519670eSJeffle Xu TP_fast_assign( 6981519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 6991519670eSJeffle Xu __entry->msg_id = msg->msg_id; 7001519670eSJeffle Xu __entry->object_id = msg->object_id; 7011519670eSJeffle Xu __entry->fd = load->fd; 7021519670eSJeffle Xu __entry->flags = load->flags; 7031519670eSJeffle Xu ), 7041519670eSJeffle Xu 7051519670eSJeffle Xu TP_printk("o=%08x mid=%x oid=%x fd=%d f=%x", 7061519670eSJeffle Xu __entry->obj, 7071519670eSJeffle Xu __entry->msg_id, 7081519670eSJeffle Xu __entry->object_id, 7091519670eSJeffle Xu __entry->fd, 7101519670eSJeffle Xu __entry->flags) 7111519670eSJeffle Xu ); 7121519670eSJeffle Xu 7131519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_copen, 7141519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id, 7151519670eSJeffle Xu long len), 7161519670eSJeffle Xu 7171519670eSJeffle Xu TP_ARGS(obj, msg_id, len), 7181519670eSJeffle Xu 7191519670eSJeffle Xu TP_STRUCT__entry( 7201519670eSJeffle Xu __field(unsigned int, obj ) 7211519670eSJeffle Xu __field(unsigned int, msg_id ) 7221519670eSJeffle Xu __field(long, len ) 7231519670eSJeffle Xu ), 7241519670eSJeffle Xu 7251519670eSJeffle Xu TP_fast_assign( 7261519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 7271519670eSJeffle Xu __entry->msg_id = msg_id; 7281519670eSJeffle Xu __entry->len = len; 7291519670eSJeffle Xu ), 7301519670eSJeffle Xu 7311519670eSJeffle Xu TP_printk("o=%08x mid=%x l=%lx", 7321519670eSJeffle Xu __entry->obj, 7331519670eSJeffle Xu __entry->msg_id, 7341519670eSJeffle Xu __entry->len) 7351519670eSJeffle Xu ); 7361519670eSJeffle Xu 7371519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_close, 7381519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg), 7391519670eSJeffle Xu 7401519670eSJeffle Xu TP_ARGS(obj, msg), 7411519670eSJeffle Xu 7421519670eSJeffle Xu TP_STRUCT__entry( 7431519670eSJeffle Xu __field(unsigned int, obj ) 7441519670eSJeffle Xu __field(unsigned int, msg_id ) 7451519670eSJeffle Xu __field(unsigned int, object_id ) 7461519670eSJeffle Xu ), 7471519670eSJeffle Xu 7481519670eSJeffle Xu TP_fast_assign( 7491519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 7501519670eSJeffle Xu __entry->msg_id = msg->msg_id; 7511519670eSJeffle Xu __entry->object_id = msg->object_id; 7521519670eSJeffle Xu ), 7531519670eSJeffle Xu 7541519670eSJeffle Xu TP_printk("o=%08x mid=%x oid=%x", 7551519670eSJeffle Xu __entry->obj, 7561519670eSJeffle Xu __entry->msg_id, 7571519670eSJeffle Xu __entry->object_id) 7581519670eSJeffle Xu ); 7591519670eSJeffle Xu 7601519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_read, 7611519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, struct cachefiles_msg *msg, 7621519670eSJeffle Xu struct cachefiles_read *load), 7631519670eSJeffle Xu 7641519670eSJeffle Xu TP_ARGS(obj, msg, load), 7651519670eSJeffle Xu 7661519670eSJeffle Xu TP_STRUCT__entry( 7671519670eSJeffle Xu __field(unsigned int, obj ) 7681519670eSJeffle Xu __field(unsigned int, msg_id ) 7691519670eSJeffle Xu __field(unsigned int, object_id ) 7701519670eSJeffle Xu __field(loff_t, start ) 7711519670eSJeffle Xu __field(size_t, len ) 7721519670eSJeffle Xu ), 7731519670eSJeffle Xu 7741519670eSJeffle Xu TP_fast_assign( 7751519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 7761519670eSJeffle Xu __entry->msg_id = msg->msg_id; 7771519670eSJeffle Xu __entry->object_id = msg->object_id; 7781519670eSJeffle Xu __entry->start = load->off; 7791519670eSJeffle Xu __entry->len = load->len; 7801519670eSJeffle Xu ), 7811519670eSJeffle Xu 7821519670eSJeffle Xu TP_printk("o=%08x mid=%x oid=%x s=%llx l=%zx", 7831519670eSJeffle Xu __entry->obj, 7841519670eSJeffle Xu __entry->msg_id, 7851519670eSJeffle Xu __entry->object_id, 7861519670eSJeffle Xu __entry->start, 7871519670eSJeffle Xu __entry->len) 7881519670eSJeffle Xu ); 7891519670eSJeffle Xu 7901519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_cread, 7911519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, unsigned int msg_id), 7921519670eSJeffle Xu 7931519670eSJeffle Xu TP_ARGS(obj, msg_id), 7941519670eSJeffle Xu 7951519670eSJeffle Xu TP_STRUCT__entry( 7961519670eSJeffle Xu __field(unsigned int, obj ) 7971519670eSJeffle Xu __field(unsigned int, msg_id ) 7981519670eSJeffle Xu ), 7991519670eSJeffle Xu 8001519670eSJeffle Xu TP_fast_assign( 8011519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 8021519670eSJeffle Xu __entry->msg_id = msg_id; 8031519670eSJeffle Xu ), 8041519670eSJeffle Xu 8051519670eSJeffle Xu TP_printk("o=%08x mid=%x", 8061519670eSJeffle Xu __entry->obj, 8071519670eSJeffle Xu __entry->msg_id) 8081519670eSJeffle Xu ); 8091519670eSJeffle Xu 8101519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_fd_write, 8111519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, struct inode *backer, 8121519670eSJeffle Xu loff_t start, size_t len), 8131519670eSJeffle Xu 8141519670eSJeffle Xu TP_ARGS(obj, backer, start, len), 8151519670eSJeffle Xu 8161519670eSJeffle Xu TP_STRUCT__entry( 8171519670eSJeffle Xu __field(unsigned int, obj ) 8181519670eSJeffle Xu __field(unsigned int, backer ) 8191519670eSJeffle Xu __field(loff_t, start ) 8201519670eSJeffle Xu __field(size_t, len ) 8211519670eSJeffle Xu ), 8221519670eSJeffle Xu 8231519670eSJeffle Xu TP_fast_assign( 8241519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 8251519670eSJeffle Xu __entry->backer = backer->i_ino; 8261519670eSJeffle Xu __entry->start = start; 8271519670eSJeffle Xu __entry->len = len; 8281519670eSJeffle Xu ), 8291519670eSJeffle Xu 8301519670eSJeffle Xu TP_printk("o=%08x iB=%x s=%llx l=%zx", 8311519670eSJeffle Xu __entry->obj, 8321519670eSJeffle Xu __entry->backer, 8331519670eSJeffle Xu __entry->start, 8341519670eSJeffle Xu __entry->len) 8351519670eSJeffle Xu ); 8361519670eSJeffle Xu 8371519670eSJeffle Xu TRACE_EVENT(cachefiles_ondemand_fd_release, 8381519670eSJeffle Xu TP_PROTO(struct cachefiles_object *obj, int object_id), 8391519670eSJeffle Xu 8401519670eSJeffle Xu TP_ARGS(obj, object_id), 8411519670eSJeffle Xu 8421519670eSJeffle Xu TP_STRUCT__entry( 8431519670eSJeffle Xu __field(unsigned int, obj ) 8441519670eSJeffle Xu __field(unsigned int, object_id ) 8451519670eSJeffle Xu ), 8461519670eSJeffle Xu 8471519670eSJeffle Xu TP_fast_assign( 8481519670eSJeffle Xu __entry->obj = obj ? obj->debug_id : 0; 8491519670eSJeffle Xu __entry->object_id = object_id; 8501519670eSJeffle Xu ), 8511519670eSJeffle Xu 8521519670eSJeffle Xu TP_printk("o=%08x oid=%x", 8531519670eSJeffle Xu __entry->obj, 8541519670eSJeffle Xu __entry->object_id) 8551519670eSJeffle Xu ); 8561519670eSJeffle Xu 85777443f61SDavid Howells #endif /* _TRACE_CACHEFILES_H */ 85877443f61SDavid Howells 85977443f61SDavid Howells /* This part must be outside protection */ 86077443f61SDavid Howells #include <trace/define_trace.h> 861