Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

nfs: add tracepoints to nfs_file_read() and nfs_file_write()

Add some tracepoints to the I/O submission codepaths.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>

authored by

Jeff Layton and committed by
Anna Schumaker
4b62f0e4 07e27ad1

+56
+4
fs/nfs/file.c
··· 161 161 struct inode *inode = file_inode(iocb->ki_filp); 162 162 ssize_t result; 163 163 164 + trace_nfs_file_read(iocb, to); 165 + 164 166 if (iocb->ki_flags & IOCB_DIRECT) 165 167 return nfs_file_direct_read(iocb, to, false); 166 168 ··· 691 689 ssize_t result, written; 692 690 errseq_t since; 693 691 int error; 692 + 693 + trace_nfs_file_write(iocb, from); 694 694 695 695 result = nfs_key_timeout_notify(file, inode); 696 696 if (result)
+52
fs/nfs/nfstrace.h
··· 1051 1051 DEFINE_NFS_FOLIO_EVENT(nfs_invalidate_folio); 1052 1052 DEFINE_NFS_FOLIO_EVENT_DONE(nfs_launder_folio_done); 1053 1053 1054 + DECLARE_EVENT_CLASS(nfs_kiocb_event, 1055 + TP_PROTO( 1056 + const struct kiocb *iocb, 1057 + const struct iov_iter *iter 1058 + ), 1059 + 1060 + TP_ARGS(iocb, iter), 1061 + 1062 + TP_STRUCT__entry( 1063 + __field(dev_t, dev) 1064 + __field(u32, fhandle) 1065 + __field(u64, fileid) 1066 + __field(u64, version) 1067 + __field(loff_t, offset) 1068 + __field(size_t, count) 1069 + __field(int, flags) 1070 + ), 1071 + 1072 + TP_fast_assign( 1073 + const struct inode *inode = file_inode(iocb->ki_filp); 1074 + const struct nfs_inode *nfsi = NFS_I(inode); 1075 + 1076 + __entry->dev = inode->i_sb->s_dev; 1077 + __entry->fileid = nfsi->fileid; 1078 + __entry->fhandle = nfs_fhandle_hash(&nfsi->fh); 1079 + __entry->version = inode_peek_iversion_raw(inode); 1080 + __entry->offset = iocb->ki_pos; 1081 + __entry->count = iov_iter_count(iter); 1082 + __entry->flags = iocb->ki_flags; 1083 + ), 1084 + 1085 + TP_printk( 1086 + "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld count=%zu ki_flags=%s", 1087 + MAJOR(__entry->dev), MINOR(__entry->dev), 1088 + (unsigned long long)__entry->fileid, 1089 + __entry->fhandle, __entry->version, 1090 + __entry->offset, __entry->count, 1091 + __print_flags(__entry->flags, "|", TRACE_IOCB_STRINGS) 1092 + ) 1093 + ); 1094 + 1095 + #define DEFINE_NFS_KIOCB_EVENT(name) \ 1096 + DEFINE_EVENT(nfs_kiocb_event, name, \ 1097 + TP_PROTO( \ 1098 + const struct kiocb *iocb, \ 1099 + const struct iov_iter *iter \ 1100 + ), \ 1101 + TP_ARGS(iocb, iter)) 1102 + 1103 + DEFINE_NFS_KIOCB_EVENT(nfs_file_read); 1104 + DEFINE_NFS_KIOCB_EVENT(nfs_file_write); 1105 + 1054 1106 TRACE_EVENT(nfs_aop_readahead, 1055 1107 TP_PROTO( 1056 1108 const struct inode *inode,