162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com> 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#undef TRACE_SYSTEM 662306a36Sopenharmony_ci#define TRACE_SYSTEM nfs4 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#if !defined(_TRACE_NFS4_H) || defined(TRACE_HEADER_MULTI_READ) 962306a36Sopenharmony_ci#define _TRACE_NFS4_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/tracepoint.h> 1262306a36Sopenharmony_ci#include <trace/misc/sunrpc.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <trace/misc/fs.h> 1562306a36Sopenharmony_ci#include <trace/misc/nfs.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define show_nfs_fattr_flags(valid) \ 1862306a36Sopenharmony_ci __print_flags((unsigned long)valid, "|", \ 1962306a36Sopenharmony_ci { NFS_ATTR_FATTR_TYPE, "TYPE" }, \ 2062306a36Sopenharmony_ci { NFS_ATTR_FATTR_MODE, "MODE" }, \ 2162306a36Sopenharmony_ci { NFS_ATTR_FATTR_NLINK, "NLINK" }, \ 2262306a36Sopenharmony_ci { NFS_ATTR_FATTR_OWNER, "OWNER" }, \ 2362306a36Sopenharmony_ci { NFS_ATTR_FATTR_GROUP, "GROUP" }, \ 2462306a36Sopenharmony_ci { NFS_ATTR_FATTR_RDEV, "RDEV" }, \ 2562306a36Sopenharmony_ci { NFS_ATTR_FATTR_SIZE, "SIZE" }, \ 2662306a36Sopenharmony_ci { NFS_ATTR_FATTR_FSID, "FSID" }, \ 2762306a36Sopenharmony_ci { NFS_ATTR_FATTR_FILEID, "FILEID" }, \ 2862306a36Sopenharmony_ci { NFS_ATTR_FATTR_ATIME, "ATIME" }, \ 2962306a36Sopenharmony_ci { NFS_ATTR_FATTR_MTIME, "MTIME" }, \ 3062306a36Sopenharmony_ci { NFS_ATTR_FATTR_CTIME, "CTIME" }, \ 3162306a36Sopenharmony_ci { NFS_ATTR_FATTR_CHANGE, "CHANGE" }, \ 3262306a36Sopenharmony_ci { NFS_ATTR_FATTR_OWNER_NAME, "OWNER_NAME" }, \ 3362306a36Sopenharmony_ci { NFS_ATTR_FATTR_GROUP_NAME, "GROUP_NAME" }) 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_clientid_event, 3662306a36Sopenharmony_ci TP_PROTO( 3762306a36Sopenharmony_ci const struct nfs_client *clp, 3862306a36Sopenharmony_ci int error 3962306a36Sopenharmony_ci ), 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci TP_ARGS(clp, error), 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci TP_STRUCT__entry( 4462306a36Sopenharmony_ci __string(dstaddr, clp->cl_hostname) 4562306a36Sopenharmony_ci __field(unsigned long, error) 4662306a36Sopenharmony_ci ), 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci TP_fast_assign( 4962306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 5062306a36Sopenharmony_ci __assign_str(dstaddr, clp->cl_hostname); 5162306a36Sopenharmony_ci ), 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci TP_printk( 5462306a36Sopenharmony_ci "error=%ld (%s) dstaddr=%s", 5562306a36Sopenharmony_ci -__entry->error, 5662306a36Sopenharmony_ci show_nfs4_status(__entry->error), 5762306a36Sopenharmony_ci __get_str(dstaddr) 5862306a36Sopenharmony_ci ) 5962306a36Sopenharmony_ci); 6062306a36Sopenharmony_ci#define DEFINE_NFS4_CLIENTID_EVENT(name) \ 6162306a36Sopenharmony_ci DEFINE_EVENT(nfs4_clientid_event, name, \ 6262306a36Sopenharmony_ci TP_PROTO( \ 6362306a36Sopenharmony_ci const struct nfs_client *clp, \ 6462306a36Sopenharmony_ci int error \ 6562306a36Sopenharmony_ci ), \ 6662306a36Sopenharmony_ci TP_ARGS(clp, error)) 6762306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_setclientid); 6862306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_setclientid_confirm); 6962306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_renew); 7062306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_renew_async); 7162306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 7262306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_exchange_id); 7362306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_create_session); 7462306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_destroy_session); 7562306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_destroy_clientid); 7662306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_bind_conn_to_session); 7762306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_sequence); 7862306a36Sopenharmony_ciDEFINE_NFS4_CLIENTID_EVENT(nfs4_reclaim_complete); 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ciTRACE_EVENT(nfs4_sequence_done, 8162306a36Sopenharmony_ci TP_PROTO( 8262306a36Sopenharmony_ci const struct nfs4_session *session, 8362306a36Sopenharmony_ci const struct nfs4_sequence_res *res 8462306a36Sopenharmony_ci ), 8562306a36Sopenharmony_ci TP_ARGS(session, res), 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci TP_STRUCT__entry( 8862306a36Sopenharmony_ci __field(unsigned int, session) 8962306a36Sopenharmony_ci __field(unsigned int, slot_nr) 9062306a36Sopenharmony_ci __field(unsigned int, seq_nr) 9162306a36Sopenharmony_ci __field(unsigned int, highest_slotid) 9262306a36Sopenharmony_ci __field(unsigned int, target_highest_slotid) 9362306a36Sopenharmony_ci __field(unsigned long, status_flags) 9462306a36Sopenharmony_ci __field(unsigned long, error) 9562306a36Sopenharmony_ci ), 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci TP_fast_assign( 9862306a36Sopenharmony_ci const struct nfs4_slot *sr_slot = res->sr_slot; 9962306a36Sopenharmony_ci __entry->session = nfs_session_id_hash(&session->sess_id); 10062306a36Sopenharmony_ci __entry->slot_nr = sr_slot->slot_nr; 10162306a36Sopenharmony_ci __entry->seq_nr = sr_slot->seq_nr; 10262306a36Sopenharmony_ci __entry->highest_slotid = res->sr_highest_slotid; 10362306a36Sopenharmony_ci __entry->target_highest_slotid = 10462306a36Sopenharmony_ci res->sr_target_highest_slotid; 10562306a36Sopenharmony_ci __entry->status_flags = res->sr_status_flags; 10662306a36Sopenharmony_ci __entry->error = res->sr_status < 0 ? 10762306a36Sopenharmony_ci -res->sr_status : 0; 10862306a36Sopenharmony_ci ), 10962306a36Sopenharmony_ci TP_printk( 11062306a36Sopenharmony_ci "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " 11162306a36Sopenharmony_ci "highest_slotid=%u target_highest_slotid=%u " 11262306a36Sopenharmony_ci "status_flags=0x%lx (%s)", 11362306a36Sopenharmony_ci -__entry->error, 11462306a36Sopenharmony_ci show_nfs4_status(__entry->error), 11562306a36Sopenharmony_ci __entry->session, 11662306a36Sopenharmony_ci __entry->slot_nr, 11762306a36Sopenharmony_ci __entry->seq_nr, 11862306a36Sopenharmony_ci __entry->highest_slotid, 11962306a36Sopenharmony_ci __entry->target_highest_slotid, 12062306a36Sopenharmony_ci __entry->status_flags, 12162306a36Sopenharmony_ci show_nfs4_seq4_status(__entry->status_flags) 12262306a36Sopenharmony_ci ) 12362306a36Sopenharmony_ci); 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_cistruct cb_sequenceargs; 12662306a36Sopenharmony_cistruct cb_sequenceres; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ciTRACE_EVENT(nfs4_cb_sequence, 12962306a36Sopenharmony_ci TP_PROTO( 13062306a36Sopenharmony_ci const struct cb_sequenceargs *args, 13162306a36Sopenharmony_ci const struct cb_sequenceres *res, 13262306a36Sopenharmony_ci __be32 status 13362306a36Sopenharmony_ci ), 13462306a36Sopenharmony_ci TP_ARGS(args, res, status), 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci TP_STRUCT__entry( 13762306a36Sopenharmony_ci __field(unsigned int, session) 13862306a36Sopenharmony_ci __field(unsigned int, slot_nr) 13962306a36Sopenharmony_ci __field(unsigned int, seq_nr) 14062306a36Sopenharmony_ci __field(unsigned int, highest_slotid) 14162306a36Sopenharmony_ci __field(unsigned int, cachethis) 14262306a36Sopenharmony_ci __field(unsigned long, error) 14362306a36Sopenharmony_ci ), 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci TP_fast_assign( 14662306a36Sopenharmony_ci __entry->session = nfs_session_id_hash(&args->csa_sessionid); 14762306a36Sopenharmony_ci __entry->slot_nr = args->csa_slotid; 14862306a36Sopenharmony_ci __entry->seq_nr = args->csa_sequenceid; 14962306a36Sopenharmony_ci __entry->highest_slotid = args->csa_highestslotid; 15062306a36Sopenharmony_ci __entry->cachethis = args->csa_cachethis; 15162306a36Sopenharmony_ci __entry->error = be32_to_cpu(status); 15262306a36Sopenharmony_ci ), 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci TP_printk( 15562306a36Sopenharmony_ci "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " 15662306a36Sopenharmony_ci "highest_slotid=%u", 15762306a36Sopenharmony_ci -__entry->error, 15862306a36Sopenharmony_ci show_nfs4_status(__entry->error), 15962306a36Sopenharmony_ci __entry->session, 16062306a36Sopenharmony_ci __entry->slot_nr, 16162306a36Sopenharmony_ci __entry->seq_nr, 16262306a36Sopenharmony_ci __entry->highest_slotid 16362306a36Sopenharmony_ci ) 16462306a36Sopenharmony_ci); 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ciTRACE_EVENT(nfs4_cb_seqid_err, 16762306a36Sopenharmony_ci TP_PROTO( 16862306a36Sopenharmony_ci const struct cb_sequenceargs *args, 16962306a36Sopenharmony_ci __be32 status 17062306a36Sopenharmony_ci ), 17162306a36Sopenharmony_ci TP_ARGS(args, status), 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci TP_STRUCT__entry( 17462306a36Sopenharmony_ci __field(unsigned int, session) 17562306a36Sopenharmony_ci __field(unsigned int, slot_nr) 17662306a36Sopenharmony_ci __field(unsigned int, seq_nr) 17762306a36Sopenharmony_ci __field(unsigned int, highest_slotid) 17862306a36Sopenharmony_ci __field(unsigned int, cachethis) 17962306a36Sopenharmony_ci __field(unsigned long, error) 18062306a36Sopenharmony_ci ), 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci TP_fast_assign( 18362306a36Sopenharmony_ci __entry->session = nfs_session_id_hash(&args->csa_sessionid); 18462306a36Sopenharmony_ci __entry->slot_nr = args->csa_slotid; 18562306a36Sopenharmony_ci __entry->seq_nr = args->csa_sequenceid; 18662306a36Sopenharmony_ci __entry->highest_slotid = args->csa_highestslotid; 18762306a36Sopenharmony_ci __entry->cachethis = args->csa_cachethis; 18862306a36Sopenharmony_ci __entry->error = be32_to_cpu(status); 18962306a36Sopenharmony_ci ), 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci TP_printk( 19262306a36Sopenharmony_ci "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " 19362306a36Sopenharmony_ci "highest_slotid=%u", 19462306a36Sopenharmony_ci -__entry->error, 19562306a36Sopenharmony_ci show_nfs4_status(__entry->error), 19662306a36Sopenharmony_ci __entry->session, 19762306a36Sopenharmony_ci __entry->slot_nr, 19862306a36Sopenharmony_ci __entry->seq_nr, 19962306a36Sopenharmony_ci __entry->highest_slotid 20062306a36Sopenharmony_ci ) 20162306a36Sopenharmony_ci); 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ciTRACE_EVENT(nfs4_cb_offload, 20462306a36Sopenharmony_ci TP_PROTO( 20562306a36Sopenharmony_ci const struct nfs_fh *cb_fh, 20662306a36Sopenharmony_ci const nfs4_stateid *cb_stateid, 20762306a36Sopenharmony_ci uint64_t cb_count, 20862306a36Sopenharmony_ci int cb_error, 20962306a36Sopenharmony_ci int cb_how_stable 21062306a36Sopenharmony_ci ), 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci TP_ARGS(cb_fh, cb_stateid, cb_count, cb_error, 21362306a36Sopenharmony_ci cb_how_stable), 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci TP_STRUCT__entry( 21662306a36Sopenharmony_ci __field(unsigned long, error) 21762306a36Sopenharmony_ci __field(u32, fhandle) 21862306a36Sopenharmony_ci __field(loff_t, cb_count) 21962306a36Sopenharmony_ci __field(int, cb_how) 22062306a36Sopenharmony_ci __field(int, cb_stateid_seq) 22162306a36Sopenharmony_ci __field(u32, cb_stateid_hash) 22262306a36Sopenharmony_ci ), 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci TP_fast_assign( 22562306a36Sopenharmony_ci __entry->error = cb_error < 0 ? -cb_error : 0; 22662306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(cb_fh); 22762306a36Sopenharmony_ci __entry->cb_stateid_seq = 22862306a36Sopenharmony_ci be32_to_cpu(cb_stateid->seqid); 22962306a36Sopenharmony_ci __entry->cb_stateid_hash = 23062306a36Sopenharmony_ci nfs_stateid_hash(cb_stateid); 23162306a36Sopenharmony_ci __entry->cb_count = cb_count; 23262306a36Sopenharmony_ci __entry->cb_how = cb_how_stable; 23362306a36Sopenharmony_ci ), 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci TP_printk( 23662306a36Sopenharmony_ci "error=%ld (%s) fhandle=0x%08x cb_stateid=%d:0x%08x " 23762306a36Sopenharmony_ci "cb_count=%llu cb_how=%s", 23862306a36Sopenharmony_ci -__entry->error, 23962306a36Sopenharmony_ci show_nfs4_status(__entry->error), 24062306a36Sopenharmony_ci __entry->fhandle, 24162306a36Sopenharmony_ci __entry->cb_stateid_seq, __entry->cb_stateid_hash, 24262306a36Sopenharmony_ci __entry->cb_count, 24362306a36Sopenharmony_ci show_nfs_stable_how(__entry->cb_how) 24462306a36Sopenharmony_ci ) 24562306a36Sopenharmony_ci); 24662306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_1 */ 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ciTRACE_EVENT(nfs4_setup_sequence, 24962306a36Sopenharmony_ci TP_PROTO( 25062306a36Sopenharmony_ci const struct nfs4_session *session, 25162306a36Sopenharmony_ci const struct nfs4_sequence_args *args 25262306a36Sopenharmony_ci ), 25362306a36Sopenharmony_ci TP_ARGS(session, args), 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci TP_STRUCT__entry( 25662306a36Sopenharmony_ci __field(unsigned int, session) 25762306a36Sopenharmony_ci __field(unsigned int, slot_nr) 25862306a36Sopenharmony_ci __field(unsigned int, seq_nr) 25962306a36Sopenharmony_ci __field(unsigned int, highest_used_slotid) 26062306a36Sopenharmony_ci ), 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci TP_fast_assign( 26362306a36Sopenharmony_ci const struct nfs4_slot *sa_slot = args->sa_slot; 26462306a36Sopenharmony_ci __entry->session = session ? nfs_session_id_hash(&session->sess_id) : 0; 26562306a36Sopenharmony_ci __entry->slot_nr = sa_slot->slot_nr; 26662306a36Sopenharmony_ci __entry->seq_nr = sa_slot->seq_nr; 26762306a36Sopenharmony_ci __entry->highest_used_slotid = 26862306a36Sopenharmony_ci sa_slot->table->highest_used_slotid; 26962306a36Sopenharmony_ci ), 27062306a36Sopenharmony_ci TP_printk( 27162306a36Sopenharmony_ci "session=0x%08x slot_nr=%u seq_nr=%u " 27262306a36Sopenharmony_ci "highest_used_slotid=%u", 27362306a36Sopenharmony_ci __entry->session, 27462306a36Sopenharmony_ci __entry->slot_nr, 27562306a36Sopenharmony_ci __entry->seq_nr, 27662306a36Sopenharmony_ci __entry->highest_used_slotid 27762306a36Sopenharmony_ci ) 27862306a36Sopenharmony_ci); 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_MANAGER_RUNNING); 28162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_CHECK_LEASE); 28262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_LEASE_EXPIRED); 28362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RECLAIM_REBOOT); 28462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RECLAIM_NOGRACE); 28562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_DELEGRETURN); 28662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_SESSION_RESET); 28762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_LEASE_CONFIRM); 28862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_SERVER_SCOPE_MISMATCH); 28962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_PURGE_STATE); 29062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_BIND_CONN_TO_SESSION); 29162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_MOVED); 29262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_LEASE_MOVED); 29362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_DELEGATION_EXPIRED); 29462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RUN_MANAGER); 29562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_MANAGER_AVAILABLE); 29662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RECALL_RUNNING); 29762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RECALL_ANY_LAYOUT_READ); 29862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_RECALL_ANY_LAYOUT_RW); 29962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4CLNT_DELEGRETURN_DELAYED); 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ci#define show_nfs4_clp_state(state) \ 30262306a36Sopenharmony_ci __print_flags(state, "|", \ 30362306a36Sopenharmony_ci { BIT(NFS4CLNT_MANAGER_RUNNING), "MANAGER_RUNNING" }, \ 30462306a36Sopenharmony_ci { BIT(NFS4CLNT_CHECK_LEASE), "CHECK_LEASE" }, \ 30562306a36Sopenharmony_ci { BIT(NFS4CLNT_LEASE_EXPIRED), "LEASE_EXPIRED" }, \ 30662306a36Sopenharmony_ci { BIT(NFS4CLNT_RECLAIM_REBOOT), "RECLAIM_REBOOT" }, \ 30762306a36Sopenharmony_ci { BIT(NFS4CLNT_RECLAIM_NOGRACE), "RECLAIM_NOGRACE" }, \ 30862306a36Sopenharmony_ci { BIT(NFS4CLNT_DELEGRETURN), "DELEGRETURN" }, \ 30962306a36Sopenharmony_ci { BIT(NFS4CLNT_SESSION_RESET), "SESSION_RESET" }, \ 31062306a36Sopenharmony_ci { BIT(NFS4CLNT_LEASE_CONFIRM), "LEASE_CONFIRM" }, \ 31162306a36Sopenharmony_ci { BIT(NFS4CLNT_SERVER_SCOPE_MISMATCH), "SERVER_SCOPE_MISMATCH" }, \ 31262306a36Sopenharmony_ci { BIT(NFS4CLNT_PURGE_STATE), "PURGE_STATE" }, \ 31362306a36Sopenharmony_ci { BIT(NFS4CLNT_BIND_CONN_TO_SESSION), "BIND_CONN_TO_SESSION" }, \ 31462306a36Sopenharmony_ci { BIT(NFS4CLNT_MOVED), "MOVED" }, \ 31562306a36Sopenharmony_ci { BIT(NFS4CLNT_LEASE_MOVED), "LEASE_MOVED" }, \ 31662306a36Sopenharmony_ci { BIT(NFS4CLNT_DELEGATION_EXPIRED), "DELEGATION_EXPIRED" }, \ 31762306a36Sopenharmony_ci { BIT(NFS4CLNT_RUN_MANAGER), "RUN_MANAGER" }, \ 31862306a36Sopenharmony_ci { BIT(NFS4CLNT_MANAGER_AVAILABLE), "MANAGER_AVAILABLE" }, \ 31962306a36Sopenharmony_ci { BIT(NFS4CLNT_RECALL_RUNNING), "RECALL_RUNNING" }, \ 32062306a36Sopenharmony_ci { BIT(NFS4CLNT_RECALL_ANY_LAYOUT_READ), "RECALL_ANY_LAYOUT_READ" }, \ 32162306a36Sopenharmony_ci { BIT(NFS4CLNT_RECALL_ANY_LAYOUT_RW), "RECALL_ANY_LAYOUT_RW" }, \ 32262306a36Sopenharmony_ci { BIT(NFS4CLNT_DELEGRETURN_DELAYED), "DELERETURN_DELAYED" }) 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ciTRACE_EVENT(nfs4_state_mgr, 32562306a36Sopenharmony_ci TP_PROTO( 32662306a36Sopenharmony_ci const struct nfs_client *clp 32762306a36Sopenharmony_ci ), 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci TP_ARGS(clp), 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci TP_STRUCT__entry( 33262306a36Sopenharmony_ci __field(unsigned long, state) 33362306a36Sopenharmony_ci __string(hostname, clp->cl_hostname) 33462306a36Sopenharmony_ci ), 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci TP_fast_assign( 33762306a36Sopenharmony_ci __entry->state = clp->cl_state; 33862306a36Sopenharmony_ci __assign_str(hostname, clp->cl_hostname); 33962306a36Sopenharmony_ci ), 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci TP_printk( 34262306a36Sopenharmony_ci "hostname=%s clp state=%s", __get_str(hostname), 34362306a36Sopenharmony_ci show_nfs4_clp_state(__entry->state) 34462306a36Sopenharmony_ci ) 34562306a36Sopenharmony_ci) 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ciTRACE_EVENT(nfs4_state_mgr_failed, 34862306a36Sopenharmony_ci TP_PROTO( 34962306a36Sopenharmony_ci const struct nfs_client *clp, 35062306a36Sopenharmony_ci const char *section, 35162306a36Sopenharmony_ci int status 35262306a36Sopenharmony_ci ), 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ci TP_ARGS(clp, section, status), 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci TP_STRUCT__entry( 35762306a36Sopenharmony_ci __field(unsigned long, error) 35862306a36Sopenharmony_ci __field(unsigned long, state) 35962306a36Sopenharmony_ci __string(hostname, clp->cl_hostname) 36062306a36Sopenharmony_ci __string(section, section) 36162306a36Sopenharmony_ci ), 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ci TP_fast_assign( 36462306a36Sopenharmony_ci __entry->error = status < 0 ? -status : 0; 36562306a36Sopenharmony_ci __entry->state = clp->cl_state; 36662306a36Sopenharmony_ci __assign_str(hostname, clp->cl_hostname); 36762306a36Sopenharmony_ci __assign_str(section, section); 36862306a36Sopenharmony_ci ), 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci TP_printk( 37162306a36Sopenharmony_ci "hostname=%s clp state=%s error=%ld (%s) section=%s", 37262306a36Sopenharmony_ci __get_str(hostname), 37362306a36Sopenharmony_ci show_nfs4_clp_state(__entry->state), -__entry->error, 37462306a36Sopenharmony_ci show_nfs4_status(__entry->error), __get_str(section) 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci ) 37762306a36Sopenharmony_ci) 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_ciTRACE_EVENT(nfs4_xdr_bad_operation, 38062306a36Sopenharmony_ci TP_PROTO( 38162306a36Sopenharmony_ci const struct xdr_stream *xdr, 38262306a36Sopenharmony_ci u32 op, 38362306a36Sopenharmony_ci u32 expected 38462306a36Sopenharmony_ci ), 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_ci TP_ARGS(xdr, op, expected), 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ci TP_STRUCT__entry( 38962306a36Sopenharmony_ci __field(unsigned int, task_id) 39062306a36Sopenharmony_ci __field(unsigned int, client_id) 39162306a36Sopenharmony_ci __field(u32, xid) 39262306a36Sopenharmony_ci __field(u32, op) 39362306a36Sopenharmony_ci __field(u32, expected) 39462306a36Sopenharmony_ci ), 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_ci TP_fast_assign( 39762306a36Sopenharmony_ci const struct rpc_rqst *rqstp = xdr->rqst; 39862306a36Sopenharmony_ci const struct rpc_task *task = rqstp->rq_task; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci __entry->task_id = task->tk_pid; 40162306a36Sopenharmony_ci __entry->client_id = task->tk_client->cl_clid; 40262306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 40362306a36Sopenharmony_ci __entry->op = op; 40462306a36Sopenharmony_ci __entry->expected = expected; 40562306a36Sopenharmony_ci ), 40662306a36Sopenharmony_ci 40762306a36Sopenharmony_ci TP_printk(SUNRPC_TRACE_TASK_SPECIFIER 40862306a36Sopenharmony_ci " xid=0x%08x operation=%u, expected=%u", 40962306a36Sopenharmony_ci __entry->task_id, __entry->client_id, __entry->xid, 41062306a36Sopenharmony_ci __entry->op, __entry->expected 41162306a36Sopenharmony_ci ) 41262306a36Sopenharmony_ci); 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_xdr_event, 41562306a36Sopenharmony_ci TP_PROTO( 41662306a36Sopenharmony_ci const struct xdr_stream *xdr, 41762306a36Sopenharmony_ci u32 op, 41862306a36Sopenharmony_ci u32 error 41962306a36Sopenharmony_ci ), 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ci TP_ARGS(xdr, op, error), 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci TP_STRUCT__entry( 42462306a36Sopenharmony_ci __field(unsigned int, task_id) 42562306a36Sopenharmony_ci __field(unsigned int, client_id) 42662306a36Sopenharmony_ci __field(u32, xid) 42762306a36Sopenharmony_ci __field(u32, op) 42862306a36Sopenharmony_ci __field(unsigned long, error) 42962306a36Sopenharmony_ci ), 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci TP_fast_assign( 43262306a36Sopenharmony_ci const struct rpc_rqst *rqstp = xdr->rqst; 43362306a36Sopenharmony_ci const struct rpc_task *task = rqstp->rq_task; 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_ci __entry->task_id = task->tk_pid; 43662306a36Sopenharmony_ci __entry->client_id = task->tk_client->cl_clid; 43762306a36Sopenharmony_ci __entry->xid = be32_to_cpu(rqstp->rq_xid); 43862306a36Sopenharmony_ci __entry->op = op; 43962306a36Sopenharmony_ci __entry->error = error; 44062306a36Sopenharmony_ci ), 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_ci TP_printk(SUNRPC_TRACE_TASK_SPECIFIER 44362306a36Sopenharmony_ci " xid=0x%08x error=%ld (%s) operation=%u", 44462306a36Sopenharmony_ci __entry->task_id, __entry->client_id, __entry->xid, 44562306a36Sopenharmony_ci -__entry->error, show_nfs4_status(__entry->error), 44662306a36Sopenharmony_ci __entry->op 44762306a36Sopenharmony_ci ) 44862306a36Sopenharmony_ci); 44962306a36Sopenharmony_ci#define DEFINE_NFS4_XDR_EVENT(name) \ 45062306a36Sopenharmony_ci DEFINE_EVENT(nfs4_xdr_event, name, \ 45162306a36Sopenharmony_ci TP_PROTO( \ 45262306a36Sopenharmony_ci const struct xdr_stream *xdr, \ 45362306a36Sopenharmony_ci u32 op, \ 45462306a36Sopenharmony_ci u32 error \ 45562306a36Sopenharmony_ci ), \ 45662306a36Sopenharmony_ci TP_ARGS(xdr, op, error)) 45762306a36Sopenharmony_ciDEFINE_NFS4_XDR_EVENT(nfs4_xdr_status); 45862306a36Sopenharmony_ciDEFINE_NFS4_XDR_EVENT(nfs4_xdr_bad_filehandle); 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_cb_error_class, 46162306a36Sopenharmony_ci TP_PROTO( 46262306a36Sopenharmony_ci __be32 xid, 46362306a36Sopenharmony_ci u32 cb_ident 46462306a36Sopenharmony_ci ), 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci TP_ARGS(xid, cb_ident), 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci TP_STRUCT__entry( 46962306a36Sopenharmony_ci __field(u32, xid) 47062306a36Sopenharmony_ci __field(u32, cbident) 47162306a36Sopenharmony_ci ), 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_ci TP_fast_assign( 47462306a36Sopenharmony_ci __entry->xid = be32_to_cpu(xid); 47562306a36Sopenharmony_ci __entry->cbident = cb_ident; 47662306a36Sopenharmony_ci ), 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci TP_printk( 47962306a36Sopenharmony_ci "xid=0x%08x cb_ident=0x%08x", 48062306a36Sopenharmony_ci __entry->xid, __entry->cbident 48162306a36Sopenharmony_ci ) 48262306a36Sopenharmony_ci); 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_ci#define DEFINE_CB_ERROR_EVENT(name) \ 48562306a36Sopenharmony_ci DEFINE_EVENT(nfs4_cb_error_class, nfs_cb_##name, \ 48662306a36Sopenharmony_ci TP_PROTO( \ 48762306a36Sopenharmony_ci __be32 xid, \ 48862306a36Sopenharmony_ci u32 cb_ident \ 48962306a36Sopenharmony_ci ), \ 49062306a36Sopenharmony_ci TP_ARGS(xid, cb_ident)) 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_ciDEFINE_CB_ERROR_EVENT(no_clp); 49362306a36Sopenharmony_ciDEFINE_CB_ERROR_EVENT(badprinc); 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_open_event, 49662306a36Sopenharmony_ci TP_PROTO( 49762306a36Sopenharmony_ci const struct nfs_open_context *ctx, 49862306a36Sopenharmony_ci int flags, 49962306a36Sopenharmony_ci int error 50062306a36Sopenharmony_ci ), 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_ci TP_ARGS(ctx, flags, error), 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_ci TP_STRUCT__entry( 50562306a36Sopenharmony_ci __field(unsigned long, error) 50662306a36Sopenharmony_ci __field(unsigned long, flags) 50762306a36Sopenharmony_ci __field(unsigned long, fmode) 50862306a36Sopenharmony_ci __field(dev_t, dev) 50962306a36Sopenharmony_ci __field(u32, fhandle) 51062306a36Sopenharmony_ci __field(u64, fileid) 51162306a36Sopenharmony_ci __field(u64, dir) 51262306a36Sopenharmony_ci __string(name, ctx->dentry->d_name.name) 51362306a36Sopenharmony_ci __field(int, stateid_seq) 51462306a36Sopenharmony_ci __field(u32, stateid_hash) 51562306a36Sopenharmony_ci __field(int, openstateid_seq) 51662306a36Sopenharmony_ci __field(u32, openstateid_hash) 51762306a36Sopenharmony_ci ), 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ci TP_fast_assign( 52062306a36Sopenharmony_ci const struct nfs4_state *state = ctx->state; 52162306a36Sopenharmony_ci const struct inode *inode = NULL; 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_ci __entry->error = -error; 52462306a36Sopenharmony_ci __entry->flags = flags; 52562306a36Sopenharmony_ci __entry->fmode = (__force unsigned long)ctx->mode; 52662306a36Sopenharmony_ci __entry->dev = ctx->dentry->d_sb->s_dev; 52762306a36Sopenharmony_ci if (!IS_ERR_OR_NULL(state)) { 52862306a36Sopenharmony_ci inode = state->inode; 52962306a36Sopenharmony_ci __entry->stateid_seq = 53062306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 53162306a36Sopenharmony_ci __entry->stateid_hash = 53262306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 53362306a36Sopenharmony_ci __entry->openstateid_seq = 53462306a36Sopenharmony_ci be32_to_cpu(state->open_stateid.seqid); 53562306a36Sopenharmony_ci __entry->openstateid_hash = 53662306a36Sopenharmony_ci nfs_stateid_hash(&state->open_stateid); 53762306a36Sopenharmony_ci } else { 53862306a36Sopenharmony_ci __entry->stateid_seq = 0; 53962306a36Sopenharmony_ci __entry->stateid_hash = 0; 54062306a36Sopenharmony_ci __entry->openstateid_seq = 0; 54162306a36Sopenharmony_ci __entry->openstateid_hash = 0; 54262306a36Sopenharmony_ci } 54362306a36Sopenharmony_ci if (inode != NULL) { 54462306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 54562306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 54662306a36Sopenharmony_ci } else { 54762306a36Sopenharmony_ci __entry->fileid = 0; 54862306a36Sopenharmony_ci __entry->fhandle = 0; 54962306a36Sopenharmony_ci } 55062306a36Sopenharmony_ci __entry->dir = NFS_FILEID(d_inode(ctx->dentry->d_parent)); 55162306a36Sopenharmony_ci __assign_str(name, ctx->dentry->d_name.name); 55262306a36Sopenharmony_ci ), 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_ci TP_printk( 55562306a36Sopenharmony_ci "error=%ld (%s) flags=%lu (%s) fmode=%s " 55662306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 55762306a36Sopenharmony_ci "name=%02x:%02x:%llu/%s stateid=%d:0x%08x " 55862306a36Sopenharmony_ci "openstateid=%d:0x%08x", 55962306a36Sopenharmony_ci -__entry->error, 56062306a36Sopenharmony_ci show_nfs4_status(__entry->error), 56162306a36Sopenharmony_ci __entry->flags, 56262306a36Sopenharmony_ci show_fs_fcntl_open_flags(__entry->flags), 56362306a36Sopenharmony_ci show_fs_fmode_flags(__entry->fmode), 56462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 56562306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 56662306a36Sopenharmony_ci __entry->fhandle, 56762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 56862306a36Sopenharmony_ci (unsigned long long)__entry->dir, 56962306a36Sopenharmony_ci __get_str(name), 57062306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 57162306a36Sopenharmony_ci __entry->openstateid_seq, __entry->openstateid_hash 57262306a36Sopenharmony_ci ) 57362306a36Sopenharmony_ci); 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_ci#define DEFINE_NFS4_OPEN_EVENT(name) \ 57662306a36Sopenharmony_ci DEFINE_EVENT(nfs4_open_event, name, \ 57762306a36Sopenharmony_ci TP_PROTO( \ 57862306a36Sopenharmony_ci const struct nfs_open_context *ctx, \ 57962306a36Sopenharmony_ci int flags, \ 58062306a36Sopenharmony_ci int error \ 58162306a36Sopenharmony_ci ), \ 58262306a36Sopenharmony_ci TP_ARGS(ctx, flags, error)) 58362306a36Sopenharmony_ciDEFINE_NFS4_OPEN_EVENT(nfs4_open_reclaim); 58462306a36Sopenharmony_ciDEFINE_NFS4_OPEN_EVENT(nfs4_open_expired); 58562306a36Sopenharmony_ciDEFINE_NFS4_OPEN_EVENT(nfs4_open_file); 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ciTRACE_EVENT(nfs4_cached_open, 58862306a36Sopenharmony_ci TP_PROTO( 58962306a36Sopenharmony_ci const struct nfs4_state *state 59062306a36Sopenharmony_ci ), 59162306a36Sopenharmony_ci TP_ARGS(state), 59262306a36Sopenharmony_ci TP_STRUCT__entry( 59362306a36Sopenharmony_ci __field(dev_t, dev) 59462306a36Sopenharmony_ci __field(u32, fhandle) 59562306a36Sopenharmony_ci __field(u64, fileid) 59662306a36Sopenharmony_ci __field(unsigned int, fmode) 59762306a36Sopenharmony_ci __field(int, stateid_seq) 59862306a36Sopenharmony_ci __field(u32, stateid_hash) 59962306a36Sopenharmony_ci ), 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_ci TP_fast_assign( 60262306a36Sopenharmony_ci const struct inode *inode = state->inode; 60362306a36Sopenharmony_ci 60462306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 60562306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 60662306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 60762306a36Sopenharmony_ci __entry->fmode = (__force unsigned int)state->state; 60862306a36Sopenharmony_ci __entry->stateid_seq = 60962306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 61062306a36Sopenharmony_ci __entry->stateid_hash = 61162306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 61262306a36Sopenharmony_ci ), 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ci TP_printk( 61562306a36Sopenharmony_ci "fmode=%s fileid=%02x:%02x:%llu " 61662306a36Sopenharmony_ci "fhandle=0x%08x stateid=%d:0x%08x", 61762306a36Sopenharmony_ci __entry->fmode ? show_fs_fmode_flags(__entry->fmode) : 61862306a36Sopenharmony_ci "closed", 61962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 62062306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 62162306a36Sopenharmony_ci __entry->fhandle, 62262306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 62362306a36Sopenharmony_ci ) 62462306a36Sopenharmony_ci); 62562306a36Sopenharmony_ci 62662306a36Sopenharmony_ciTRACE_EVENT(nfs4_close, 62762306a36Sopenharmony_ci TP_PROTO( 62862306a36Sopenharmony_ci const struct nfs4_state *state, 62962306a36Sopenharmony_ci const struct nfs_closeargs *args, 63062306a36Sopenharmony_ci const struct nfs_closeres *res, 63162306a36Sopenharmony_ci int error 63262306a36Sopenharmony_ci ), 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ci TP_ARGS(state, args, res, error), 63562306a36Sopenharmony_ci 63662306a36Sopenharmony_ci TP_STRUCT__entry( 63762306a36Sopenharmony_ci __field(dev_t, dev) 63862306a36Sopenharmony_ci __field(u32, fhandle) 63962306a36Sopenharmony_ci __field(u64, fileid) 64062306a36Sopenharmony_ci __field(unsigned int, fmode) 64162306a36Sopenharmony_ci __field(unsigned long, error) 64262306a36Sopenharmony_ci __field(int, stateid_seq) 64362306a36Sopenharmony_ci __field(u32, stateid_hash) 64462306a36Sopenharmony_ci ), 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ci TP_fast_assign( 64762306a36Sopenharmony_ci const struct inode *inode = state->inode; 64862306a36Sopenharmony_ci 64962306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 65062306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 65162306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 65262306a36Sopenharmony_ci __entry->fmode = (__force unsigned int)state->state; 65362306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 65462306a36Sopenharmony_ci __entry->stateid_seq = 65562306a36Sopenharmony_ci be32_to_cpu(args->stateid.seqid); 65662306a36Sopenharmony_ci __entry->stateid_hash = 65762306a36Sopenharmony_ci nfs_stateid_hash(&args->stateid); 65862306a36Sopenharmony_ci ), 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_ci TP_printk( 66162306a36Sopenharmony_ci "error=%ld (%s) fmode=%s fileid=%02x:%02x:%llu " 66262306a36Sopenharmony_ci "fhandle=0x%08x openstateid=%d:0x%08x", 66362306a36Sopenharmony_ci -__entry->error, 66462306a36Sopenharmony_ci show_nfs4_status(__entry->error), 66562306a36Sopenharmony_ci __entry->fmode ? show_fs_fmode_flags(__entry->fmode) : 66662306a36Sopenharmony_ci "closed", 66762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 66862306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 66962306a36Sopenharmony_ci __entry->fhandle, 67062306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 67162306a36Sopenharmony_ci ) 67262306a36Sopenharmony_ci); 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_lock_event, 67562306a36Sopenharmony_ci TP_PROTO( 67662306a36Sopenharmony_ci const struct file_lock *request, 67762306a36Sopenharmony_ci const struct nfs4_state *state, 67862306a36Sopenharmony_ci int cmd, 67962306a36Sopenharmony_ci int error 68062306a36Sopenharmony_ci ), 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_ci TP_ARGS(request, state, cmd, error), 68362306a36Sopenharmony_ci 68462306a36Sopenharmony_ci TP_STRUCT__entry( 68562306a36Sopenharmony_ci __field(unsigned long, error) 68662306a36Sopenharmony_ci __field(unsigned long, cmd) 68762306a36Sopenharmony_ci __field(unsigned long, type) 68862306a36Sopenharmony_ci __field(loff_t, start) 68962306a36Sopenharmony_ci __field(loff_t, end) 69062306a36Sopenharmony_ci __field(dev_t, dev) 69162306a36Sopenharmony_ci __field(u32, fhandle) 69262306a36Sopenharmony_ci __field(u64, fileid) 69362306a36Sopenharmony_ci __field(int, stateid_seq) 69462306a36Sopenharmony_ci __field(u32, stateid_hash) 69562306a36Sopenharmony_ci ), 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_ci TP_fast_assign( 69862306a36Sopenharmony_ci const struct inode *inode = state->inode; 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 70162306a36Sopenharmony_ci __entry->cmd = cmd; 70262306a36Sopenharmony_ci __entry->type = request->fl_type; 70362306a36Sopenharmony_ci __entry->start = request->fl_start; 70462306a36Sopenharmony_ci __entry->end = request->fl_end; 70562306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 70662306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 70762306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 70862306a36Sopenharmony_ci __entry->stateid_seq = 70962306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 71062306a36Sopenharmony_ci __entry->stateid_hash = 71162306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 71262306a36Sopenharmony_ci ), 71362306a36Sopenharmony_ci 71462306a36Sopenharmony_ci TP_printk( 71562306a36Sopenharmony_ci "error=%ld (%s) cmd=%s:%s range=%lld:%lld " 71662306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 71762306a36Sopenharmony_ci "stateid=%d:0x%08x", 71862306a36Sopenharmony_ci -__entry->error, 71962306a36Sopenharmony_ci show_nfs4_status(__entry->error), 72062306a36Sopenharmony_ci show_fs_fcntl_cmd(__entry->cmd), 72162306a36Sopenharmony_ci show_fs_fcntl_lock_type(__entry->type), 72262306a36Sopenharmony_ci (long long)__entry->start, 72362306a36Sopenharmony_ci (long long)__entry->end, 72462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 72562306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 72662306a36Sopenharmony_ci __entry->fhandle, 72762306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 72862306a36Sopenharmony_ci ) 72962306a36Sopenharmony_ci); 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ci#define DEFINE_NFS4_LOCK_EVENT(name) \ 73262306a36Sopenharmony_ci DEFINE_EVENT(nfs4_lock_event, name, \ 73362306a36Sopenharmony_ci TP_PROTO( \ 73462306a36Sopenharmony_ci const struct file_lock *request, \ 73562306a36Sopenharmony_ci const struct nfs4_state *state, \ 73662306a36Sopenharmony_ci int cmd, \ 73762306a36Sopenharmony_ci int error \ 73862306a36Sopenharmony_ci ), \ 73962306a36Sopenharmony_ci TP_ARGS(request, state, cmd, error)) 74062306a36Sopenharmony_ciDEFINE_NFS4_LOCK_EVENT(nfs4_get_lock); 74162306a36Sopenharmony_ciDEFINE_NFS4_LOCK_EVENT(nfs4_unlock); 74262306a36Sopenharmony_ci 74362306a36Sopenharmony_ciTRACE_EVENT(nfs4_set_lock, 74462306a36Sopenharmony_ci TP_PROTO( 74562306a36Sopenharmony_ci const struct file_lock *request, 74662306a36Sopenharmony_ci const struct nfs4_state *state, 74762306a36Sopenharmony_ci const nfs4_stateid *lockstateid, 74862306a36Sopenharmony_ci int cmd, 74962306a36Sopenharmony_ci int error 75062306a36Sopenharmony_ci ), 75162306a36Sopenharmony_ci 75262306a36Sopenharmony_ci TP_ARGS(request, state, lockstateid, cmd, error), 75362306a36Sopenharmony_ci 75462306a36Sopenharmony_ci TP_STRUCT__entry( 75562306a36Sopenharmony_ci __field(unsigned long, error) 75662306a36Sopenharmony_ci __field(unsigned long, cmd) 75762306a36Sopenharmony_ci __field(unsigned long, type) 75862306a36Sopenharmony_ci __field(loff_t, start) 75962306a36Sopenharmony_ci __field(loff_t, end) 76062306a36Sopenharmony_ci __field(dev_t, dev) 76162306a36Sopenharmony_ci __field(u32, fhandle) 76262306a36Sopenharmony_ci __field(u64, fileid) 76362306a36Sopenharmony_ci __field(int, stateid_seq) 76462306a36Sopenharmony_ci __field(u32, stateid_hash) 76562306a36Sopenharmony_ci __field(int, lockstateid_seq) 76662306a36Sopenharmony_ci __field(u32, lockstateid_hash) 76762306a36Sopenharmony_ci ), 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ci TP_fast_assign( 77062306a36Sopenharmony_ci const struct inode *inode = state->inode; 77162306a36Sopenharmony_ci 77262306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 77362306a36Sopenharmony_ci __entry->cmd = cmd; 77462306a36Sopenharmony_ci __entry->type = request->fl_type; 77562306a36Sopenharmony_ci __entry->start = request->fl_start; 77662306a36Sopenharmony_ci __entry->end = request->fl_end; 77762306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 77862306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 77962306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 78062306a36Sopenharmony_ci __entry->stateid_seq = 78162306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 78262306a36Sopenharmony_ci __entry->stateid_hash = 78362306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 78462306a36Sopenharmony_ci __entry->lockstateid_seq = 78562306a36Sopenharmony_ci be32_to_cpu(lockstateid->seqid); 78662306a36Sopenharmony_ci __entry->lockstateid_hash = 78762306a36Sopenharmony_ci nfs_stateid_hash(lockstateid); 78862306a36Sopenharmony_ci ), 78962306a36Sopenharmony_ci 79062306a36Sopenharmony_ci TP_printk( 79162306a36Sopenharmony_ci "error=%ld (%s) cmd=%s:%s range=%lld:%lld " 79262306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 79362306a36Sopenharmony_ci "stateid=%d:0x%08x lockstateid=%d:0x%08x", 79462306a36Sopenharmony_ci -__entry->error, 79562306a36Sopenharmony_ci show_nfs4_status(__entry->error), 79662306a36Sopenharmony_ci show_fs_fcntl_cmd(__entry->cmd), 79762306a36Sopenharmony_ci show_fs_fcntl_lock_type(__entry->type), 79862306a36Sopenharmony_ci (long long)__entry->start, 79962306a36Sopenharmony_ci (long long)__entry->end, 80062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 80162306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 80262306a36Sopenharmony_ci __entry->fhandle, 80362306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 80462306a36Sopenharmony_ci __entry->lockstateid_seq, __entry->lockstateid_hash 80562306a36Sopenharmony_ci ) 80662306a36Sopenharmony_ci); 80762306a36Sopenharmony_ci 80862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(LK_STATE_IN_USE); 80962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_DELEGATED_STATE); 81062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_OPEN_STATE); 81162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_O_RDONLY_STATE); 81262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_O_WRONLY_STATE); 81362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_O_RDWR_STATE); 81462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_RECLAIM_REBOOT); 81562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_RECLAIM_NOGRACE); 81662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_POSIX_LOCKS); 81762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_RECOVERY_FAILED); 81862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_MAY_NOTIFY_LOCK); 81962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_STATE_CHANGE_WAIT); 82062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_CLNT_DST_SSC_COPY_STATE); 82162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_CLNT_SRC_SSC_COPY_STATE); 82262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS_SRV_SSC_COPY_STATE); 82362306a36Sopenharmony_ci 82462306a36Sopenharmony_ci#define show_nfs4_state_flags(flags) \ 82562306a36Sopenharmony_ci __print_flags(flags, "|", \ 82662306a36Sopenharmony_ci { LK_STATE_IN_USE, "IN_USE" }, \ 82762306a36Sopenharmony_ci { NFS_DELEGATED_STATE, "DELEGATED" }, \ 82862306a36Sopenharmony_ci { NFS_OPEN_STATE, "OPEN" }, \ 82962306a36Sopenharmony_ci { NFS_O_RDONLY_STATE, "O_RDONLY" }, \ 83062306a36Sopenharmony_ci { NFS_O_WRONLY_STATE, "O_WRONLY" }, \ 83162306a36Sopenharmony_ci { NFS_O_RDWR_STATE, "O_RDWR" }, \ 83262306a36Sopenharmony_ci { NFS_STATE_RECLAIM_REBOOT, "RECLAIM_REBOOT" }, \ 83362306a36Sopenharmony_ci { NFS_STATE_RECLAIM_NOGRACE, "RECLAIM_NOGRACE" }, \ 83462306a36Sopenharmony_ci { NFS_STATE_POSIX_LOCKS, "POSIX_LOCKS" }, \ 83562306a36Sopenharmony_ci { NFS_STATE_RECOVERY_FAILED, "RECOVERY_FAILED" }, \ 83662306a36Sopenharmony_ci { NFS_STATE_MAY_NOTIFY_LOCK, "MAY_NOTIFY_LOCK" }, \ 83762306a36Sopenharmony_ci { NFS_STATE_CHANGE_WAIT, "CHANGE_WAIT" }, \ 83862306a36Sopenharmony_ci { NFS_CLNT_DST_SSC_COPY_STATE, "CLNT_DST_SSC_COPY" }, \ 83962306a36Sopenharmony_ci { NFS_CLNT_SRC_SSC_COPY_STATE, "CLNT_SRC_SSC_COPY" }, \ 84062306a36Sopenharmony_ci { NFS_SRV_SSC_COPY_STATE, "SRV_SSC_COPY" }) 84162306a36Sopenharmony_ci 84262306a36Sopenharmony_ci#define show_nfs4_lock_flags(flags) \ 84362306a36Sopenharmony_ci __print_flags(flags, "|", \ 84462306a36Sopenharmony_ci { BIT(NFS_LOCK_INITIALIZED), "INITIALIZED" }, \ 84562306a36Sopenharmony_ci { BIT(NFS_LOCK_LOST), "LOST" }) 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_ciTRACE_EVENT(nfs4_state_lock_reclaim, 84862306a36Sopenharmony_ci TP_PROTO( 84962306a36Sopenharmony_ci const struct nfs4_state *state, 85062306a36Sopenharmony_ci const struct nfs4_lock_state *lock 85162306a36Sopenharmony_ci ), 85262306a36Sopenharmony_ci 85362306a36Sopenharmony_ci TP_ARGS(state, lock), 85462306a36Sopenharmony_ci 85562306a36Sopenharmony_ci TP_STRUCT__entry( 85662306a36Sopenharmony_ci __field(dev_t, dev) 85762306a36Sopenharmony_ci __field(u32, fhandle) 85862306a36Sopenharmony_ci __field(u64, fileid) 85962306a36Sopenharmony_ci __field(unsigned long, state_flags) 86062306a36Sopenharmony_ci __field(unsigned long, lock_flags) 86162306a36Sopenharmony_ci __field(int, stateid_seq) 86262306a36Sopenharmony_ci __field(u32, stateid_hash) 86362306a36Sopenharmony_ci ), 86462306a36Sopenharmony_ci 86562306a36Sopenharmony_ci TP_fast_assign( 86662306a36Sopenharmony_ci const struct inode *inode = state->inode; 86762306a36Sopenharmony_ci 86862306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 86962306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 87062306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 87162306a36Sopenharmony_ci __entry->state_flags = state->flags; 87262306a36Sopenharmony_ci __entry->lock_flags = lock->ls_flags; 87362306a36Sopenharmony_ci __entry->stateid_seq = 87462306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 87562306a36Sopenharmony_ci __entry->stateid_hash = 87662306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 87762306a36Sopenharmony_ci ), 87862306a36Sopenharmony_ci 87962306a36Sopenharmony_ci TP_printk( 88062306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 88162306a36Sopenharmony_ci "stateid=%d:0x%08x state_flags=%s lock_flags=%s", 88262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 88362306a36Sopenharmony_ci (unsigned long long)__entry->fileid, __entry->fhandle, 88462306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 88562306a36Sopenharmony_ci show_nfs4_state_flags(__entry->state_flags), 88662306a36Sopenharmony_ci show_nfs4_lock_flags(__entry->lock_flags) 88762306a36Sopenharmony_ci ) 88862306a36Sopenharmony_ci) 88962306a36Sopenharmony_ci 89062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_set_delegation_event, 89162306a36Sopenharmony_ci TP_PROTO( 89262306a36Sopenharmony_ci const struct inode *inode, 89362306a36Sopenharmony_ci fmode_t fmode 89462306a36Sopenharmony_ci ), 89562306a36Sopenharmony_ci 89662306a36Sopenharmony_ci TP_ARGS(inode, fmode), 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci TP_STRUCT__entry( 89962306a36Sopenharmony_ci __field(dev_t, dev) 90062306a36Sopenharmony_ci __field(u32, fhandle) 90162306a36Sopenharmony_ci __field(u64, fileid) 90262306a36Sopenharmony_ci __field(unsigned int, fmode) 90362306a36Sopenharmony_ci ), 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_ci TP_fast_assign( 90662306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 90762306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 90862306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 90962306a36Sopenharmony_ci __entry->fmode = (__force unsigned int)fmode; 91062306a36Sopenharmony_ci ), 91162306a36Sopenharmony_ci 91262306a36Sopenharmony_ci TP_printk( 91362306a36Sopenharmony_ci "fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x", 91462306a36Sopenharmony_ci show_fs_fmode_flags(__entry->fmode), 91562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 91662306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 91762306a36Sopenharmony_ci __entry->fhandle 91862306a36Sopenharmony_ci ) 91962306a36Sopenharmony_ci); 92062306a36Sopenharmony_ci#define DEFINE_NFS4_SET_DELEGATION_EVENT(name) \ 92162306a36Sopenharmony_ci DEFINE_EVENT(nfs4_set_delegation_event, name, \ 92262306a36Sopenharmony_ci TP_PROTO( \ 92362306a36Sopenharmony_ci const struct inode *inode, \ 92462306a36Sopenharmony_ci fmode_t fmode \ 92562306a36Sopenharmony_ci ), \ 92662306a36Sopenharmony_ci TP_ARGS(inode, fmode)) 92762306a36Sopenharmony_ciDEFINE_NFS4_SET_DELEGATION_EVENT(nfs4_set_delegation); 92862306a36Sopenharmony_ciDEFINE_NFS4_SET_DELEGATION_EVENT(nfs4_reclaim_delegation); 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ciTRACE_EVENT(nfs4_delegreturn_exit, 93162306a36Sopenharmony_ci TP_PROTO( 93262306a36Sopenharmony_ci const struct nfs4_delegreturnargs *args, 93362306a36Sopenharmony_ci const struct nfs4_delegreturnres *res, 93462306a36Sopenharmony_ci int error 93562306a36Sopenharmony_ci ), 93662306a36Sopenharmony_ci 93762306a36Sopenharmony_ci TP_ARGS(args, res, error), 93862306a36Sopenharmony_ci 93962306a36Sopenharmony_ci TP_STRUCT__entry( 94062306a36Sopenharmony_ci __field(dev_t, dev) 94162306a36Sopenharmony_ci __field(u32, fhandle) 94262306a36Sopenharmony_ci __field(unsigned long, error) 94362306a36Sopenharmony_ci __field(int, stateid_seq) 94462306a36Sopenharmony_ci __field(u32, stateid_hash) 94562306a36Sopenharmony_ci ), 94662306a36Sopenharmony_ci 94762306a36Sopenharmony_ci TP_fast_assign( 94862306a36Sopenharmony_ci __entry->dev = res->server->s_dev; 94962306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(args->fhandle); 95062306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 95162306a36Sopenharmony_ci __entry->stateid_seq = 95262306a36Sopenharmony_ci be32_to_cpu(args->stateid->seqid); 95362306a36Sopenharmony_ci __entry->stateid_hash = 95462306a36Sopenharmony_ci nfs_stateid_hash(args->stateid); 95562306a36Sopenharmony_ci ), 95662306a36Sopenharmony_ci 95762306a36Sopenharmony_ci TP_printk( 95862306a36Sopenharmony_ci "error=%ld (%s) dev=%02x:%02x fhandle=0x%08x " 95962306a36Sopenharmony_ci "stateid=%d:0x%08x", 96062306a36Sopenharmony_ci -__entry->error, 96162306a36Sopenharmony_ci show_nfs4_status(__entry->error), 96262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 96362306a36Sopenharmony_ci __entry->fhandle, 96462306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 96562306a36Sopenharmony_ci ) 96662306a36Sopenharmony_ci); 96762306a36Sopenharmony_ci 96862306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 96962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_test_stateid_event, 97062306a36Sopenharmony_ci TP_PROTO( 97162306a36Sopenharmony_ci const struct nfs4_state *state, 97262306a36Sopenharmony_ci const struct nfs4_lock_state *lsp, 97362306a36Sopenharmony_ci int error 97462306a36Sopenharmony_ci ), 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci TP_ARGS(state, lsp, error), 97762306a36Sopenharmony_ci 97862306a36Sopenharmony_ci TP_STRUCT__entry( 97962306a36Sopenharmony_ci __field(unsigned long, error) 98062306a36Sopenharmony_ci __field(dev_t, dev) 98162306a36Sopenharmony_ci __field(u32, fhandle) 98262306a36Sopenharmony_ci __field(u64, fileid) 98362306a36Sopenharmony_ci __field(int, stateid_seq) 98462306a36Sopenharmony_ci __field(u32, stateid_hash) 98562306a36Sopenharmony_ci ), 98662306a36Sopenharmony_ci 98762306a36Sopenharmony_ci TP_fast_assign( 98862306a36Sopenharmony_ci const struct inode *inode = state->inode; 98962306a36Sopenharmony_ci 99062306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 99162306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 99262306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 99362306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 99462306a36Sopenharmony_ci __entry->stateid_seq = 99562306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 99662306a36Sopenharmony_ci __entry->stateid_hash = 99762306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 99862306a36Sopenharmony_ci ), 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_ci TP_printk( 100162306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 100262306a36Sopenharmony_ci "stateid=%d:0x%08x", 100362306a36Sopenharmony_ci -__entry->error, 100462306a36Sopenharmony_ci show_nfs4_status(__entry->error), 100562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 100662306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 100762306a36Sopenharmony_ci __entry->fhandle, 100862306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 100962306a36Sopenharmony_ci ) 101062306a36Sopenharmony_ci); 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_ci#define DEFINE_NFS4_TEST_STATEID_EVENT(name) \ 101362306a36Sopenharmony_ci DEFINE_EVENT(nfs4_test_stateid_event, name, \ 101462306a36Sopenharmony_ci TP_PROTO( \ 101562306a36Sopenharmony_ci const struct nfs4_state *state, \ 101662306a36Sopenharmony_ci const struct nfs4_lock_state *lsp, \ 101762306a36Sopenharmony_ci int error \ 101862306a36Sopenharmony_ci ), \ 101962306a36Sopenharmony_ci TP_ARGS(state, lsp, error)) 102062306a36Sopenharmony_ciDEFINE_NFS4_TEST_STATEID_EVENT(nfs4_test_delegation_stateid); 102162306a36Sopenharmony_ciDEFINE_NFS4_TEST_STATEID_EVENT(nfs4_test_open_stateid); 102262306a36Sopenharmony_ciDEFINE_NFS4_TEST_STATEID_EVENT(nfs4_test_lock_stateid); 102362306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_1 */ 102462306a36Sopenharmony_ci 102562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_lookup_event, 102662306a36Sopenharmony_ci TP_PROTO( 102762306a36Sopenharmony_ci const struct inode *dir, 102862306a36Sopenharmony_ci const struct qstr *name, 102962306a36Sopenharmony_ci int error 103062306a36Sopenharmony_ci ), 103162306a36Sopenharmony_ci 103262306a36Sopenharmony_ci TP_ARGS(dir, name, error), 103362306a36Sopenharmony_ci 103462306a36Sopenharmony_ci TP_STRUCT__entry( 103562306a36Sopenharmony_ci __field(dev_t, dev) 103662306a36Sopenharmony_ci __field(unsigned long, error) 103762306a36Sopenharmony_ci __field(u64, dir) 103862306a36Sopenharmony_ci __string(name, name->name) 103962306a36Sopenharmony_ci ), 104062306a36Sopenharmony_ci 104162306a36Sopenharmony_ci TP_fast_assign( 104262306a36Sopenharmony_ci __entry->dev = dir->i_sb->s_dev; 104362306a36Sopenharmony_ci __entry->dir = NFS_FILEID(dir); 104462306a36Sopenharmony_ci __entry->error = -error; 104562306a36Sopenharmony_ci __assign_str(name, name->name); 104662306a36Sopenharmony_ci ), 104762306a36Sopenharmony_ci 104862306a36Sopenharmony_ci TP_printk( 104962306a36Sopenharmony_ci "error=%ld (%s) name=%02x:%02x:%llu/%s", 105062306a36Sopenharmony_ci -__entry->error, 105162306a36Sopenharmony_ci show_nfs4_status(__entry->error), 105262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 105362306a36Sopenharmony_ci (unsigned long long)__entry->dir, 105462306a36Sopenharmony_ci __get_str(name) 105562306a36Sopenharmony_ci ) 105662306a36Sopenharmony_ci); 105762306a36Sopenharmony_ci 105862306a36Sopenharmony_ci#define DEFINE_NFS4_LOOKUP_EVENT(name) \ 105962306a36Sopenharmony_ci DEFINE_EVENT(nfs4_lookup_event, name, \ 106062306a36Sopenharmony_ci TP_PROTO( \ 106162306a36Sopenharmony_ci const struct inode *dir, \ 106262306a36Sopenharmony_ci const struct qstr *name, \ 106362306a36Sopenharmony_ci int error \ 106462306a36Sopenharmony_ci ), \ 106562306a36Sopenharmony_ci TP_ARGS(dir, name, error)) 106662306a36Sopenharmony_ci 106762306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_lookup); 106862306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_symlink); 106962306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_mkdir); 107062306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_mknod); 107162306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_remove); 107262306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_get_fs_locations); 107362306a36Sopenharmony_ciDEFINE_NFS4_LOOKUP_EVENT(nfs4_secinfo); 107462306a36Sopenharmony_ci 107562306a36Sopenharmony_ciTRACE_EVENT(nfs4_lookupp, 107662306a36Sopenharmony_ci TP_PROTO( 107762306a36Sopenharmony_ci const struct inode *inode, 107862306a36Sopenharmony_ci int error 107962306a36Sopenharmony_ci ), 108062306a36Sopenharmony_ci 108162306a36Sopenharmony_ci TP_ARGS(inode, error), 108262306a36Sopenharmony_ci 108362306a36Sopenharmony_ci TP_STRUCT__entry( 108462306a36Sopenharmony_ci __field(dev_t, dev) 108562306a36Sopenharmony_ci __field(u64, ino) 108662306a36Sopenharmony_ci __field(unsigned long, error) 108762306a36Sopenharmony_ci ), 108862306a36Sopenharmony_ci 108962306a36Sopenharmony_ci TP_fast_assign( 109062306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 109162306a36Sopenharmony_ci __entry->ino = NFS_FILEID(inode); 109262306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 109362306a36Sopenharmony_ci ), 109462306a36Sopenharmony_ci 109562306a36Sopenharmony_ci TP_printk( 109662306a36Sopenharmony_ci "error=%ld (%s) inode=%02x:%02x:%llu", 109762306a36Sopenharmony_ci -__entry->error, 109862306a36Sopenharmony_ci show_nfs4_status(__entry->error), 109962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 110062306a36Sopenharmony_ci (unsigned long long)__entry->ino 110162306a36Sopenharmony_ci ) 110262306a36Sopenharmony_ci); 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ciTRACE_EVENT(nfs4_rename, 110562306a36Sopenharmony_ci TP_PROTO( 110662306a36Sopenharmony_ci const struct inode *olddir, 110762306a36Sopenharmony_ci const struct qstr *oldname, 110862306a36Sopenharmony_ci const struct inode *newdir, 110962306a36Sopenharmony_ci const struct qstr *newname, 111062306a36Sopenharmony_ci int error 111162306a36Sopenharmony_ci ), 111262306a36Sopenharmony_ci 111362306a36Sopenharmony_ci TP_ARGS(olddir, oldname, newdir, newname, error), 111462306a36Sopenharmony_ci 111562306a36Sopenharmony_ci TP_STRUCT__entry( 111662306a36Sopenharmony_ci __field(dev_t, dev) 111762306a36Sopenharmony_ci __field(unsigned long, error) 111862306a36Sopenharmony_ci __field(u64, olddir) 111962306a36Sopenharmony_ci __string(oldname, oldname->name) 112062306a36Sopenharmony_ci __field(u64, newdir) 112162306a36Sopenharmony_ci __string(newname, newname->name) 112262306a36Sopenharmony_ci ), 112362306a36Sopenharmony_ci 112462306a36Sopenharmony_ci TP_fast_assign( 112562306a36Sopenharmony_ci __entry->dev = olddir->i_sb->s_dev; 112662306a36Sopenharmony_ci __entry->olddir = NFS_FILEID(olddir); 112762306a36Sopenharmony_ci __entry->newdir = NFS_FILEID(newdir); 112862306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 112962306a36Sopenharmony_ci __assign_str(oldname, oldname->name); 113062306a36Sopenharmony_ci __assign_str(newname, newname->name); 113162306a36Sopenharmony_ci ), 113262306a36Sopenharmony_ci 113362306a36Sopenharmony_ci TP_printk( 113462306a36Sopenharmony_ci "error=%ld (%s) oldname=%02x:%02x:%llu/%s " 113562306a36Sopenharmony_ci "newname=%02x:%02x:%llu/%s", 113662306a36Sopenharmony_ci -__entry->error, 113762306a36Sopenharmony_ci show_nfs4_status(__entry->error), 113862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 113962306a36Sopenharmony_ci (unsigned long long)__entry->olddir, 114062306a36Sopenharmony_ci __get_str(oldname), 114162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 114262306a36Sopenharmony_ci (unsigned long long)__entry->newdir, 114362306a36Sopenharmony_ci __get_str(newname) 114462306a36Sopenharmony_ci ) 114562306a36Sopenharmony_ci); 114662306a36Sopenharmony_ci 114762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_inode_event, 114862306a36Sopenharmony_ci TP_PROTO( 114962306a36Sopenharmony_ci const struct inode *inode, 115062306a36Sopenharmony_ci int error 115162306a36Sopenharmony_ci ), 115262306a36Sopenharmony_ci 115362306a36Sopenharmony_ci TP_ARGS(inode, error), 115462306a36Sopenharmony_ci 115562306a36Sopenharmony_ci TP_STRUCT__entry( 115662306a36Sopenharmony_ci __field(dev_t, dev) 115762306a36Sopenharmony_ci __field(u32, fhandle) 115862306a36Sopenharmony_ci __field(u64, fileid) 115962306a36Sopenharmony_ci __field(unsigned long, error) 116062306a36Sopenharmony_ci ), 116162306a36Sopenharmony_ci 116262306a36Sopenharmony_ci TP_fast_assign( 116362306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 116462306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 116562306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 116662306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 116762306a36Sopenharmony_ci ), 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci TP_printk( 117062306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x", 117162306a36Sopenharmony_ci -__entry->error, 117262306a36Sopenharmony_ci show_nfs4_status(__entry->error), 117362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 117462306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 117562306a36Sopenharmony_ci __entry->fhandle 117662306a36Sopenharmony_ci ) 117762306a36Sopenharmony_ci); 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_ci#define DEFINE_NFS4_INODE_EVENT(name) \ 118062306a36Sopenharmony_ci DEFINE_EVENT(nfs4_inode_event, name, \ 118162306a36Sopenharmony_ci TP_PROTO( \ 118262306a36Sopenharmony_ci const struct inode *inode, \ 118362306a36Sopenharmony_ci int error \ 118462306a36Sopenharmony_ci ), \ 118562306a36Sopenharmony_ci TP_ARGS(inode, error)) 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_access); 118862306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_readlink); 118962306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_readdir); 119062306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_get_acl); 119162306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_set_acl); 119262306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_SECURITY_LABEL 119362306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_get_security_label); 119462306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_set_security_label); 119562306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_SECURITY_LABEL */ 119662306a36Sopenharmony_ci 119762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_inode_stateid_event, 119862306a36Sopenharmony_ci TP_PROTO( 119962306a36Sopenharmony_ci const struct inode *inode, 120062306a36Sopenharmony_ci const nfs4_stateid *stateid, 120162306a36Sopenharmony_ci int error 120262306a36Sopenharmony_ci ), 120362306a36Sopenharmony_ci 120462306a36Sopenharmony_ci TP_ARGS(inode, stateid, error), 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ci TP_STRUCT__entry( 120762306a36Sopenharmony_ci __field(dev_t, dev) 120862306a36Sopenharmony_ci __field(u32, fhandle) 120962306a36Sopenharmony_ci __field(u64, fileid) 121062306a36Sopenharmony_ci __field(unsigned long, error) 121162306a36Sopenharmony_ci __field(int, stateid_seq) 121262306a36Sopenharmony_ci __field(u32, stateid_hash) 121362306a36Sopenharmony_ci ), 121462306a36Sopenharmony_ci 121562306a36Sopenharmony_ci TP_fast_assign( 121662306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 121762306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 121862306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 121962306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 122062306a36Sopenharmony_ci __entry->stateid_seq = 122162306a36Sopenharmony_ci be32_to_cpu(stateid->seqid); 122262306a36Sopenharmony_ci __entry->stateid_hash = 122362306a36Sopenharmony_ci nfs_stateid_hash(stateid); 122462306a36Sopenharmony_ci ), 122562306a36Sopenharmony_ci 122662306a36Sopenharmony_ci TP_printk( 122762306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 122862306a36Sopenharmony_ci "stateid=%d:0x%08x", 122962306a36Sopenharmony_ci -__entry->error, 123062306a36Sopenharmony_ci show_nfs4_status(__entry->error), 123162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 123262306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 123362306a36Sopenharmony_ci __entry->fhandle, 123462306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 123562306a36Sopenharmony_ci ) 123662306a36Sopenharmony_ci); 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ci#define DEFINE_NFS4_INODE_STATEID_EVENT(name) \ 123962306a36Sopenharmony_ci DEFINE_EVENT(nfs4_inode_stateid_event, name, \ 124062306a36Sopenharmony_ci TP_PROTO( \ 124162306a36Sopenharmony_ci const struct inode *inode, \ 124262306a36Sopenharmony_ci const nfs4_stateid *stateid, \ 124362306a36Sopenharmony_ci int error \ 124462306a36Sopenharmony_ci ), \ 124562306a36Sopenharmony_ci TP_ARGS(inode, stateid, error)) 124662306a36Sopenharmony_ci 124762306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_setattr); 124862306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_delegreturn); 124962306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_open_stateid_update); 125062306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_open_stateid_update_wait); 125162306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_close_stateid_update_wait); 125262306a36Sopenharmony_ci 125362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_getattr_event, 125462306a36Sopenharmony_ci TP_PROTO( 125562306a36Sopenharmony_ci const struct nfs_server *server, 125662306a36Sopenharmony_ci const struct nfs_fh *fhandle, 125762306a36Sopenharmony_ci const struct nfs_fattr *fattr, 125862306a36Sopenharmony_ci int error 125962306a36Sopenharmony_ci ), 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ci TP_ARGS(server, fhandle, fattr, error), 126262306a36Sopenharmony_ci 126362306a36Sopenharmony_ci TP_STRUCT__entry( 126462306a36Sopenharmony_ci __field(dev_t, dev) 126562306a36Sopenharmony_ci __field(u32, fhandle) 126662306a36Sopenharmony_ci __field(u64, fileid) 126762306a36Sopenharmony_ci __field(unsigned int, valid) 126862306a36Sopenharmony_ci __field(unsigned long, error) 126962306a36Sopenharmony_ci ), 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_ci TP_fast_assign( 127262306a36Sopenharmony_ci __entry->dev = server->s_dev; 127362306a36Sopenharmony_ci __entry->valid = fattr->valid; 127462306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fhandle); 127562306a36Sopenharmony_ci __entry->fileid = (fattr->valid & NFS_ATTR_FATTR_FILEID) ? fattr->fileid : 0; 127662306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 127762306a36Sopenharmony_ci ), 127862306a36Sopenharmony_ci 127962306a36Sopenharmony_ci TP_printk( 128062306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 128162306a36Sopenharmony_ci "valid=%s", 128262306a36Sopenharmony_ci -__entry->error, 128362306a36Sopenharmony_ci show_nfs4_status(__entry->error), 128462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 128562306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 128662306a36Sopenharmony_ci __entry->fhandle, 128762306a36Sopenharmony_ci show_nfs_fattr_flags(__entry->valid) 128862306a36Sopenharmony_ci ) 128962306a36Sopenharmony_ci); 129062306a36Sopenharmony_ci 129162306a36Sopenharmony_ci#define DEFINE_NFS4_GETATTR_EVENT(name) \ 129262306a36Sopenharmony_ci DEFINE_EVENT(nfs4_getattr_event, name, \ 129362306a36Sopenharmony_ci TP_PROTO( \ 129462306a36Sopenharmony_ci const struct nfs_server *server, \ 129562306a36Sopenharmony_ci const struct nfs_fh *fhandle, \ 129662306a36Sopenharmony_ci const struct nfs_fattr *fattr, \ 129762306a36Sopenharmony_ci int error \ 129862306a36Sopenharmony_ci ), \ 129962306a36Sopenharmony_ci TP_ARGS(server, fhandle, fattr, error)) 130062306a36Sopenharmony_ciDEFINE_NFS4_GETATTR_EVENT(nfs4_getattr); 130162306a36Sopenharmony_ciDEFINE_NFS4_GETATTR_EVENT(nfs4_lookup_root); 130262306a36Sopenharmony_ciDEFINE_NFS4_GETATTR_EVENT(nfs4_fsinfo); 130362306a36Sopenharmony_ci 130462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_inode_callback_event, 130562306a36Sopenharmony_ci TP_PROTO( 130662306a36Sopenharmony_ci const struct nfs_client *clp, 130762306a36Sopenharmony_ci const struct nfs_fh *fhandle, 130862306a36Sopenharmony_ci const struct inode *inode, 130962306a36Sopenharmony_ci int error 131062306a36Sopenharmony_ci ), 131162306a36Sopenharmony_ci 131262306a36Sopenharmony_ci TP_ARGS(clp, fhandle, inode, error), 131362306a36Sopenharmony_ci 131462306a36Sopenharmony_ci TP_STRUCT__entry( 131562306a36Sopenharmony_ci __field(unsigned long, error) 131662306a36Sopenharmony_ci __field(dev_t, dev) 131762306a36Sopenharmony_ci __field(u32, fhandle) 131862306a36Sopenharmony_ci __field(u64, fileid) 131962306a36Sopenharmony_ci __string(dstaddr, clp ? clp->cl_hostname : "unknown") 132062306a36Sopenharmony_ci ), 132162306a36Sopenharmony_ci 132262306a36Sopenharmony_ci TP_fast_assign( 132362306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 132462306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fhandle); 132562306a36Sopenharmony_ci if (!IS_ERR_OR_NULL(inode)) { 132662306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 132762306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 132862306a36Sopenharmony_ci } else { 132962306a36Sopenharmony_ci __entry->fileid = 0; 133062306a36Sopenharmony_ci __entry->dev = 0; 133162306a36Sopenharmony_ci } 133262306a36Sopenharmony_ci __assign_str(dstaddr, clp ? clp->cl_hostname : "unknown"); 133362306a36Sopenharmony_ci ), 133462306a36Sopenharmony_ci 133562306a36Sopenharmony_ci TP_printk( 133662306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 133762306a36Sopenharmony_ci "dstaddr=%s", 133862306a36Sopenharmony_ci -__entry->error, 133962306a36Sopenharmony_ci show_nfs4_status(__entry->error), 134062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 134162306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 134262306a36Sopenharmony_ci __entry->fhandle, 134362306a36Sopenharmony_ci __get_str(dstaddr) 134462306a36Sopenharmony_ci ) 134562306a36Sopenharmony_ci); 134662306a36Sopenharmony_ci 134762306a36Sopenharmony_ci#define DEFINE_NFS4_INODE_CALLBACK_EVENT(name) \ 134862306a36Sopenharmony_ci DEFINE_EVENT(nfs4_inode_callback_event, name, \ 134962306a36Sopenharmony_ci TP_PROTO( \ 135062306a36Sopenharmony_ci const struct nfs_client *clp, \ 135162306a36Sopenharmony_ci const struct nfs_fh *fhandle, \ 135262306a36Sopenharmony_ci const struct inode *inode, \ 135362306a36Sopenharmony_ci int error \ 135462306a36Sopenharmony_ci ), \ 135562306a36Sopenharmony_ci TP_ARGS(clp, fhandle, inode, error)) 135662306a36Sopenharmony_ciDEFINE_NFS4_INODE_CALLBACK_EVENT(nfs4_cb_getattr); 135762306a36Sopenharmony_ci 135862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_inode_stateid_callback_event, 135962306a36Sopenharmony_ci TP_PROTO( 136062306a36Sopenharmony_ci const struct nfs_client *clp, 136162306a36Sopenharmony_ci const struct nfs_fh *fhandle, 136262306a36Sopenharmony_ci const struct inode *inode, 136362306a36Sopenharmony_ci const nfs4_stateid *stateid, 136462306a36Sopenharmony_ci int error 136562306a36Sopenharmony_ci ), 136662306a36Sopenharmony_ci 136762306a36Sopenharmony_ci TP_ARGS(clp, fhandle, inode, stateid, error), 136862306a36Sopenharmony_ci 136962306a36Sopenharmony_ci TP_STRUCT__entry( 137062306a36Sopenharmony_ci __field(unsigned long, error) 137162306a36Sopenharmony_ci __field(dev_t, dev) 137262306a36Sopenharmony_ci __field(u32, fhandle) 137362306a36Sopenharmony_ci __field(u64, fileid) 137462306a36Sopenharmony_ci __string(dstaddr, clp ? clp->cl_hostname : "unknown") 137562306a36Sopenharmony_ci __field(int, stateid_seq) 137662306a36Sopenharmony_ci __field(u32, stateid_hash) 137762306a36Sopenharmony_ci ), 137862306a36Sopenharmony_ci 137962306a36Sopenharmony_ci TP_fast_assign( 138062306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 138162306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fhandle); 138262306a36Sopenharmony_ci if (!IS_ERR_OR_NULL(inode)) { 138362306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 138462306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 138562306a36Sopenharmony_ci } else { 138662306a36Sopenharmony_ci __entry->fileid = 0; 138762306a36Sopenharmony_ci __entry->dev = 0; 138862306a36Sopenharmony_ci } 138962306a36Sopenharmony_ci __assign_str(dstaddr, clp ? clp->cl_hostname : "unknown"); 139062306a36Sopenharmony_ci __entry->stateid_seq = 139162306a36Sopenharmony_ci be32_to_cpu(stateid->seqid); 139262306a36Sopenharmony_ci __entry->stateid_hash = 139362306a36Sopenharmony_ci nfs_stateid_hash(stateid); 139462306a36Sopenharmony_ci ), 139562306a36Sopenharmony_ci 139662306a36Sopenharmony_ci TP_printk( 139762306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 139862306a36Sopenharmony_ci "stateid=%d:0x%08x dstaddr=%s", 139962306a36Sopenharmony_ci -__entry->error, 140062306a36Sopenharmony_ci show_nfs4_status(__entry->error), 140162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 140262306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 140362306a36Sopenharmony_ci __entry->fhandle, 140462306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 140562306a36Sopenharmony_ci __get_str(dstaddr) 140662306a36Sopenharmony_ci ) 140762306a36Sopenharmony_ci); 140862306a36Sopenharmony_ci 140962306a36Sopenharmony_ci#define DEFINE_NFS4_INODE_STATEID_CALLBACK_EVENT(name) \ 141062306a36Sopenharmony_ci DEFINE_EVENT(nfs4_inode_stateid_callback_event, name, \ 141162306a36Sopenharmony_ci TP_PROTO( \ 141262306a36Sopenharmony_ci const struct nfs_client *clp, \ 141362306a36Sopenharmony_ci const struct nfs_fh *fhandle, \ 141462306a36Sopenharmony_ci const struct inode *inode, \ 141562306a36Sopenharmony_ci const nfs4_stateid *stateid, \ 141662306a36Sopenharmony_ci int error \ 141762306a36Sopenharmony_ci ), \ 141862306a36Sopenharmony_ci TP_ARGS(clp, fhandle, inode, stateid, error)) 141962306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_CALLBACK_EVENT(nfs4_cb_recall); 142062306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_CALLBACK_EVENT(nfs4_cb_layoutrecall_file); 142162306a36Sopenharmony_ci 142262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_idmap_event, 142362306a36Sopenharmony_ci TP_PROTO( 142462306a36Sopenharmony_ci const char *name, 142562306a36Sopenharmony_ci int len, 142662306a36Sopenharmony_ci u32 id, 142762306a36Sopenharmony_ci int error 142862306a36Sopenharmony_ci ), 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci TP_ARGS(name, len, id, error), 143162306a36Sopenharmony_ci 143262306a36Sopenharmony_ci TP_STRUCT__entry( 143362306a36Sopenharmony_ci __field(unsigned long, error) 143462306a36Sopenharmony_ci __field(u32, id) 143562306a36Sopenharmony_ci __dynamic_array(char, name, len > 0 ? len + 1 : 1) 143662306a36Sopenharmony_ci ), 143762306a36Sopenharmony_ci 143862306a36Sopenharmony_ci TP_fast_assign( 143962306a36Sopenharmony_ci if (len < 0) 144062306a36Sopenharmony_ci len = 0; 144162306a36Sopenharmony_ci __entry->error = error < 0 ? error : 0; 144262306a36Sopenharmony_ci __entry->id = id; 144362306a36Sopenharmony_ci memcpy(__get_str(name), name, len); 144462306a36Sopenharmony_ci __get_str(name)[len] = 0; 144562306a36Sopenharmony_ci ), 144662306a36Sopenharmony_ci 144762306a36Sopenharmony_ci TP_printk( 144862306a36Sopenharmony_ci "error=%ld (%s) id=%u name=%s", 144962306a36Sopenharmony_ci -__entry->error, show_nfs4_status(__entry->error), 145062306a36Sopenharmony_ci __entry->id, 145162306a36Sopenharmony_ci __get_str(name) 145262306a36Sopenharmony_ci ) 145362306a36Sopenharmony_ci); 145462306a36Sopenharmony_ci#define DEFINE_NFS4_IDMAP_EVENT(name) \ 145562306a36Sopenharmony_ci DEFINE_EVENT(nfs4_idmap_event, name, \ 145662306a36Sopenharmony_ci TP_PROTO( \ 145762306a36Sopenharmony_ci const char *name, \ 145862306a36Sopenharmony_ci int len, \ 145962306a36Sopenharmony_ci u32 id, \ 146062306a36Sopenharmony_ci int error \ 146162306a36Sopenharmony_ci ), \ 146262306a36Sopenharmony_ci TP_ARGS(name, len, id, error)) 146362306a36Sopenharmony_ciDEFINE_NFS4_IDMAP_EVENT(nfs4_map_name_to_uid); 146462306a36Sopenharmony_ciDEFINE_NFS4_IDMAP_EVENT(nfs4_map_group_to_gid); 146562306a36Sopenharmony_ciDEFINE_NFS4_IDMAP_EVENT(nfs4_map_uid_to_name); 146662306a36Sopenharmony_ciDEFINE_NFS4_IDMAP_EVENT(nfs4_map_gid_to_group); 146762306a36Sopenharmony_ci 146862306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 146962306a36Sopenharmony_ci#define NFS4_LSEG_LAYOUT_STATEID_HASH(lseg) \ 147062306a36Sopenharmony_ci (lseg ? nfs_stateid_hash(&lseg->pls_layout->plh_stateid) : 0) 147162306a36Sopenharmony_ci#else 147262306a36Sopenharmony_ci#define NFS4_LSEG_LAYOUT_STATEID_HASH(lseg) (0) 147362306a36Sopenharmony_ci#endif 147462306a36Sopenharmony_ci 147562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_read_event, 147662306a36Sopenharmony_ci TP_PROTO( 147762306a36Sopenharmony_ci const struct nfs_pgio_header *hdr, 147862306a36Sopenharmony_ci int error 147962306a36Sopenharmony_ci ), 148062306a36Sopenharmony_ci 148162306a36Sopenharmony_ci TP_ARGS(hdr, error), 148262306a36Sopenharmony_ci 148362306a36Sopenharmony_ci TP_STRUCT__entry( 148462306a36Sopenharmony_ci __field(dev_t, dev) 148562306a36Sopenharmony_ci __field(u32, fhandle) 148662306a36Sopenharmony_ci __field(u64, fileid) 148762306a36Sopenharmony_ci __field(loff_t, offset) 148862306a36Sopenharmony_ci __field(u32, arg_count) 148962306a36Sopenharmony_ci __field(u32, res_count) 149062306a36Sopenharmony_ci __field(unsigned long, error) 149162306a36Sopenharmony_ci __field(int, stateid_seq) 149262306a36Sopenharmony_ci __field(u32, stateid_hash) 149362306a36Sopenharmony_ci __field(int, layoutstateid_seq) 149462306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 149562306a36Sopenharmony_ci ), 149662306a36Sopenharmony_ci 149762306a36Sopenharmony_ci TP_fast_assign( 149862306a36Sopenharmony_ci const struct inode *inode = hdr->inode; 149962306a36Sopenharmony_ci const struct nfs_inode *nfsi = NFS_I(inode); 150062306a36Sopenharmony_ci const struct nfs_fh *fh = hdr->args.fh ? 150162306a36Sopenharmony_ci hdr->args.fh : &nfsi->fh; 150262306a36Sopenharmony_ci const struct nfs4_state *state = 150362306a36Sopenharmony_ci hdr->args.context->state; 150462306a36Sopenharmony_ci const struct pnfs_layout_segment *lseg = hdr->lseg; 150562306a36Sopenharmony_ci 150662306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 150762306a36Sopenharmony_ci __entry->fileid = nfsi->fileid; 150862306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fh); 150962306a36Sopenharmony_ci __entry->offset = hdr->args.offset; 151062306a36Sopenharmony_ci __entry->arg_count = hdr->args.count; 151162306a36Sopenharmony_ci __entry->res_count = hdr->res.count; 151262306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 151362306a36Sopenharmony_ci __entry->stateid_seq = 151462306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 151562306a36Sopenharmony_ci __entry->stateid_hash = 151662306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 151762306a36Sopenharmony_ci __entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0; 151862306a36Sopenharmony_ci __entry->layoutstateid_hash = 151962306a36Sopenharmony_ci NFS4_LSEG_LAYOUT_STATEID_HASH(lseg); 152062306a36Sopenharmony_ci ), 152162306a36Sopenharmony_ci 152262306a36Sopenharmony_ci TP_printk( 152362306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 152462306a36Sopenharmony_ci "offset=%lld count=%u res=%u stateid=%d:0x%08x " 152562306a36Sopenharmony_ci "layoutstateid=%d:0x%08x", 152662306a36Sopenharmony_ci -__entry->error, 152762306a36Sopenharmony_ci show_nfs4_status(__entry->error), 152862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 152962306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 153062306a36Sopenharmony_ci __entry->fhandle, 153162306a36Sopenharmony_ci (long long)__entry->offset, 153262306a36Sopenharmony_ci __entry->arg_count, __entry->res_count, 153362306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 153462306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash 153562306a36Sopenharmony_ci ) 153662306a36Sopenharmony_ci); 153762306a36Sopenharmony_ci#define DEFINE_NFS4_READ_EVENT(name) \ 153862306a36Sopenharmony_ci DEFINE_EVENT(nfs4_read_event, name, \ 153962306a36Sopenharmony_ci TP_PROTO( \ 154062306a36Sopenharmony_ci const struct nfs_pgio_header *hdr, \ 154162306a36Sopenharmony_ci int error \ 154262306a36Sopenharmony_ci ), \ 154362306a36Sopenharmony_ci TP_ARGS(hdr, error)) 154462306a36Sopenharmony_ciDEFINE_NFS4_READ_EVENT(nfs4_read); 154562306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 154662306a36Sopenharmony_ciDEFINE_NFS4_READ_EVENT(nfs4_pnfs_read); 154762306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_1 */ 154862306a36Sopenharmony_ci 154962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_write_event, 155062306a36Sopenharmony_ci TP_PROTO( 155162306a36Sopenharmony_ci const struct nfs_pgio_header *hdr, 155262306a36Sopenharmony_ci int error 155362306a36Sopenharmony_ci ), 155462306a36Sopenharmony_ci 155562306a36Sopenharmony_ci TP_ARGS(hdr, error), 155662306a36Sopenharmony_ci 155762306a36Sopenharmony_ci TP_STRUCT__entry( 155862306a36Sopenharmony_ci __field(dev_t, dev) 155962306a36Sopenharmony_ci __field(u32, fhandle) 156062306a36Sopenharmony_ci __field(u64, fileid) 156162306a36Sopenharmony_ci __field(loff_t, offset) 156262306a36Sopenharmony_ci __field(u32, arg_count) 156362306a36Sopenharmony_ci __field(u32, res_count) 156462306a36Sopenharmony_ci __field(unsigned long, error) 156562306a36Sopenharmony_ci __field(int, stateid_seq) 156662306a36Sopenharmony_ci __field(u32, stateid_hash) 156762306a36Sopenharmony_ci __field(int, layoutstateid_seq) 156862306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 156962306a36Sopenharmony_ci ), 157062306a36Sopenharmony_ci 157162306a36Sopenharmony_ci TP_fast_assign( 157262306a36Sopenharmony_ci const struct inode *inode = hdr->inode; 157362306a36Sopenharmony_ci const struct nfs_inode *nfsi = NFS_I(inode); 157462306a36Sopenharmony_ci const struct nfs_fh *fh = hdr->args.fh ? 157562306a36Sopenharmony_ci hdr->args.fh : &nfsi->fh; 157662306a36Sopenharmony_ci const struct nfs4_state *state = 157762306a36Sopenharmony_ci hdr->args.context->state; 157862306a36Sopenharmony_ci const struct pnfs_layout_segment *lseg = hdr->lseg; 157962306a36Sopenharmony_ci 158062306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 158162306a36Sopenharmony_ci __entry->fileid = nfsi->fileid; 158262306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fh); 158362306a36Sopenharmony_ci __entry->offset = hdr->args.offset; 158462306a36Sopenharmony_ci __entry->arg_count = hdr->args.count; 158562306a36Sopenharmony_ci __entry->res_count = hdr->res.count; 158662306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 158762306a36Sopenharmony_ci __entry->stateid_seq = 158862306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 158962306a36Sopenharmony_ci __entry->stateid_hash = 159062306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 159162306a36Sopenharmony_ci __entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0; 159262306a36Sopenharmony_ci __entry->layoutstateid_hash = 159362306a36Sopenharmony_ci NFS4_LSEG_LAYOUT_STATEID_HASH(lseg); 159462306a36Sopenharmony_ci ), 159562306a36Sopenharmony_ci 159662306a36Sopenharmony_ci TP_printk( 159762306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 159862306a36Sopenharmony_ci "offset=%lld count=%u res=%u stateid=%d:0x%08x " 159962306a36Sopenharmony_ci "layoutstateid=%d:0x%08x", 160062306a36Sopenharmony_ci -__entry->error, 160162306a36Sopenharmony_ci show_nfs4_status(__entry->error), 160262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 160362306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 160462306a36Sopenharmony_ci __entry->fhandle, 160562306a36Sopenharmony_ci (long long)__entry->offset, 160662306a36Sopenharmony_ci __entry->arg_count, __entry->res_count, 160762306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 160862306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash 160962306a36Sopenharmony_ci ) 161062306a36Sopenharmony_ci); 161162306a36Sopenharmony_ci 161262306a36Sopenharmony_ci#define DEFINE_NFS4_WRITE_EVENT(name) \ 161362306a36Sopenharmony_ci DEFINE_EVENT(nfs4_write_event, name, \ 161462306a36Sopenharmony_ci TP_PROTO( \ 161562306a36Sopenharmony_ci const struct nfs_pgio_header *hdr, \ 161662306a36Sopenharmony_ci int error \ 161762306a36Sopenharmony_ci ), \ 161862306a36Sopenharmony_ci TP_ARGS(hdr, error)) 161962306a36Sopenharmony_ciDEFINE_NFS4_WRITE_EVENT(nfs4_write); 162062306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 162162306a36Sopenharmony_ciDEFINE_NFS4_WRITE_EVENT(nfs4_pnfs_write); 162262306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_1 */ 162362306a36Sopenharmony_ci 162462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_commit_event, 162562306a36Sopenharmony_ci TP_PROTO( 162662306a36Sopenharmony_ci const struct nfs_commit_data *data, 162762306a36Sopenharmony_ci int error 162862306a36Sopenharmony_ci ), 162962306a36Sopenharmony_ci 163062306a36Sopenharmony_ci TP_ARGS(data, error), 163162306a36Sopenharmony_ci 163262306a36Sopenharmony_ci TP_STRUCT__entry( 163362306a36Sopenharmony_ci __field(dev_t, dev) 163462306a36Sopenharmony_ci __field(u32, fhandle) 163562306a36Sopenharmony_ci __field(u64, fileid) 163662306a36Sopenharmony_ci __field(unsigned long, error) 163762306a36Sopenharmony_ci __field(loff_t, offset) 163862306a36Sopenharmony_ci __field(u32, count) 163962306a36Sopenharmony_ci __field(int, layoutstateid_seq) 164062306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 164162306a36Sopenharmony_ci ), 164262306a36Sopenharmony_ci 164362306a36Sopenharmony_ci TP_fast_assign( 164462306a36Sopenharmony_ci const struct inode *inode = data->inode; 164562306a36Sopenharmony_ci const struct nfs_inode *nfsi = NFS_I(inode); 164662306a36Sopenharmony_ci const struct nfs_fh *fh = data->args.fh ? 164762306a36Sopenharmony_ci data->args.fh : &nfsi->fh; 164862306a36Sopenharmony_ci const struct pnfs_layout_segment *lseg = data->lseg; 164962306a36Sopenharmony_ci 165062306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 165162306a36Sopenharmony_ci __entry->fileid = nfsi->fileid; 165262306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fh); 165362306a36Sopenharmony_ci __entry->offset = data->args.offset; 165462306a36Sopenharmony_ci __entry->count = data->args.count; 165562306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 165662306a36Sopenharmony_ci __entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0; 165762306a36Sopenharmony_ci __entry->layoutstateid_hash = 165862306a36Sopenharmony_ci NFS4_LSEG_LAYOUT_STATEID_HASH(lseg); 165962306a36Sopenharmony_ci ), 166062306a36Sopenharmony_ci 166162306a36Sopenharmony_ci TP_printk( 166262306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 166362306a36Sopenharmony_ci "offset=%lld count=%u layoutstateid=%d:0x%08x", 166462306a36Sopenharmony_ci -__entry->error, 166562306a36Sopenharmony_ci show_nfs4_status(__entry->error), 166662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 166762306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 166862306a36Sopenharmony_ci __entry->fhandle, 166962306a36Sopenharmony_ci (long long)__entry->offset, 167062306a36Sopenharmony_ci __entry->count, 167162306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash 167262306a36Sopenharmony_ci ) 167362306a36Sopenharmony_ci); 167462306a36Sopenharmony_ci#define DEFINE_NFS4_COMMIT_EVENT(name) \ 167562306a36Sopenharmony_ci DEFINE_EVENT(nfs4_commit_event, name, \ 167662306a36Sopenharmony_ci TP_PROTO( \ 167762306a36Sopenharmony_ci const struct nfs_commit_data *data, \ 167862306a36Sopenharmony_ci int error \ 167962306a36Sopenharmony_ci ), \ 168062306a36Sopenharmony_ci TP_ARGS(data, error)) 168162306a36Sopenharmony_ciDEFINE_NFS4_COMMIT_EVENT(nfs4_commit); 168262306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_1 168362306a36Sopenharmony_ciDEFINE_NFS4_COMMIT_EVENT(nfs4_pnfs_commit_ds); 168462306a36Sopenharmony_ci 168562306a36Sopenharmony_ciTRACE_EVENT(nfs4_layoutget, 168662306a36Sopenharmony_ci TP_PROTO( 168762306a36Sopenharmony_ci const struct nfs_open_context *ctx, 168862306a36Sopenharmony_ci const struct pnfs_layout_range *args, 168962306a36Sopenharmony_ci const struct pnfs_layout_range *res, 169062306a36Sopenharmony_ci const nfs4_stateid *layout_stateid, 169162306a36Sopenharmony_ci int error 169262306a36Sopenharmony_ci ), 169362306a36Sopenharmony_ci 169462306a36Sopenharmony_ci TP_ARGS(ctx, args, res, layout_stateid, error), 169562306a36Sopenharmony_ci 169662306a36Sopenharmony_ci TP_STRUCT__entry( 169762306a36Sopenharmony_ci __field(dev_t, dev) 169862306a36Sopenharmony_ci __field(u32, fhandle) 169962306a36Sopenharmony_ci __field(u64, fileid) 170062306a36Sopenharmony_ci __field(u32, iomode) 170162306a36Sopenharmony_ci __field(u64, offset) 170262306a36Sopenharmony_ci __field(u64, count) 170362306a36Sopenharmony_ci __field(unsigned long, error) 170462306a36Sopenharmony_ci __field(int, stateid_seq) 170562306a36Sopenharmony_ci __field(u32, stateid_hash) 170662306a36Sopenharmony_ci __field(int, layoutstateid_seq) 170762306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 170862306a36Sopenharmony_ci ), 170962306a36Sopenharmony_ci 171062306a36Sopenharmony_ci TP_fast_assign( 171162306a36Sopenharmony_ci const struct inode *inode = d_inode(ctx->dentry); 171262306a36Sopenharmony_ci const struct nfs4_state *state = ctx->state; 171362306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 171462306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 171562306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 171662306a36Sopenharmony_ci __entry->iomode = args->iomode; 171762306a36Sopenharmony_ci __entry->offset = args->offset; 171862306a36Sopenharmony_ci __entry->count = args->length; 171962306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 172062306a36Sopenharmony_ci __entry->stateid_seq = 172162306a36Sopenharmony_ci be32_to_cpu(state->stateid.seqid); 172262306a36Sopenharmony_ci __entry->stateid_hash = 172362306a36Sopenharmony_ci nfs_stateid_hash(&state->stateid); 172462306a36Sopenharmony_ci if (!error) { 172562306a36Sopenharmony_ci __entry->layoutstateid_seq = 172662306a36Sopenharmony_ci be32_to_cpu(layout_stateid->seqid); 172762306a36Sopenharmony_ci __entry->layoutstateid_hash = 172862306a36Sopenharmony_ci nfs_stateid_hash(layout_stateid); 172962306a36Sopenharmony_ci } else { 173062306a36Sopenharmony_ci __entry->layoutstateid_seq = 0; 173162306a36Sopenharmony_ci __entry->layoutstateid_hash = 0; 173262306a36Sopenharmony_ci } 173362306a36Sopenharmony_ci ), 173462306a36Sopenharmony_ci 173562306a36Sopenharmony_ci TP_printk( 173662306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 173762306a36Sopenharmony_ci "iomode=%s offset=%llu count=%llu stateid=%d:0x%08x " 173862306a36Sopenharmony_ci "layoutstateid=%d:0x%08x", 173962306a36Sopenharmony_ci -__entry->error, 174062306a36Sopenharmony_ci show_nfs4_status(__entry->error), 174162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 174262306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 174362306a36Sopenharmony_ci __entry->fhandle, 174462306a36Sopenharmony_ci show_pnfs_layout_iomode(__entry->iomode), 174562306a36Sopenharmony_ci (unsigned long long)__entry->offset, 174662306a36Sopenharmony_ci (unsigned long long)__entry->count, 174762306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 174862306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash 174962306a36Sopenharmony_ci ) 175062306a36Sopenharmony_ci); 175162306a36Sopenharmony_ci 175262306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_layoutcommit); 175362306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_layoutreturn); 175462306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_layoutreturn_on_close); 175562306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_layouterror); 175662306a36Sopenharmony_ciDEFINE_NFS4_INODE_STATEID_EVENT(nfs4_layoutstats); 175762306a36Sopenharmony_ci 175862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_UNKNOWN); 175962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_NO_PNFS); 176062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_RD_ZEROLEN); 176162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_MDSTHRESH); 176262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_NOMEM); 176362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_BULK_RECALL); 176462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_IO_TEST_FAIL); 176562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_FOUND_CACHED); 176662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_RETURN); 176762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_BLOCKED); 176862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_INVALID_OPEN); 176962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_RETRY); 177062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET); 177162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_EXIT); 177262306a36Sopenharmony_ci 177362306a36Sopenharmony_ci#define show_pnfs_update_layout_reason(reason) \ 177462306a36Sopenharmony_ci __print_symbolic(reason, \ 177562306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_UNKNOWN, "unknown" }, \ 177662306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_NO_PNFS, "no pnfs" }, \ 177762306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_RD_ZEROLEN, "read+zerolen" }, \ 177862306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_MDSTHRESH, "mdsthresh" }, \ 177962306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_NOMEM, "nomem" }, \ 178062306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_BULK_RECALL, "bulk recall" }, \ 178162306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_IO_TEST_FAIL, "io test fail" }, \ 178262306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_FOUND_CACHED, "found cached" }, \ 178362306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_RETURN, "layoutreturn" }, \ 178462306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_BLOCKED, "layouts blocked" }, \ 178562306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_INVALID_OPEN, "invalid open" }, \ 178662306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_RETRY, "retrying" }, \ 178762306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET, "sent layoutget" }, \ 178862306a36Sopenharmony_ci { PNFS_UPDATE_LAYOUT_EXIT, "exit" }) 178962306a36Sopenharmony_ci 179062306a36Sopenharmony_ciTRACE_EVENT(pnfs_update_layout, 179162306a36Sopenharmony_ci TP_PROTO(struct inode *inode, 179262306a36Sopenharmony_ci loff_t pos, 179362306a36Sopenharmony_ci u64 count, 179462306a36Sopenharmony_ci enum pnfs_iomode iomode, 179562306a36Sopenharmony_ci struct pnfs_layout_hdr *lo, 179662306a36Sopenharmony_ci struct pnfs_layout_segment *lseg, 179762306a36Sopenharmony_ci enum pnfs_update_layout_reason reason 179862306a36Sopenharmony_ci ), 179962306a36Sopenharmony_ci TP_ARGS(inode, pos, count, iomode, lo, lseg, reason), 180062306a36Sopenharmony_ci TP_STRUCT__entry( 180162306a36Sopenharmony_ci __field(dev_t, dev) 180262306a36Sopenharmony_ci __field(u64, fileid) 180362306a36Sopenharmony_ci __field(u32, fhandle) 180462306a36Sopenharmony_ci __field(loff_t, pos) 180562306a36Sopenharmony_ci __field(u64, count) 180662306a36Sopenharmony_ci __field(enum pnfs_iomode, iomode) 180762306a36Sopenharmony_ci __field(int, layoutstateid_seq) 180862306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 180962306a36Sopenharmony_ci __field(long, lseg) 181062306a36Sopenharmony_ci __field(enum pnfs_update_layout_reason, reason) 181162306a36Sopenharmony_ci ), 181262306a36Sopenharmony_ci TP_fast_assign( 181362306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 181462306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 181562306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 181662306a36Sopenharmony_ci __entry->pos = pos; 181762306a36Sopenharmony_ci __entry->count = count; 181862306a36Sopenharmony_ci __entry->iomode = iomode; 181962306a36Sopenharmony_ci __entry->reason = reason; 182062306a36Sopenharmony_ci if (lo != NULL && pnfs_layout_is_valid(lo)) { 182162306a36Sopenharmony_ci __entry->layoutstateid_seq = 182262306a36Sopenharmony_ci be32_to_cpu(lo->plh_stateid.seqid); 182362306a36Sopenharmony_ci __entry->layoutstateid_hash = 182462306a36Sopenharmony_ci nfs_stateid_hash(&lo->plh_stateid); 182562306a36Sopenharmony_ci } else { 182662306a36Sopenharmony_ci __entry->layoutstateid_seq = 0; 182762306a36Sopenharmony_ci __entry->layoutstateid_hash = 0; 182862306a36Sopenharmony_ci } 182962306a36Sopenharmony_ci __entry->lseg = (long)lseg; 183062306a36Sopenharmony_ci ), 183162306a36Sopenharmony_ci TP_printk( 183262306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 183362306a36Sopenharmony_ci "iomode=%s pos=%llu count=%llu " 183462306a36Sopenharmony_ci "layoutstateid=%d:0x%08x lseg=0x%lx (%s)", 183562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 183662306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 183762306a36Sopenharmony_ci __entry->fhandle, 183862306a36Sopenharmony_ci show_pnfs_layout_iomode(__entry->iomode), 183962306a36Sopenharmony_ci (unsigned long long)__entry->pos, 184062306a36Sopenharmony_ci (unsigned long long)__entry->count, 184162306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash, 184262306a36Sopenharmony_ci __entry->lseg, 184362306a36Sopenharmony_ci show_pnfs_update_layout_reason(__entry->reason) 184462306a36Sopenharmony_ci ) 184562306a36Sopenharmony_ci); 184662306a36Sopenharmony_ci 184762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(pnfs_layout_event, 184862306a36Sopenharmony_ci TP_PROTO(struct inode *inode, 184962306a36Sopenharmony_ci loff_t pos, 185062306a36Sopenharmony_ci u64 count, 185162306a36Sopenharmony_ci enum pnfs_iomode iomode, 185262306a36Sopenharmony_ci struct pnfs_layout_hdr *lo, 185362306a36Sopenharmony_ci struct pnfs_layout_segment *lseg 185462306a36Sopenharmony_ci ), 185562306a36Sopenharmony_ci TP_ARGS(inode, pos, count, iomode, lo, lseg), 185662306a36Sopenharmony_ci TP_STRUCT__entry( 185762306a36Sopenharmony_ci __field(dev_t, dev) 185862306a36Sopenharmony_ci __field(u64, fileid) 185962306a36Sopenharmony_ci __field(u32, fhandle) 186062306a36Sopenharmony_ci __field(loff_t, pos) 186162306a36Sopenharmony_ci __field(u64, count) 186262306a36Sopenharmony_ci __field(enum pnfs_iomode, iomode) 186362306a36Sopenharmony_ci __field(int, layoutstateid_seq) 186462306a36Sopenharmony_ci __field(u32, layoutstateid_hash) 186562306a36Sopenharmony_ci __field(long, lseg) 186662306a36Sopenharmony_ci ), 186762306a36Sopenharmony_ci TP_fast_assign( 186862306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 186962306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 187062306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 187162306a36Sopenharmony_ci __entry->pos = pos; 187262306a36Sopenharmony_ci __entry->count = count; 187362306a36Sopenharmony_ci __entry->iomode = iomode; 187462306a36Sopenharmony_ci if (lo != NULL && pnfs_layout_is_valid(lo)) { 187562306a36Sopenharmony_ci __entry->layoutstateid_seq = 187662306a36Sopenharmony_ci be32_to_cpu(lo->plh_stateid.seqid); 187762306a36Sopenharmony_ci __entry->layoutstateid_hash = 187862306a36Sopenharmony_ci nfs_stateid_hash(&lo->plh_stateid); 187962306a36Sopenharmony_ci } else { 188062306a36Sopenharmony_ci __entry->layoutstateid_seq = 0; 188162306a36Sopenharmony_ci __entry->layoutstateid_hash = 0; 188262306a36Sopenharmony_ci } 188362306a36Sopenharmony_ci __entry->lseg = (long)lseg; 188462306a36Sopenharmony_ci ), 188562306a36Sopenharmony_ci TP_printk( 188662306a36Sopenharmony_ci "fileid=%02x:%02x:%llu fhandle=0x%08x " 188762306a36Sopenharmony_ci "iomode=%s pos=%llu count=%llu " 188862306a36Sopenharmony_ci "layoutstateid=%d:0x%08x lseg=0x%lx", 188962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 189062306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 189162306a36Sopenharmony_ci __entry->fhandle, 189262306a36Sopenharmony_ci show_pnfs_layout_iomode(__entry->iomode), 189362306a36Sopenharmony_ci (unsigned long long)__entry->pos, 189462306a36Sopenharmony_ci (unsigned long long)__entry->count, 189562306a36Sopenharmony_ci __entry->layoutstateid_seq, __entry->layoutstateid_hash, 189662306a36Sopenharmony_ci __entry->lseg 189762306a36Sopenharmony_ci ) 189862306a36Sopenharmony_ci); 189962306a36Sopenharmony_ci 190062306a36Sopenharmony_ci#define DEFINE_PNFS_LAYOUT_EVENT(name) \ 190162306a36Sopenharmony_ci DEFINE_EVENT(pnfs_layout_event, name, \ 190262306a36Sopenharmony_ci TP_PROTO(struct inode *inode, \ 190362306a36Sopenharmony_ci loff_t pos, \ 190462306a36Sopenharmony_ci u64 count, \ 190562306a36Sopenharmony_ci enum pnfs_iomode iomode, \ 190662306a36Sopenharmony_ci struct pnfs_layout_hdr *lo, \ 190762306a36Sopenharmony_ci struct pnfs_layout_segment *lseg \ 190862306a36Sopenharmony_ci ), \ 190962306a36Sopenharmony_ci TP_ARGS(inode, pos, count, iomode, lo, lseg)) 191062306a36Sopenharmony_ci 191162306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_pg_init_read); 191262306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_pg_init_write); 191362306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_pg_get_mirror_count); 191462306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_read_done); 191562306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_write_done); 191662306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_read_pagelist); 191762306a36Sopenharmony_ciDEFINE_PNFS_LAYOUT_EVENT(pnfs_mds_fallback_write_pagelist); 191862306a36Sopenharmony_ci 191962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_deviceid_event, 192062306a36Sopenharmony_ci TP_PROTO( 192162306a36Sopenharmony_ci const struct nfs_client *clp, 192262306a36Sopenharmony_ci const struct nfs4_deviceid *deviceid 192362306a36Sopenharmony_ci ), 192462306a36Sopenharmony_ci 192562306a36Sopenharmony_ci TP_ARGS(clp, deviceid), 192662306a36Sopenharmony_ci 192762306a36Sopenharmony_ci TP_STRUCT__entry( 192862306a36Sopenharmony_ci __string(dstaddr, clp->cl_hostname) 192962306a36Sopenharmony_ci __array(unsigned char, deviceid, NFS4_DEVICEID4_SIZE) 193062306a36Sopenharmony_ci ), 193162306a36Sopenharmony_ci 193262306a36Sopenharmony_ci TP_fast_assign( 193362306a36Sopenharmony_ci __assign_str(dstaddr, clp->cl_hostname); 193462306a36Sopenharmony_ci memcpy(__entry->deviceid, deviceid->data, 193562306a36Sopenharmony_ci NFS4_DEVICEID4_SIZE); 193662306a36Sopenharmony_ci ), 193762306a36Sopenharmony_ci 193862306a36Sopenharmony_ci TP_printk( 193962306a36Sopenharmony_ci "deviceid=%s, dstaddr=%s", 194062306a36Sopenharmony_ci __print_hex(__entry->deviceid, NFS4_DEVICEID4_SIZE), 194162306a36Sopenharmony_ci __get_str(dstaddr) 194262306a36Sopenharmony_ci ) 194362306a36Sopenharmony_ci); 194462306a36Sopenharmony_ci#define DEFINE_PNFS_DEVICEID_EVENT(name) \ 194562306a36Sopenharmony_ci DEFINE_EVENT(nfs4_deviceid_event, name, \ 194662306a36Sopenharmony_ci TP_PROTO(const struct nfs_client *clp, \ 194762306a36Sopenharmony_ci const struct nfs4_deviceid *deviceid \ 194862306a36Sopenharmony_ci ), \ 194962306a36Sopenharmony_ci TP_ARGS(clp, deviceid)) 195062306a36Sopenharmony_ciDEFINE_PNFS_DEVICEID_EVENT(nfs4_deviceid_free); 195162306a36Sopenharmony_ci 195262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_deviceid_status, 195362306a36Sopenharmony_ci TP_PROTO( 195462306a36Sopenharmony_ci const struct nfs_server *server, 195562306a36Sopenharmony_ci const struct nfs4_deviceid *deviceid, 195662306a36Sopenharmony_ci int status 195762306a36Sopenharmony_ci ), 195862306a36Sopenharmony_ci 195962306a36Sopenharmony_ci TP_ARGS(server, deviceid, status), 196062306a36Sopenharmony_ci 196162306a36Sopenharmony_ci TP_STRUCT__entry( 196262306a36Sopenharmony_ci __field(dev_t, dev) 196362306a36Sopenharmony_ci __field(int, status) 196462306a36Sopenharmony_ci __string(dstaddr, server->nfs_client->cl_hostname) 196562306a36Sopenharmony_ci __array(unsigned char, deviceid, NFS4_DEVICEID4_SIZE) 196662306a36Sopenharmony_ci ), 196762306a36Sopenharmony_ci 196862306a36Sopenharmony_ci TP_fast_assign( 196962306a36Sopenharmony_ci __entry->dev = server->s_dev; 197062306a36Sopenharmony_ci __entry->status = status; 197162306a36Sopenharmony_ci __assign_str(dstaddr, server->nfs_client->cl_hostname); 197262306a36Sopenharmony_ci memcpy(__entry->deviceid, deviceid->data, 197362306a36Sopenharmony_ci NFS4_DEVICEID4_SIZE); 197462306a36Sopenharmony_ci ), 197562306a36Sopenharmony_ci 197662306a36Sopenharmony_ci TP_printk( 197762306a36Sopenharmony_ci "dev=%02x:%02x: deviceid=%s, dstaddr=%s, status=%d", 197862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 197962306a36Sopenharmony_ci __print_hex(__entry->deviceid, NFS4_DEVICEID4_SIZE), 198062306a36Sopenharmony_ci __get_str(dstaddr), 198162306a36Sopenharmony_ci __entry->status 198262306a36Sopenharmony_ci ) 198362306a36Sopenharmony_ci); 198462306a36Sopenharmony_ci#define DEFINE_PNFS_DEVICEID_STATUS(name) \ 198562306a36Sopenharmony_ci DEFINE_EVENT(nfs4_deviceid_status, name, \ 198662306a36Sopenharmony_ci TP_PROTO(const struct nfs_server *server, \ 198762306a36Sopenharmony_ci const struct nfs4_deviceid *deviceid, \ 198862306a36Sopenharmony_ci int status \ 198962306a36Sopenharmony_ci ), \ 199062306a36Sopenharmony_ci TP_ARGS(server, deviceid, status)) 199162306a36Sopenharmony_ciDEFINE_PNFS_DEVICEID_STATUS(nfs4_getdeviceinfo); 199262306a36Sopenharmony_ciDEFINE_PNFS_DEVICEID_STATUS(nfs4_find_deviceid); 199362306a36Sopenharmony_ci 199462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_flexfiles_io_event, 199562306a36Sopenharmony_ci TP_PROTO( 199662306a36Sopenharmony_ci const struct nfs_pgio_header *hdr 199762306a36Sopenharmony_ci ), 199862306a36Sopenharmony_ci 199962306a36Sopenharmony_ci TP_ARGS(hdr), 200062306a36Sopenharmony_ci 200162306a36Sopenharmony_ci TP_STRUCT__entry( 200262306a36Sopenharmony_ci __field(unsigned long, error) 200362306a36Sopenharmony_ci __field(dev_t, dev) 200462306a36Sopenharmony_ci __field(u32, fhandle) 200562306a36Sopenharmony_ci __field(u64, fileid) 200662306a36Sopenharmony_ci __field(loff_t, offset) 200762306a36Sopenharmony_ci __field(u32, count) 200862306a36Sopenharmony_ci __field(int, stateid_seq) 200962306a36Sopenharmony_ci __field(u32, stateid_hash) 201062306a36Sopenharmony_ci __string(dstaddr, hdr->ds_clp ? 201162306a36Sopenharmony_ci rpc_peeraddr2str(hdr->ds_clp->cl_rpcclient, 201262306a36Sopenharmony_ci RPC_DISPLAY_ADDR) : "unknown") 201362306a36Sopenharmony_ci ), 201462306a36Sopenharmony_ci 201562306a36Sopenharmony_ci TP_fast_assign( 201662306a36Sopenharmony_ci const struct inode *inode = hdr->inode; 201762306a36Sopenharmony_ci 201862306a36Sopenharmony_ci __entry->error = hdr->res.op_status; 201962306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(hdr->args.fh); 202062306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 202162306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 202262306a36Sopenharmony_ci __entry->offset = hdr->args.offset; 202362306a36Sopenharmony_ci __entry->count = hdr->args.count; 202462306a36Sopenharmony_ci __entry->stateid_seq = 202562306a36Sopenharmony_ci be32_to_cpu(hdr->args.stateid.seqid); 202662306a36Sopenharmony_ci __entry->stateid_hash = 202762306a36Sopenharmony_ci nfs_stateid_hash(&hdr->args.stateid); 202862306a36Sopenharmony_ci __assign_str(dstaddr, hdr->ds_clp ? 202962306a36Sopenharmony_ci rpc_peeraddr2str(hdr->ds_clp->cl_rpcclient, 203062306a36Sopenharmony_ci RPC_DISPLAY_ADDR) : "unknown"); 203162306a36Sopenharmony_ci ), 203262306a36Sopenharmony_ci 203362306a36Sopenharmony_ci TP_printk( 203462306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 203562306a36Sopenharmony_ci "offset=%llu count=%u stateid=%d:0x%08x dstaddr=%s", 203662306a36Sopenharmony_ci -__entry->error, 203762306a36Sopenharmony_ci show_nfs4_status(__entry->error), 203862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 203962306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 204062306a36Sopenharmony_ci __entry->fhandle, 204162306a36Sopenharmony_ci __entry->offset, __entry->count, 204262306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 204362306a36Sopenharmony_ci __get_str(dstaddr) 204462306a36Sopenharmony_ci ) 204562306a36Sopenharmony_ci); 204662306a36Sopenharmony_ci 204762306a36Sopenharmony_ci#define DEFINE_NFS4_FLEXFILES_IO_EVENT(name) \ 204862306a36Sopenharmony_ci DEFINE_EVENT(nfs4_flexfiles_io_event, name, \ 204962306a36Sopenharmony_ci TP_PROTO( \ 205062306a36Sopenharmony_ci const struct nfs_pgio_header *hdr \ 205162306a36Sopenharmony_ci ), \ 205262306a36Sopenharmony_ci TP_ARGS(hdr)) 205362306a36Sopenharmony_ciDEFINE_NFS4_FLEXFILES_IO_EVENT(ff_layout_read_error); 205462306a36Sopenharmony_ciDEFINE_NFS4_FLEXFILES_IO_EVENT(ff_layout_write_error); 205562306a36Sopenharmony_ci 205662306a36Sopenharmony_ciTRACE_EVENT(ff_layout_commit_error, 205762306a36Sopenharmony_ci TP_PROTO( 205862306a36Sopenharmony_ci const struct nfs_commit_data *data 205962306a36Sopenharmony_ci ), 206062306a36Sopenharmony_ci 206162306a36Sopenharmony_ci TP_ARGS(data), 206262306a36Sopenharmony_ci 206362306a36Sopenharmony_ci TP_STRUCT__entry( 206462306a36Sopenharmony_ci __field(unsigned long, error) 206562306a36Sopenharmony_ci __field(dev_t, dev) 206662306a36Sopenharmony_ci __field(u32, fhandle) 206762306a36Sopenharmony_ci __field(u64, fileid) 206862306a36Sopenharmony_ci __field(loff_t, offset) 206962306a36Sopenharmony_ci __field(u32, count) 207062306a36Sopenharmony_ci __string(dstaddr, data->ds_clp ? 207162306a36Sopenharmony_ci rpc_peeraddr2str(data->ds_clp->cl_rpcclient, 207262306a36Sopenharmony_ci RPC_DISPLAY_ADDR) : "unknown") 207362306a36Sopenharmony_ci ), 207462306a36Sopenharmony_ci 207562306a36Sopenharmony_ci TP_fast_assign( 207662306a36Sopenharmony_ci const struct inode *inode = data->inode; 207762306a36Sopenharmony_ci 207862306a36Sopenharmony_ci __entry->error = data->res.op_status; 207962306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(data->args.fh); 208062306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 208162306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 208262306a36Sopenharmony_ci __entry->offset = data->args.offset; 208362306a36Sopenharmony_ci __entry->count = data->args.count; 208462306a36Sopenharmony_ci __assign_str(dstaddr, data->ds_clp ? 208562306a36Sopenharmony_ci rpc_peeraddr2str(data->ds_clp->cl_rpcclient, 208662306a36Sopenharmony_ci RPC_DISPLAY_ADDR) : "unknown"); 208762306a36Sopenharmony_ci ), 208862306a36Sopenharmony_ci 208962306a36Sopenharmony_ci TP_printk( 209062306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 209162306a36Sopenharmony_ci "offset=%llu count=%u dstaddr=%s", 209262306a36Sopenharmony_ci -__entry->error, 209362306a36Sopenharmony_ci show_nfs4_status(__entry->error), 209462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 209562306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 209662306a36Sopenharmony_ci __entry->fhandle, 209762306a36Sopenharmony_ci __entry->offset, __entry->count, 209862306a36Sopenharmony_ci __get_str(dstaddr) 209962306a36Sopenharmony_ci ) 210062306a36Sopenharmony_ci); 210162306a36Sopenharmony_ci 210262306a36Sopenharmony_ci#ifdef CONFIG_NFS_V4_2 210362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_CONTENT_DATA); 210462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(NFS4_CONTENT_HOLE); 210562306a36Sopenharmony_ci 210662306a36Sopenharmony_ci#define show_llseek_mode(what) \ 210762306a36Sopenharmony_ci __print_symbolic(what, \ 210862306a36Sopenharmony_ci { NFS4_CONTENT_DATA, "DATA" }, \ 210962306a36Sopenharmony_ci { NFS4_CONTENT_HOLE, "HOLE" }) 211062306a36Sopenharmony_ci 211162306a36Sopenharmony_ciTRACE_EVENT(nfs4_llseek, 211262306a36Sopenharmony_ci TP_PROTO( 211362306a36Sopenharmony_ci const struct inode *inode, 211462306a36Sopenharmony_ci const struct nfs42_seek_args *args, 211562306a36Sopenharmony_ci const struct nfs42_seek_res *res, 211662306a36Sopenharmony_ci int error 211762306a36Sopenharmony_ci ), 211862306a36Sopenharmony_ci 211962306a36Sopenharmony_ci TP_ARGS(inode, args, res, error), 212062306a36Sopenharmony_ci 212162306a36Sopenharmony_ci TP_STRUCT__entry( 212262306a36Sopenharmony_ci __field(unsigned long, error) 212362306a36Sopenharmony_ci __field(u32, fhandle) 212462306a36Sopenharmony_ci __field(u32, fileid) 212562306a36Sopenharmony_ci __field(dev_t, dev) 212662306a36Sopenharmony_ci __field(int, stateid_seq) 212762306a36Sopenharmony_ci __field(u32, stateid_hash) 212862306a36Sopenharmony_ci __field(loff_t, offset_s) 212962306a36Sopenharmony_ci __field(u32, what) 213062306a36Sopenharmony_ci __field(loff_t, offset_r) 213162306a36Sopenharmony_ci __field(u32, eof) 213262306a36Sopenharmony_ci ), 213362306a36Sopenharmony_ci 213462306a36Sopenharmony_ci TP_fast_assign( 213562306a36Sopenharmony_ci const struct nfs_inode *nfsi = NFS_I(inode); 213662306a36Sopenharmony_ci const struct nfs_fh *fh = args->sa_fh; 213762306a36Sopenharmony_ci 213862306a36Sopenharmony_ci __entry->fileid = nfsi->fileid; 213962306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 214062306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(fh); 214162306a36Sopenharmony_ci __entry->offset_s = args->sa_offset; 214262306a36Sopenharmony_ci __entry->stateid_seq = 214362306a36Sopenharmony_ci be32_to_cpu(args->sa_stateid.seqid); 214462306a36Sopenharmony_ci __entry->stateid_hash = 214562306a36Sopenharmony_ci nfs_stateid_hash(&args->sa_stateid); 214662306a36Sopenharmony_ci __entry->what = args->sa_what; 214762306a36Sopenharmony_ci if (error) { 214862306a36Sopenharmony_ci __entry->error = -error; 214962306a36Sopenharmony_ci __entry->offset_r = 0; 215062306a36Sopenharmony_ci __entry->eof = 0; 215162306a36Sopenharmony_ci } else { 215262306a36Sopenharmony_ci __entry->error = 0; 215362306a36Sopenharmony_ci __entry->offset_r = res->sr_offset; 215462306a36Sopenharmony_ci __entry->eof = res->sr_eof; 215562306a36Sopenharmony_ci } 215662306a36Sopenharmony_ci ), 215762306a36Sopenharmony_ci 215862306a36Sopenharmony_ci TP_printk( 215962306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 216062306a36Sopenharmony_ci "stateid=%d:0x%08x offset_s=%llu what=%s " 216162306a36Sopenharmony_ci "offset_r=%llu eof=%u", 216262306a36Sopenharmony_ci -__entry->error, 216362306a36Sopenharmony_ci show_nfs4_status(__entry->error), 216462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 216562306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 216662306a36Sopenharmony_ci __entry->fhandle, 216762306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 216862306a36Sopenharmony_ci __entry->offset_s, 216962306a36Sopenharmony_ci show_llseek_mode(__entry->what), 217062306a36Sopenharmony_ci __entry->offset_r, 217162306a36Sopenharmony_ci __entry->eof 217262306a36Sopenharmony_ci ) 217362306a36Sopenharmony_ci); 217462306a36Sopenharmony_ci 217562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_sparse_event, 217662306a36Sopenharmony_ci TP_PROTO( 217762306a36Sopenharmony_ci const struct inode *inode, 217862306a36Sopenharmony_ci const struct nfs42_falloc_args *args, 217962306a36Sopenharmony_ci int error 218062306a36Sopenharmony_ci ), 218162306a36Sopenharmony_ci 218262306a36Sopenharmony_ci TP_ARGS(inode, args, error), 218362306a36Sopenharmony_ci 218462306a36Sopenharmony_ci TP_STRUCT__entry( 218562306a36Sopenharmony_ci __field(unsigned long, error) 218662306a36Sopenharmony_ci __field(loff_t, offset) 218762306a36Sopenharmony_ci __field(loff_t, len) 218862306a36Sopenharmony_ci __field(dev_t, dev) 218962306a36Sopenharmony_ci __field(u32, fhandle) 219062306a36Sopenharmony_ci __field(u64, fileid) 219162306a36Sopenharmony_ci __field(int, stateid_seq) 219262306a36Sopenharmony_ci __field(u32, stateid_hash) 219362306a36Sopenharmony_ci ), 219462306a36Sopenharmony_ci 219562306a36Sopenharmony_ci TP_fast_assign( 219662306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 219762306a36Sopenharmony_ci __entry->offset = args->falloc_offset; 219862306a36Sopenharmony_ci __entry->len = args->falloc_length; 219962306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 220062306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 220162306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 220262306a36Sopenharmony_ci __entry->stateid_seq = 220362306a36Sopenharmony_ci be32_to_cpu(args->falloc_stateid.seqid); 220462306a36Sopenharmony_ci __entry->stateid_hash = 220562306a36Sopenharmony_ci nfs_stateid_hash(&args->falloc_stateid); 220662306a36Sopenharmony_ci ), 220762306a36Sopenharmony_ci 220862306a36Sopenharmony_ci TP_printk( 220962306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 221062306a36Sopenharmony_ci "stateid=%d:0x%08x offset=%llu len=%llu", 221162306a36Sopenharmony_ci -__entry->error, 221262306a36Sopenharmony_ci show_nfs4_status(__entry->error), 221362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 221462306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 221562306a36Sopenharmony_ci __entry->fhandle, 221662306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 221762306a36Sopenharmony_ci (long long)__entry->offset, 221862306a36Sopenharmony_ci (long long)__entry->len 221962306a36Sopenharmony_ci ) 222062306a36Sopenharmony_ci); 222162306a36Sopenharmony_ci#define DEFINE_NFS4_SPARSE_EVENT(name) \ 222262306a36Sopenharmony_ci DEFINE_EVENT(nfs4_sparse_event, name, \ 222362306a36Sopenharmony_ci TP_PROTO( \ 222462306a36Sopenharmony_ci const struct inode *inode, \ 222562306a36Sopenharmony_ci const struct nfs42_falloc_args *args, \ 222662306a36Sopenharmony_ci int error \ 222762306a36Sopenharmony_ci ), \ 222862306a36Sopenharmony_ci TP_ARGS(inode, args, error)) 222962306a36Sopenharmony_ciDEFINE_NFS4_SPARSE_EVENT(nfs4_fallocate); 223062306a36Sopenharmony_ciDEFINE_NFS4_SPARSE_EVENT(nfs4_deallocate); 223162306a36Sopenharmony_ci 223262306a36Sopenharmony_ciTRACE_EVENT(nfs4_copy, 223362306a36Sopenharmony_ci TP_PROTO( 223462306a36Sopenharmony_ci const struct inode *src_inode, 223562306a36Sopenharmony_ci const struct inode *dst_inode, 223662306a36Sopenharmony_ci const struct nfs42_copy_args *args, 223762306a36Sopenharmony_ci const struct nfs42_copy_res *res, 223862306a36Sopenharmony_ci const struct nl4_server *nss, 223962306a36Sopenharmony_ci int error 224062306a36Sopenharmony_ci ), 224162306a36Sopenharmony_ci 224262306a36Sopenharmony_ci TP_ARGS(src_inode, dst_inode, args, res, nss, error), 224362306a36Sopenharmony_ci 224462306a36Sopenharmony_ci TP_STRUCT__entry( 224562306a36Sopenharmony_ci __field(unsigned long, error) 224662306a36Sopenharmony_ci __field(u32, src_fhandle) 224762306a36Sopenharmony_ci __field(u32, src_fileid) 224862306a36Sopenharmony_ci __field(u32, dst_fhandle) 224962306a36Sopenharmony_ci __field(u32, dst_fileid) 225062306a36Sopenharmony_ci __field(dev_t, src_dev) 225162306a36Sopenharmony_ci __field(dev_t, dst_dev) 225262306a36Sopenharmony_ci __field(int, src_stateid_seq) 225362306a36Sopenharmony_ci __field(u32, src_stateid_hash) 225462306a36Sopenharmony_ci __field(int, dst_stateid_seq) 225562306a36Sopenharmony_ci __field(u32, dst_stateid_hash) 225662306a36Sopenharmony_ci __field(loff_t, src_offset) 225762306a36Sopenharmony_ci __field(loff_t, dst_offset) 225862306a36Sopenharmony_ci __field(bool, sync) 225962306a36Sopenharmony_ci __field(loff_t, len) 226062306a36Sopenharmony_ci __field(int, res_stateid_seq) 226162306a36Sopenharmony_ci __field(u32, res_stateid_hash) 226262306a36Sopenharmony_ci __field(loff_t, res_count) 226362306a36Sopenharmony_ci __field(bool, res_sync) 226462306a36Sopenharmony_ci __field(bool, res_cons) 226562306a36Sopenharmony_ci __field(bool, intra) 226662306a36Sopenharmony_ci ), 226762306a36Sopenharmony_ci 226862306a36Sopenharmony_ci TP_fast_assign( 226962306a36Sopenharmony_ci const struct nfs_inode *src_nfsi = NFS_I(src_inode); 227062306a36Sopenharmony_ci const struct nfs_inode *dst_nfsi = NFS_I(dst_inode); 227162306a36Sopenharmony_ci 227262306a36Sopenharmony_ci __entry->src_fileid = src_nfsi->fileid; 227362306a36Sopenharmony_ci __entry->src_dev = src_inode->i_sb->s_dev; 227462306a36Sopenharmony_ci __entry->src_fhandle = nfs_fhandle_hash(args->src_fh); 227562306a36Sopenharmony_ci __entry->src_offset = args->src_pos; 227662306a36Sopenharmony_ci __entry->dst_fileid = dst_nfsi->fileid; 227762306a36Sopenharmony_ci __entry->dst_dev = dst_inode->i_sb->s_dev; 227862306a36Sopenharmony_ci __entry->dst_fhandle = nfs_fhandle_hash(args->dst_fh); 227962306a36Sopenharmony_ci __entry->dst_offset = args->dst_pos; 228062306a36Sopenharmony_ci __entry->len = args->count; 228162306a36Sopenharmony_ci __entry->sync = args->sync; 228262306a36Sopenharmony_ci __entry->src_stateid_seq = 228362306a36Sopenharmony_ci be32_to_cpu(args->src_stateid.seqid); 228462306a36Sopenharmony_ci __entry->src_stateid_hash = 228562306a36Sopenharmony_ci nfs_stateid_hash(&args->src_stateid); 228662306a36Sopenharmony_ci __entry->dst_stateid_seq = 228762306a36Sopenharmony_ci be32_to_cpu(args->dst_stateid.seqid); 228862306a36Sopenharmony_ci __entry->dst_stateid_hash = 228962306a36Sopenharmony_ci nfs_stateid_hash(&args->dst_stateid); 229062306a36Sopenharmony_ci __entry->intra = nss ? 0 : 1; 229162306a36Sopenharmony_ci if (error) { 229262306a36Sopenharmony_ci __entry->error = -error; 229362306a36Sopenharmony_ci __entry->res_stateid_seq = 0; 229462306a36Sopenharmony_ci __entry->res_stateid_hash = 0; 229562306a36Sopenharmony_ci __entry->res_count = 0; 229662306a36Sopenharmony_ci __entry->res_sync = 0; 229762306a36Sopenharmony_ci __entry->res_cons = 0; 229862306a36Sopenharmony_ci } else { 229962306a36Sopenharmony_ci __entry->error = 0; 230062306a36Sopenharmony_ci __entry->res_stateid_seq = 230162306a36Sopenharmony_ci be32_to_cpu(res->write_res.stateid.seqid); 230262306a36Sopenharmony_ci __entry->res_stateid_hash = 230362306a36Sopenharmony_ci nfs_stateid_hash(&res->write_res.stateid); 230462306a36Sopenharmony_ci __entry->res_count = res->write_res.count; 230562306a36Sopenharmony_ci __entry->res_sync = res->synchronous; 230662306a36Sopenharmony_ci __entry->res_cons = res->consecutive; 230762306a36Sopenharmony_ci } 230862306a36Sopenharmony_ci ), 230962306a36Sopenharmony_ci 231062306a36Sopenharmony_ci TP_printk( 231162306a36Sopenharmony_ci "error=%ld (%s) intra=%d src_fileid=%02x:%02x:%llu " 231262306a36Sopenharmony_ci "src_fhandle=0x%08x dst_fileid=%02x:%02x:%llu " 231362306a36Sopenharmony_ci "dst_fhandle=0x%08x src_stateid=%d:0x%08x " 231462306a36Sopenharmony_ci "dst_stateid=%d:0x%08x src_offset=%llu dst_offset=%llu " 231562306a36Sopenharmony_ci "len=%llu sync=%d cb_stateid=%d:0x%08x res_sync=%d " 231662306a36Sopenharmony_ci "res_cons=%d res_count=%llu", 231762306a36Sopenharmony_ci -__entry->error, 231862306a36Sopenharmony_ci show_nfs4_status(__entry->error), 231962306a36Sopenharmony_ci __entry->intra, 232062306a36Sopenharmony_ci MAJOR(__entry->src_dev), MINOR(__entry->src_dev), 232162306a36Sopenharmony_ci (unsigned long long)__entry->src_fileid, 232262306a36Sopenharmony_ci __entry->src_fhandle, 232362306a36Sopenharmony_ci MAJOR(__entry->dst_dev), MINOR(__entry->dst_dev), 232462306a36Sopenharmony_ci (unsigned long long)__entry->dst_fileid, 232562306a36Sopenharmony_ci __entry->dst_fhandle, 232662306a36Sopenharmony_ci __entry->src_stateid_seq, __entry->src_stateid_hash, 232762306a36Sopenharmony_ci __entry->dst_stateid_seq, __entry->dst_stateid_hash, 232862306a36Sopenharmony_ci __entry->src_offset, 232962306a36Sopenharmony_ci __entry->dst_offset, 233062306a36Sopenharmony_ci __entry->len, 233162306a36Sopenharmony_ci __entry->sync, 233262306a36Sopenharmony_ci __entry->res_stateid_seq, __entry->res_stateid_hash, 233362306a36Sopenharmony_ci __entry->res_sync, 233462306a36Sopenharmony_ci __entry->res_cons, 233562306a36Sopenharmony_ci __entry->res_count 233662306a36Sopenharmony_ci ) 233762306a36Sopenharmony_ci); 233862306a36Sopenharmony_ci 233962306a36Sopenharmony_ciTRACE_EVENT(nfs4_clone, 234062306a36Sopenharmony_ci TP_PROTO( 234162306a36Sopenharmony_ci const struct inode *src_inode, 234262306a36Sopenharmony_ci const struct inode *dst_inode, 234362306a36Sopenharmony_ci const struct nfs42_clone_args *args, 234462306a36Sopenharmony_ci int error 234562306a36Sopenharmony_ci ), 234662306a36Sopenharmony_ci 234762306a36Sopenharmony_ci TP_ARGS(src_inode, dst_inode, args, error), 234862306a36Sopenharmony_ci 234962306a36Sopenharmony_ci TP_STRUCT__entry( 235062306a36Sopenharmony_ci __field(unsigned long, error) 235162306a36Sopenharmony_ci __field(u32, src_fhandle) 235262306a36Sopenharmony_ci __field(u32, src_fileid) 235362306a36Sopenharmony_ci __field(u32, dst_fhandle) 235462306a36Sopenharmony_ci __field(u32, dst_fileid) 235562306a36Sopenharmony_ci __field(dev_t, src_dev) 235662306a36Sopenharmony_ci __field(dev_t, dst_dev) 235762306a36Sopenharmony_ci __field(loff_t, src_offset) 235862306a36Sopenharmony_ci __field(loff_t, dst_offset) 235962306a36Sopenharmony_ci __field(int, src_stateid_seq) 236062306a36Sopenharmony_ci __field(u32, src_stateid_hash) 236162306a36Sopenharmony_ci __field(int, dst_stateid_seq) 236262306a36Sopenharmony_ci __field(u32, dst_stateid_hash) 236362306a36Sopenharmony_ci __field(loff_t, len) 236462306a36Sopenharmony_ci ), 236562306a36Sopenharmony_ci 236662306a36Sopenharmony_ci TP_fast_assign( 236762306a36Sopenharmony_ci const struct nfs_inode *src_nfsi = NFS_I(src_inode); 236862306a36Sopenharmony_ci const struct nfs_inode *dst_nfsi = NFS_I(dst_inode); 236962306a36Sopenharmony_ci 237062306a36Sopenharmony_ci __entry->src_fileid = src_nfsi->fileid; 237162306a36Sopenharmony_ci __entry->src_dev = src_inode->i_sb->s_dev; 237262306a36Sopenharmony_ci __entry->src_fhandle = nfs_fhandle_hash(args->src_fh); 237362306a36Sopenharmony_ci __entry->src_offset = args->src_offset; 237462306a36Sopenharmony_ci __entry->dst_fileid = dst_nfsi->fileid; 237562306a36Sopenharmony_ci __entry->dst_dev = dst_inode->i_sb->s_dev; 237662306a36Sopenharmony_ci __entry->dst_fhandle = nfs_fhandle_hash(args->dst_fh); 237762306a36Sopenharmony_ci __entry->dst_offset = args->dst_offset; 237862306a36Sopenharmony_ci __entry->len = args->count; 237962306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 238062306a36Sopenharmony_ci __entry->src_stateid_seq = 238162306a36Sopenharmony_ci be32_to_cpu(args->src_stateid.seqid); 238262306a36Sopenharmony_ci __entry->src_stateid_hash = 238362306a36Sopenharmony_ci nfs_stateid_hash(&args->src_stateid); 238462306a36Sopenharmony_ci __entry->dst_stateid_seq = 238562306a36Sopenharmony_ci be32_to_cpu(args->dst_stateid.seqid); 238662306a36Sopenharmony_ci __entry->dst_stateid_hash = 238762306a36Sopenharmony_ci nfs_stateid_hash(&args->dst_stateid); 238862306a36Sopenharmony_ci ), 238962306a36Sopenharmony_ci 239062306a36Sopenharmony_ci TP_printk( 239162306a36Sopenharmony_ci "error=%ld (%s) src_fileid=%02x:%02x:%llu " 239262306a36Sopenharmony_ci "src_fhandle=0x%08x dst_fileid=%02x:%02x:%llu " 239362306a36Sopenharmony_ci "dst_fhandle=0x%08x src_stateid=%d:0x%08x " 239462306a36Sopenharmony_ci "dst_stateid=%d:0x%08x src_offset=%llu " 239562306a36Sopenharmony_ci "dst_offset=%llu len=%llu", 239662306a36Sopenharmony_ci -__entry->error, 239762306a36Sopenharmony_ci show_nfs4_status(__entry->error), 239862306a36Sopenharmony_ci MAJOR(__entry->src_dev), MINOR(__entry->src_dev), 239962306a36Sopenharmony_ci (unsigned long long)__entry->src_fileid, 240062306a36Sopenharmony_ci __entry->src_fhandle, 240162306a36Sopenharmony_ci MAJOR(__entry->dst_dev), MINOR(__entry->dst_dev), 240262306a36Sopenharmony_ci (unsigned long long)__entry->dst_fileid, 240362306a36Sopenharmony_ci __entry->dst_fhandle, 240462306a36Sopenharmony_ci __entry->src_stateid_seq, __entry->src_stateid_hash, 240562306a36Sopenharmony_ci __entry->dst_stateid_seq, __entry->dst_stateid_hash, 240662306a36Sopenharmony_ci __entry->src_offset, 240762306a36Sopenharmony_ci __entry->dst_offset, 240862306a36Sopenharmony_ci __entry->len 240962306a36Sopenharmony_ci ) 241062306a36Sopenharmony_ci); 241162306a36Sopenharmony_ci 241262306a36Sopenharmony_ciTRACE_EVENT(nfs4_copy_notify, 241362306a36Sopenharmony_ci TP_PROTO( 241462306a36Sopenharmony_ci const struct inode *inode, 241562306a36Sopenharmony_ci const struct nfs42_copy_notify_args *args, 241662306a36Sopenharmony_ci const struct nfs42_copy_notify_res *res, 241762306a36Sopenharmony_ci int error 241862306a36Sopenharmony_ci ), 241962306a36Sopenharmony_ci 242062306a36Sopenharmony_ci TP_ARGS(inode, args, res, error), 242162306a36Sopenharmony_ci 242262306a36Sopenharmony_ci TP_STRUCT__entry( 242362306a36Sopenharmony_ci __field(unsigned long, error) 242462306a36Sopenharmony_ci __field(u32, fhandle) 242562306a36Sopenharmony_ci __field(u32, fileid) 242662306a36Sopenharmony_ci __field(dev_t, dev) 242762306a36Sopenharmony_ci __field(int, stateid_seq) 242862306a36Sopenharmony_ci __field(u32, stateid_hash) 242962306a36Sopenharmony_ci __field(int, res_stateid_seq) 243062306a36Sopenharmony_ci __field(u32, res_stateid_hash) 243162306a36Sopenharmony_ci ), 243262306a36Sopenharmony_ci 243362306a36Sopenharmony_ci TP_fast_assign( 243462306a36Sopenharmony_ci const struct nfs_inode *nfsi = NFS_I(inode); 243562306a36Sopenharmony_ci 243662306a36Sopenharmony_ci __entry->fileid = nfsi->fileid; 243762306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 243862306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(args->cna_src_fh); 243962306a36Sopenharmony_ci __entry->stateid_seq = 244062306a36Sopenharmony_ci be32_to_cpu(args->cna_src_stateid.seqid); 244162306a36Sopenharmony_ci __entry->stateid_hash = 244262306a36Sopenharmony_ci nfs_stateid_hash(&args->cna_src_stateid); 244362306a36Sopenharmony_ci if (error) { 244462306a36Sopenharmony_ci __entry->error = -error; 244562306a36Sopenharmony_ci __entry->res_stateid_seq = 0; 244662306a36Sopenharmony_ci __entry->res_stateid_hash = 0; 244762306a36Sopenharmony_ci } else { 244862306a36Sopenharmony_ci __entry->error = 0; 244962306a36Sopenharmony_ci __entry->res_stateid_seq = 245062306a36Sopenharmony_ci be32_to_cpu(res->cnr_stateid.seqid); 245162306a36Sopenharmony_ci __entry->res_stateid_hash = 245262306a36Sopenharmony_ci nfs_stateid_hash(&res->cnr_stateid); 245362306a36Sopenharmony_ci } 245462306a36Sopenharmony_ci ), 245562306a36Sopenharmony_ci 245662306a36Sopenharmony_ci TP_printk( 245762306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 245862306a36Sopenharmony_ci "stateid=%d:0x%08x res_stateid=%d:0x%08x", 245962306a36Sopenharmony_ci -__entry->error, 246062306a36Sopenharmony_ci show_nfs4_status(__entry->error), 246162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 246262306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 246362306a36Sopenharmony_ci __entry->fhandle, 246462306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash, 246562306a36Sopenharmony_ci __entry->res_stateid_seq, __entry->res_stateid_hash 246662306a36Sopenharmony_ci ) 246762306a36Sopenharmony_ci); 246862306a36Sopenharmony_ci 246962306a36Sopenharmony_ciTRACE_EVENT(nfs4_offload_cancel, 247062306a36Sopenharmony_ci TP_PROTO( 247162306a36Sopenharmony_ci const struct nfs42_offload_status_args *args, 247262306a36Sopenharmony_ci int error 247362306a36Sopenharmony_ci ), 247462306a36Sopenharmony_ci 247562306a36Sopenharmony_ci TP_ARGS(args, error), 247662306a36Sopenharmony_ci 247762306a36Sopenharmony_ci TP_STRUCT__entry( 247862306a36Sopenharmony_ci __field(unsigned long, error) 247962306a36Sopenharmony_ci __field(u32, fhandle) 248062306a36Sopenharmony_ci __field(int, stateid_seq) 248162306a36Sopenharmony_ci __field(u32, stateid_hash) 248262306a36Sopenharmony_ci ), 248362306a36Sopenharmony_ci 248462306a36Sopenharmony_ci TP_fast_assign( 248562306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(args->osa_src_fh); 248662306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 248762306a36Sopenharmony_ci __entry->stateid_seq = 248862306a36Sopenharmony_ci be32_to_cpu(args->osa_stateid.seqid); 248962306a36Sopenharmony_ci __entry->stateid_hash = 249062306a36Sopenharmony_ci nfs_stateid_hash(&args->osa_stateid); 249162306a36Sopenharmony_ci ), 249262306a36Sopenharmony_ci 249362306a36Sopenharmony_ci TP_printk( 249462306a36Sopenharmony_ci "error=%ld (%s) fhandle=0x%08x stateid=%d:0x%08x", 249562306a36Sopenharmony_ci -__entry->error, 249662306a36Sopenharmony_ci show_nfs4_status(__entry->error), 249762306a36Sopenharmony_ci __entry->fhandle, 249862306a36Sopenharmony_ci __entry->stateid_seq, __entry->stateid_hash 249962306a36Sopenharmony_ci ) 250062306a36Sopenharmony_ci); 250162306a36Sopenharmony_ci 250262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(nfs4_xattr_event, 250362306a36Sopenharmony_ci TP_PROTO( 250462306a36Sopenharmony_ci const struct inode *inode, 250562306a36Sopenharmony_ci const char *name, 250662306a36Sopenharmony_ci int error 250762306a36Sopenharmony_ci ), 250862306a36Sopenharmony_ci 250962306a36Sopenharmony_ci TP_ARGS(inode, name, error), 251062306a36Sopenharmony_ci 251162306a36Sopenharmony_ci TP_STRUCT__entry( 251262306a36Sopenharmony_ci __field(unsigned long, error) 251362306a36Sopenharmony_ci __field(dev_t, dev) 251462306a36Sopenharmony_ci __field(u32, fhandle) 251562306a36Sopenharmony_ci __field(u64, fileid) 251662306a36Sopenharmony_ci __string(name, name) 251762306a36Sopenharmony_ci ), 251862306a36Sopenharmony_ci 251962306a36Sopenharmony_ci TP_fast_assign( 252062306a36Sopenharmony_ci __entry->error = error < 0 ? -error : 0; 252162306a36Sopenharmony_ci __entry->dev = inode->i_sb->s_dev; 252262306a36Sopenharmony_ci __entry->fileid = NFS_FILEID(inode); 252362306a36Sopenharmony_ci __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode)); 252462306a36Sopenharmony_ci __assign_str(name, name); 252562306a36Sopenharmony_ci ), 252662306a36Sopenharmony_ci 252762306a36Sopenharmony_ci TP_printk( 252862306a36Sopenharmony_ci "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " 252962306a36Sopenharmony_ci "name=%s", 253062306a36Sopenharmony_ci -__entry->error, show_nfs4_status(__entry->error), 253162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 253262306a36Sopenharmony_ci (unsigned long long)__entry->fileid, 253362306a36Sopenharmony_ci __entry->fhandle, __get_str(name) 253462306a36Sopenharmony_ci ) 253562306a36Sopenharmony_ci); 253662306a36Sopenharmony_ci#define DEFINE_NFS4_XATTR_EVENT(name) \ 253762306a36Sopenharmony_ci DEFINE_EVENT(nfs4_xattr_event, name, \ 253862306a36Sopenharmony_ci TP_PROTO( \ 253962306a36Sopenharmony_ci const struct inode *inode, \ 254062306a36Sopenharmony_ci const char *name, \ 254162306a36Sopenharmony_ci int error \ 254262306a36Sopenharmony_ci ), \ 254362306a36Sopenharmony_ci TP_ARGS(inode, name, error)) 254462306a36Sopenharmony_ciDEFINE_NFS4_XATTR_EVENT(nfs4_getxattr); 254562306a36Sopenharmony_ciDEFINE_NFS4_XATTR_EVENT(nfs4_setxattr); 254662306a36Sopenharmony_ciDEFINE_NFS4_XATTR_EVENT(nfs4_removexattr); 254762306a36Sopenharmony_ci 254862306a36Sopenharmony_ciDEFINE_NFS4_INODE_EVENT(nfs4_listxattr); 254962306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_2 */ 255062306a36Sopenharmony_ci 255162306a36Sopenharmony_ci#endif /* CONFIG_NFS_V4_1 */ 255262306a36Sopenharmony_ci 255362306a36Sopenharmony_ci#endif /* _TRACE_NFS4_H */ 255462306a36Sopenharmony_ci 255562306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 255662306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 255762306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE nfs4trace 255862306a36Sopenharmony_ci/* This part must be outside protection */ 255962306a36Sopenharmony_ci#include <trace/define_trace.h> 2560