^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define TRACE_SYSTEM nfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #if !defined(_TRACE_NFS_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define _TRACE_NFS_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/iversion.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) TRACE_DEFINE_ENUM(DT_UNKNOWN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) TRACE_DEFINE_ENUM(DT_FIFO);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) TRACE_DEFINE_ENUM(DT_CHR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TRACE_DEFINE_ENUM(DT_DIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) TRACE_DEFINE_ENUM(DT_BLK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) TRACE_DEFINE_ENUM(DT_REG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) TRACE_DEFINE_ENUM(DT_LNK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) TRACE_DEFINE_ENUM(DT_SOCK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) TRACE_DEFINE_ENUM(DT_WHT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define nfs_show_file_type(ftype) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) __print_symbolic(ftype, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) { DT_UNKNOWN, "UNKNOWN" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) { DT_FIFO, "FIFO" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) { DT_CHR, "CHR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) { DT_DIR, "DIR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) { DT_BLK, "BLK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) { DT_REG, "REG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) { DT_LNK, "LNK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) { DT_SOCK, "SOCK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) { DT_WHT, "WHT" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACCESS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) TRACE_DEFINE_ENUM(NFS_INO_REVAL_PAGECACHE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) TRACE_DEFINE_ENUM(NFS_INO_REVAL_FORCED);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) TRACE_DEFINE_ENUM(NFS_INO_INVALID_LABEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) TRACE_DEFINE_ENUM(NFS_INO_INVALID_CHANGE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) TRACE_DEFINE_ENUM(NFS_INO_INVALID_CTIME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) TRACE_DEFINE_ENUM(NFS_INO_INVALID_MTIME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) TRACE_DEFINE_ENUM(NFS_INO_INVALID_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) TRACE_DEFINE_ENUM(NFS_INO_INVALID_OTHER);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define nfs_show_cache_validity(v) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) __print_flags(v, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) { NFS_INO_INVALID_DATA, "INVALID_DATA" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) { NFS_INO_INVALID_ATIME, "INVALID_ATIME" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) { NFS_INO_INVALID_ACCESS, "INVALID_ACCESS" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) { NFS_INO_INVALID_ACL, "INVALID_ACL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) { NFS_INO_REVAL_PAGECACHE, "REVAL_PAGECACHE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) { NFS_INO_REVAL_FORCED, "REVAL_FORCED" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) { NFS_INO_INVALID_LABEL, "INVALID_LABEL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) { NFS_INO_INVALID_CHANGE, "INVALID_CHANGE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) { NFS_INO_INVALID_CTIME, "INVALID_CTIME" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) { NFS_INO_INVALID_MTIME, "INVALID_MTIME" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) { NFS_INO_INVALID_SIZE, "INVALID_SIZE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) { NFS_INO_INVALID_OTHER, "INVALID_OTHER" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) { NFS_INO_INVALID_XATTR, "INVALID_XATTR" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) TRACE_DEFINE_ENUM(NFS_INO_ADVISE_RDPLUS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) TRACE_DEFINE_ENUM(NFS_INO_STALE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) TRACE_DEFINE_ENUM(NFS_INO_ACL_LRU_SET);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) TRACE_DEFINE_ENUM(NFS_INO_INVALIDATING);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) TRACE_DEFINE_ENUM(NFS_INO_FSCACHE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) TRACE_DEFINE_ENUM(NFS_INO_FSCACHE_LOCK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMIT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMITTING);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) TRACE_DEFINE_ENUM(NFS_INO_LAYOUTSTATS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) TRACE_DEFINE_ENUM(NFS_INO_ODIRECT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define nfs_show_nfsi_flags(v) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) __print_flags(v, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) { BIT(NFS_INO_ADVISE_RDPLUS), "ADVISE_RDPLUS" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) { BIT(NFS_INO_STALE), "STALE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) { BIT(NFS_INO_ACL_LRU_SET), "ACL_LRU_SET" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) { BIT(NFS_INO_INVALIDATING), "INVALIDATING" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) { BIT(NFS_INO_FSCACHE), "FSCACHE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) { BIT(NFS_INO_FSCACHE_LOCK), "FSCACHE_LOCK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) { BIT(NFS_INO_LAYOUTCOMMIT), "NEED_LAYOUTCOMMIT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) { BIT(NFS_INO_LAYOUTCOMMITTING), "LAYOUTCOMMIT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) { BIT(NFS_INO_LAYOUTSTATS), "LAYOUTSTATS" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) { BIT(NFS_INO_ODIRECT), "ODIRECT" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) DECLARE_EVENT_CLASS(nfs_inode_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) const struct inode *inode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) TP_ARGS(inode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) __field(u64, version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __entry->version = inode_peek_iversion_raw(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) (unsigned long long)__entry->version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) DECLARE_EVENT_CLASS(nfs_inode_event_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) const struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) TP_ARGS(inode, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) __field(unsigned char, type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) __field(u64, version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) __field(loff_t, size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) __field(unsigned long, nfsi_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) __field(unsigned long, cache_validity)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) __entry->error = error < 0 ? -error : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) __entry->type = nfs_umode_to_dtype(inode->i_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) __entry->version = inode_peek_iversion_raw(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) __entry->size = i_size_read(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) __entry->nfsi_flags = nfsi->flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) __entry->cache_validity = nfsi->cache_validity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) "type=%u (%s) version=%llu size=%lld "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) __entry->type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) nfs_show_file_type(__entry->type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) (unsigned long long)__entry->version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) (long long)__entry->size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) __entry->cache_validity,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) nfs_show_cache_validity(__entry->cache_validity),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) __entry->nfsi_flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) nfs_show_nfsi_flags(__entry->nfsi_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define DEFINE_NFS_INODE_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) DEFINE_EVENT(nfs_inode_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) const struct inode *inode \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) TP_ARGS(inode))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define DEFINE_NFS_INODE_EVENT_DONE(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) DEFINE_EVENT(nfs_inode_event_done, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) const struct inode *inode, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) int error \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) TP_ARGS(inode, error))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) DEFINE_NFS_INODE_EVENT(nfs_set_inode_stale);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) DEFINE_NFS_INODE_EVENT(nfs_refresh_inode_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) DEFINE_NFS_INODE_EVENT_DONE(nfs_refresh_inode_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) DEFINE_NFS_INODE_EVENT(nfs_revalidate_inode_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) DEFINE_NFS_INODE_EVENT_DONE(nfs_revalidate_inode_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) DEFINE_NFS_INODE_EVENT(nfs_invalidate_mapping_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) DEFINE_NFS_INODE_EVENT_DONE(nfs_invalidate_mapping_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) DEFINE_NFS_INODE_EVENT(nfs_getattr_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) DEFINE_NFS_INODE_EVENT_DONE(nfs_getattr_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) DEFINE_NFS_INODE_EVENT(nfs_setattr_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) DEFINE_NFS_INODE_EVENT_DONE(nfs_setattr_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) DEFINE_NFS_INODE_EVENT(nfs_writeback_page_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) DEFINE_NFS_INODE_EVENT_DONE(nfs_writeback_page_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) DEFINE_NFS_INODE_EVENT(nfs_writeback_inode_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) DEFINE_NFS_INODE_EVENT_DONE(nfs_writeback_inode_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) DEFINE_NFS_INODE_EVENT(nfs_fsync_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) DEFINE_NFS_INODE_EVENT_DONE(nfs_fsync_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) DEFINE_NFS_INODE_EVENT(nfs_access_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) TRACE_EVENT(nfs_access_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) const struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) unsigned int mask,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) unsigned int permitted,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) TP_ARGS(inode, mask, permitted, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) __field(unsigned char, type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) __field(u64, version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) __field(loff_t, size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) __field(unsigned long, nfsi_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) __field(unsigned long, cache_validity)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) __field(unsigned int, mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) __field(unsigned int, permitted)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) __entry->error = error < 0 ? -error : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) __entry->type = nfs_umode_to_dtype(inode->i_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) __entry->version = inode_peek_iversion_raw(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) __entry->size = i_size_read(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) __entry->nfsi_flags = nfsi->flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) __entry->cache_validity = nfsi->cache_validity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) __entry->mask = mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) __entry->permitted = permitted;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) "type=%u (%s) version=%llu size=%lld "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s) "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) "mask=0x%x permitted=0x%x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) __entry->type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) nfs_show_file_type(__entry->type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) (unsigned long long)__entry->version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) (long long)__entry->size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) __entry->cache_validity,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) nfs_show_cache_validity(__entry->cache_validity),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) __entry->nfsi_flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) nfs_show_nfsi_flags(__entry->nfsi_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) __entry->mask, __entry->permitted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) TRACE_DEFINE_ENUM(LOOKUP_PARENT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) TRACE_DEFINE_ENUM(LOOKUP_REVAL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) TRACE_DEFINE_ENUM(LOOKUP_RCU);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) TRACE_DEFINE_ENUM(LOOKUP_OPEN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) TRACE_DEFINE_ENUM(LOOKUP_CREATE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) TRACE_DEFINE_ENUM(LOOKUP_EXCL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) TRACE_DEFINE_ENUM(LOOKUP_JUMPED);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) TRACE_DEFINE_ENUM(LOOKUP_ROOT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) TRACE_DEFINE_ENUM(LOOKUP_DOWN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) #define show_lookup_flags(flags) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) __print_flags(flags, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) { LOOKUP_FOLLOW, "FOLLOW" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) { LOOKUP_DIRECTORY, "DIRECTORY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) { LOOKUP_PARENT, "PARENT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) { LOOKUP_REVAL, "REVAL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) { LOOKUP_RCU, "RCU" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) { LOOKUP_OPEN, "OPEN" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) { LOOKUP_CREATE, "CREATE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) { LOOKUP_EXCL, "EXCL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) { LOOKUP_JUMPED, "JUMPED" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) { LOOKUP_ROOT, "ROOT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) { LOOKUP_EMPTY, "EMPTY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) { LOOKUP_DOWN, "DOWN" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) DECLARE_EVENT_CLASS(nfs_lookup_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) unsigned int flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) TP_ARGS(dir, dentry, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) show_lookup_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define DEFINE_NFS_LOOKUP_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) DEFINE_EVENT(nfs_lookup_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) const struct inode *dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) const struct dentry *dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) unsigned int flags \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) TP_ARGS(dir, dentry, flags))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) DECLARE_EVENT_CLASS(nfs_lookup_event_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) unsigned int flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) TP_ARGS(dir, dentry, flags, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) __entry->error = error < 0 ? -error : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) show_lookup_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define DEFINE_NFS_LOOKUP_EVENT_DONE(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) DEFINE_EVENT(nfs_lookup_event_done, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) const struct inode *dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) const struct dentry *dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) unsigned int flags, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) int error \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) TP_ARGS(dir, dentry, flags, error))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) TRACE_DEFINE_ENUM(O_WRONLY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) TRACE_DEFINE_ENUM(O_RDWR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) TRACE_DEFINE_ENUM(O_CREAT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) TRACE_DEFINE_ENUM(O_EXCL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) TRACE_DEFINE_ENUM(O_NOCTTY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) TRACE_DEFINE_ENUM(O_TRUNC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) TRACE_DEFINE_ENUM(O_APPEND);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) TRACE_DEFINE_ENUM(O_NONBLOCK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) TRACE_DEFINE_ENUM(O_DSYNC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) TRACE_DEFINE_ENUM(O_DIRECT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) TRACE_DEFINE_ENUM(O_LARGEFILE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) TRACE_DEFINE_ENUM(O_DIRECTORY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) TRACE_DEFINE_ENUM(O_NOFOLLOW);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) TRACE_DEFINE_ENUM(O_NOATIME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) TRACE_DEFINE_ENUM(O_CLOEXEC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #define show_open_flags(flags) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) __print_flags(flags, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) { O_WRONLY, "O_WRONLY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) { O_RDWR, "O_RDWR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) { O_CREAT, "O_CREAT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) { O_EXCL, "O_EXCL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) { O_NOCTTY, "O_NOCTTY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) { O_TRUNC, "O_TRUNC" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) { O_APPEND, "O_APPEND" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) { O_NONBLOCK, "O_NONBLOCK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) { O_DSYNC, "O_DSYNC" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) { O_DIRECT, "O_DIRECT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) { O_LARGEFILE, "O_LARGEFILE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) { O_DIRECTORY, "O_DIRECTORY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) { O_NOFOLLOW, "O_NOFOLLOW" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) { O_NOATIME, "O_NOATIME" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) { O_CLOEXEC, "O_CLOEXEC" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) TRACE_DEFINE_ENUM(FMODE_READ);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) TRACE_DEFINE_ENUM(FMODE_WRITE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) TRACE_DEFINE_ENUM(FMODE_EXEC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) #define show_fmode_flags(mode) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) __print_flags(mode, "|", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) { ((__force unsigned long)FMODE_READ), "READ" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) { ((__force unsigned long)FMODE_EXEC), "EXEC" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) TRACE_EVENT(nfs_atomic_open_enter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) const struct nfs_open_context *ctx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) unsigned int flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) TP_ARGS(dir, ctx, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) __field(unsigned int, fmode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) __string(name, ctx->dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) __entry->fmode = (__force unsigned int)ctx->mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) __assign_str(name, ctx->dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) show_open_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) show_fmode_flags(__entry->fmode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) TRACE_EVENT(nfs_atomic_open_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) const struct nfs_open_context *ctx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) unsigned int flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) TP_ARGS(dir, ctx, flags, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) __field(unsigned int, fmode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) __string(name, ctx->dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) __entry->error = -error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) __entry->fmode = (__force unsigned int)ctx->mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) __assign_str(name, ctx->dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) "error=%ld (%s) flags=0x%lx (%s) fmode=%s "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) "name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) show_open_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) show_fmode_flags(__entry->fmode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) TRACE_EVENT(nfs_create_enter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) unsigned int flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) TP_ARGS(dir, dentry, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) show_open_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) TRACE_EVENT(nfs_create_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) unsigned int flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) TP_ARGS(dir, dentry, flags, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) __entry->error = -error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) __entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) show_open_flags(__entry->flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) DECLARE_EVENT_CLASS(nfs_directory_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) const struct dentry *dentry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) TP_ARGS(dir, dentry),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) "name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) #define DEFINE_NFS_DIRECTORY_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) DEFINE_EVENT(nfs_directory_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) const struct inode *dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) const struct dentry *dentry \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) TP_ARGS(dir, dentry))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) DECLARE_EVENT_CLASS(nfs_directory_event_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) TP_ARGS(dir, dentry, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) __entry->error = error < 0 ? -error : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) "error=%ld (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) #define DEFINE_NFS_DIRECTORY_EVENT_DONE(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) DEFINE_EVENT(nfs_directory_event_done, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) const struct inode *dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) const struct dentry *dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) int error \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) TP_ARGS(dir, dentry, error))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) DEFINE_NFS_DIRECTORY_EVENT(nfs_mknod_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mknod_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) DEFINE_NFS_DIRECTORY_EVENT(nfs_mkdir_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mkdir_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) DEFINE_NFS_DIRECTORY_EVENT(nfs_rmdir_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_rmdir_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) DEFINE_NFS_DIRECTORY_EVENT(nfs_remove_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_remove_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) DEFINE_NFS_DIRECTORY_EVENT(nfs_unlink_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_unlink_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) DEFINE_NFS_DIRECTORY_EVENT(nfs_symlink_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_symlink_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) TRACE_EVENT(nfs_link_enter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) const struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) const struct dentry *dentry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) TP_ARGS(inode, dir, dentry),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) __entry->fileid = NFS_FILEID(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) "fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) __entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) TRACE_EVENT(nfs_link_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) const struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) const struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) const struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) TP_ARGS(inode, dir, dentry, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) __string(name, dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) __entry->fileid = NFS_FILEID(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) __entry->error = error < 0 ? -error : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) __assign_str(name, dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) "error=%ld (%s) fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) __entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) DECLARE_EVENT_CLASS(nfs_rename_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) const struct inode *old_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) const struct dentry *old_dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) const struct inode *new_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) const struct dentry *new_dentry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) TP_ARGS(old_dir, old_dentry, new_dir, new_dentry),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) __field(u64, old_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) __field(u64, new_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) __string(old_name, old_dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) __string(new_name, new_dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) __entry->dev = old_dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) __entry->old_dir = NFS_FILEID(old_dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) __entry->new_dir = NFS_FILEID(new_dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) __assign_str(old_name, old_dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) __assign_str(new_name, new_dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) "old_name=%02x:%02x:%llu/%s new_name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) (unsigned long long)__entry->old_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) __get_str(old_name),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) (unsigned long long)__entry->new_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) __get_str(new_name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) #define DEFINE_NFS_RENAME_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) DEFINE_EVENT(nfs_rename_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) const struct inode *old_dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) const struct dentry *old_dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) const struct inode *new_dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) const struct dentry *new_dentry \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) TP_ARGS(old_dir, old_dentry, new_dir, new_dentry))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) DECLARE_EVENT_CLASS(nfs_rename_event_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) const struct inode *old_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) const struct dentry *old_dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) const struct inode *new_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) const struct dentry *new_dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) __field(u64, old_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) __string(old_name, old_dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) __field(u64, new_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) __string(new_name, new_dentry->d_name.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) __entry->dev = old_dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) __entry->error = -error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) __entry->old_dir = NFS_FILEID(old_dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) __entry->new_dir = NFS_FILEID(new_dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) __assign_str(old_name, old_dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) __assign_str(new_name, new_dentry->d_name.name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) "error=%ld (%s) old_name=%02x:%02x:%llu/%s "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) "new_name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) (unsigned long long)__entry->old_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) __get_str(old_name),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) (unsigned long long)__entry->new_dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) __get_str(new_name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) #define DEFINE_NFS_RENAME_EVENT_DONE(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) DEFINE_EVENT(nfs_rename_event_done, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) const struct inode *old_dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) const struct dentry *old_dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) const struct inode *new_dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) const struct dentry *new_dentry, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) int error \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) TP_ARGS(old_dir, old_dentry, new_dir, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) new_dentry, error))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) DEFINE_NFS_RENAME_EVENT(nfs_rename_enter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) DEFINE_NFS_RENAME_EVENT_DONE(nfs_rename_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) DEFINE_NFS_RENAME_EVENT_DONE(nfs_sillyrename_rename);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) TRACE_EVENT(nfs_sillyrename_unlink,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) const struct nfs_unlinkdata *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) TP_ARGS(data, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) __field(u64, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) __dynamic_array(char, name, data->args.name.len + 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) struct inode *dir = d_inode(data->dentry->d_parent);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) size_t len = data->args.name.len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) __entry->dev = dir->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) __entry->dir = NFS_FILEID(dir);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) __entry->error = -error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) memcpy(__get_str(name),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) data->args.name.name, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) __get_str(name)[len] = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) "error=%ld (%s) name=%02x:%02x:%llu/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) -__entry->error, nfs_show_status(__entry->error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) (unsigned long long)__entry->dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) __get_str(name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) TRACE_EVENT(nfs_initiate_read,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) const struct nfs_pgio_header *hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) TP_ARGS(hdr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) __field(u32, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) __entry->count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) "offset=%lld count=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) (long long)__entry->offset, __entry->count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) TRACE_EVENT(nfs_readpage_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) const struct nfs_pgio_header *hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) TP_ARGS(task, hdr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) __field(u32, arg_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) __field(u32, res_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) __field(bool, eof)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) __entry->status = task->tk_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) __entry->arg_count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) __entry->res_count = hdr->res.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) __entry->eof = hdr->res.eof;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) "offset=%lld count=%u res=%u status=%d%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) (long long)__entry->offset, __entry->arg_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) __entry->res_count, __entry->status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) __entry->eof ? " eof" : ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) TRACE_EVENT(nfs_readpage_short,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) const struct nfs_pgio_header *hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) TP_ARGS(task, hdr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) __field(u32, arg_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) __field(u32, res_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) __field(bool, eof)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) __entry->status = task->tk_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) __entry->arg_count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) __entry->res_count = hdr->res.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) __entry->eof = hdr->res.eof;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) "offset=%lld count=%u res=%u status=%d%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) (long long)__entry->offset, __entry->arg_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) __entry->res_count, __entry->status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) __entry->eof ? " eof" : ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) TRACE_EVENT(nfs_pgio_error,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) const struct nfs_pgio_header *hdr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) int error,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) loff_t pos
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) TP_ARGS(hdr, error, pos),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) __field(u32, arg_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) __field(u32, res_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) __field(loff_t, pos)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) __entry->status = error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) __entry->arg_count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) __entry->res_count = hdr->res.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) TP_printk("fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) "offset=%lld count=%u res=%u pos=%llu status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) (unsigned long long)__entry->fileid, __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) (long long)__entry->offset, __entry->arg_count, __entry->res_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) __entry->pos, __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) TRACE_DEFINE_ENUM(NFS_UNSTABLE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) TRACE_DEFINE_ENUM(NFS_DATA_SYNC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) TRACE_DEFINE_ENUM(NFS_FILE_SYNC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) #define nfs_show_stable(stable) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) __print_symbolic(stable, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) { NFS_UNSTABLE, "UNSTABLE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) { NFS_DATA_SYNC, "DATA_SYNC" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) { NFS_FILE_SYNC, "FILE_SYNC" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) TRACE_EVENT(nfs_initiate_write,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) const struct nfs_pgio_header *hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) TP_ARGS(hdr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) __field(u32, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) __field(enum nfs3_stable_how, stable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) __entry->count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) __entry->stable = hdr->args.stable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) "offset=%lld count=%u stable=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) (long long)__entry->offset, __entry->count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) nfs_show_stable(__entry->stable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) TRACE_EVENT(nfs_writeback_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) const struct nfs_pgio_header *hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) TP_ARGS(task, hdr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) __field(u32, arg_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) __field(u32, res_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) __field(enum nfs3_stable_how, stable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) __array(char, verifier, NFS4_VERIFIER_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) const struct inode *inode = hdr->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) const struct nfs_fh *fh = hdr->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) hdr->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) const struct nfs_writeverf *verf = hdr->res.verf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) __entry->status = task->tk_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) __entry->offset = hdr->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) __entry->arg_count = hdr->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) __entry->res_count = hdr->res.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) __entry->stable = verf->committed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) memcpy(__entry->verifier,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) &verf->verifier,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) NFS4_VERIFIER_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) "offset=%lld count=%u res=%u status=%d stable=%s "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) "verifier=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) (long long)__entry->offset, __entry->arg_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) __entry->res_count, __entry->status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) nfs_show_stable(__entry->stable),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) DECLARE_EVENT_CLASS(nfs_page_error_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) const struct nfs_page *req,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) TP_ARGS(req, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) __field(pgoff_t, index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) __field(unsigned int, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) __field(unsigned int, pgbase)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) __field(unsigned int, bytes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) __field(int, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) __entry->index = req->wb_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) __entry->offset = req->wb_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) __entry->pgbase = req->wb_pgbase;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) __entry->bytes = req->wb_bytes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) __entry->error = error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) "req=%p index=%lu offset=%u pgbase=%u bytes=%u error=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) __entry->req, __entry->index, __entry->offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) __entry->pgbase, __entry->bytes, __entry->error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) #define DEFINE_NFS_PAGEERR_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) DEFINE_EVENT(nfs_page_error_class, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) const struct nfs_page *req, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) int error \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) TP_ARGS(req, error))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) DEFINE_NFS_PAGEERR_EVENT(nfs_write_error);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) DEFINE_NFS_PAGEERR_EVENT(nfs_comp_error);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) DEFINE_NFS_PAGEERR_EVENT(nfs_commit_error);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) TRACE_EVENT(nfs_initiate_commit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) const struct nfs_commit_data *data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) TP_ARGS(data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) __field(u32, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) const struct inode *inode = data->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) const struct nfs_fh *fh = data->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) data->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) __entry->offset = data->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) __entry->count = data->args.count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) "offset=%lld count=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) (long long)__entry->offset, __entry->count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) TRACE_EVENT(nfs_commit_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) const struct nfs_commit_data *data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) TP_ARGS(task, data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) __field(loff_t, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) __field(enum nfs3_stable_how, stable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) __array(char, verifier, NFS4_VERIFIER_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) const struct inode *inode = data->inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) const struct nfs_inode *nfsi = NFS_I(inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) const struct nfs_fh *fh = data->args.fh ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) data->args.fh : &nfsi->fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) const struct nfs_writeverf *verf = data->res.verf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) __entry->status = task->tk_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) __entry->offset = data->args.offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) __entry->stable = verf->committed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) memcpy(__entry->verifier,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) &verf->verifier,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) NFS4_VERIFIER_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) __entry->dev = inode->i_sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) __entry->fileid = nfsi->fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) "fileid=%02x:%02x:%llu fhandle=0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) "offset=%lld status=%d stable=%s verifier=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) __entry->fhandle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) (long long)__entry->offset, __entry->status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) nfs_show_stable(__entry->stable),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) TRACE_EVENT(nfs_fh_to_dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) const struct super_block *sb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) const struct nfs_fh *fh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) u64 fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) TP_ARGS(sb, fh, fileid, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) __field(int, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) __field(dev_t, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) __field(u32, fhandle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) __field(u64, fileid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) __entry->error = error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) __entry->dev = sb->s_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) __entry->fileid = fileid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) __entry->fhandle = nfs_fhandle_hash(fh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) __entry->error,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) MAJOR(__entry->dev), MINOR(__entry->dev),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) (unsigned long long)__entry->fileid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) __entry->fhandle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) TRACE_DEFINE_ENUM(NFS_OK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) TRACE_DEFINE_ENUM(NFSERR_PERM);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) TRACE_DEFINE_ENUM(NFSERR_NOENT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) TRACE_DEFINE_ENUM(NFSERR_IO);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) TRACE_DEFINE_ENUM(NFSERR_NXIO);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) TRACE_DEFINE_ENUM(ECHILD);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) TRACE_DEFINE_ENUM(NFSERR_EAGAIN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) TRACE_DEFINE_ENUM(NFSERR_ACCES);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) TRACE_DEFINE_ENUM(NFSERR_EXIST);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) TRACE_DEFINE_ENUM(NFSERR_XDEV);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) TRACE_DEFINE_ENUM(NFSERR_NODEV);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) TRACE_DEFINE_ENUM(NFSERR_NOTDIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) TRACE_DEFINE_ENUM(NFSERR_ISDIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) TRACE_DEFINE_ENUM(NFSERR_INVAL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) TRACE_DEFINE_ENUM(NFSERR_FBIG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) TRACE_DEFINE_ENUM(NFSERR_NOSPC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) TRACE_DEFINE_ENUM(NFSERR_ROFS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) TRACE_DEFINE_ENUM(NFSERR_MLINK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) TRACE_DEFINE_ENUM(NFSERR_OPNOTSUPP);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) TRACE_DEFINE_ENUM(NFSERR_NAMETOOLONG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) TRACE_DEFINE_ENUM(NFSERR_NOTEMPTY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) TRACE_DEFINE_ENUM(NFSERR_DQUOT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) TRACE_DEFINE_ENUM(NFSERR_STALE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) TRACE_DEFINE_ENUM(NFSERR_REMOTE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) TRACE_DEFINE_ENUM(NFSERR_WFLUSH);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) TRACE_DEFINE_ENUM(NFSERR_BADHANDLE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) TRACE_DEFINE_ENUM(NFSERR_NOT_SYNC);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) TRACE_DEFINE_ENUM(NFSERR_BAD_COOKIE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) TRACE_DEFINE_ENUM(NFSERR_NOTSUPP);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) TRACE_DEFINE_ENUM(NFSERR_TOOSMALL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) TRACE_DEFINE_ENUM(NFSERR_SERVERFAULT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) TRACE_DEFINE_ENUM(NFSERR_BADTYPE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) TRACE_DEFINE_ENUM(NFSERR_JUKEBOX);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) #define nfs_show_status(x) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) __print_symbolic(x, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) { NFS_OK, "OK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) { NFSERR_PERM, "PERM" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) { NFSERR_NOENT, "NOENT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) { NFSERR_IO, "IO" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) { NFSERR_NXIO, "NXIO" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) { ECHILD, "CHILD" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) { NFSERR_EAGAIN, "AGAIN" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) { NFSERR_ACCES, "ACCES" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) { NFSERR_EXIST, "EXIST" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) { NFSERR_XDEV, "XDEV" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) { NFSERR_NODEV, "NODEV" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) { NFSERR_NOTDIR, "NOTDIR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) { NFSERR_ISDIR, "ISDIR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) { NFSERR_INVAL, "INVAL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) { NFSERR_FBIG, "FBIG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) { NFSERR_NOSPC, "NOSPC" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) { NFSERR_ROFS, "ROFS" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) { NFSERR_MLINK, "MLINK" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) { NFSERR_OPNOTSUPP, "OPNOTSUPP" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) { NFSERR_NAMETOOLONG, "NAMETOOLONG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) { NFSERR_NOTEMPTY, "NOTEMPTY" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) { NFSERR_DQUOT, "DQUOT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) { NFSERR_STALE, "STALE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) { NFSERR_REMOTE, "REMOTE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) { NFSERR_WFLUSH, "WFLUSH" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) { NFSERR_BADHANDLE, "BADHANDLE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) { NFSERR_NOT_SYNC, "NOTSYNC" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) { NFSERR_BAD_COOKIE, "BADCOOKIE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) { NFSERR_NOTSUPP, "NOTSUPP" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) { NFSERR_TOOSMALL, "TOOSMALL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) { NFSERR_SERVERFAULT, "REMOTEIO" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) { NFSERR_BADTYPE, "BADTYPE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) { NFSERR_JUKEBOX, "JUKEBOX" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) TRACE_EVENT(nfs_xdr_status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) const struct xdr_stream *xdr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) int error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) TP_ARGS(xdr, error),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) __field(int, version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) __field(unsigned long, error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) __string(program,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) xdr->rqst->rq_task->tk_client->cl_program->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) __string(procedure,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) const struct rpc_rqst *rqstp = xdr->rqst;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) const struct rpc_task *task = rqstp->rq_task;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) __entry->task_id = task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) __entry->client_id = task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) __entry->xid = be32_to_cpu(rqstp->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) __entry->version = task->tk_client->cl_vers;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) __entry->error = error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) __assign_str(program,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) task->tk_client->cl_program->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) __assign_str(procedure, task->tk_msg.rpc_proc->p_name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) "task:%u@%d xid=0x%08x %sv%d %s error=%ld (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) __get_str(program), __entry->version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) __get_str(procedure), -__entry->error,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) nfs_show_status(__entry->error)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) #endif /* _TRACE_NFS_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) #undef TRACE_INCLUDE_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) #define TRACE_INCLUDE_PATH .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) #define TRACE_INCLUDE_FILE nfstrace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) #include <trace/define_trace.h>