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

NFS: Clean up generic file commit tracepoint

Clean up the generic file commit tracepoints to use a 64-bit value
for the verifier, and to display the pNFS filehandle, if it exists.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>

authored by

Trond Myklebust and committed by
Anna Schumaker
7bdd297e 5bb2a7cb

+27 -17
+26 -16
fs/nfs/nfstrace.h
··· 1061 1061 TP_ARGS(data), 1062 1062 1063 1063 TP_STRUCT__entry( 1064 - __field(loff_t, offset) 1065 - __field(unsigned long, count) 1066 1064 __field(dev_t, dev) 1067 1065 __field(u32, fhandle) 1068 1066 __field(u64, fileid) 1067 + __field(loff_t, offset) 1068 + __field(u32, count) 1069 1069 ), 1070 1070 1071 1071 TP_fast_assign( 1072 1072 const struct inode *inode = data->inode; 1073 1073 const struct nfs_inode *nfsi = NFS_I(inode); 1074 + const struct nfs_fh *fh = data->args.fh ? 1075 + data->args.fh : &nfsi->fh; 1074 1076 1075 1077 __entry->offset = data->args.offset; 1076 1078 __entry->count = data->args.count; 1077 1079 __entry->dev = inode->i_sb->s_dev; 1078 1080 __entry->fileid = nfsi->fileid; 1079 - __entry->fhandle = nfs_fhandle_hash(&nfsi->fh); 1081 + __entry->fhandle = nfs_fhandle_hash(fh); 1080 1082 ), 1081 1083 1082 1084 TP_printk( 1083 1085 "fileid=%02x:%02x:%llu fhandle=0x%08x " 1084 - "offset=%lld count=%lu", 1086 + "offset=%lld count=%u", 1085 1087 MAJOR(__entry->dev), MINOR(__entry->dev), 1086 1088 (unsigned long long)__entry->fileid, 1087 1089 __entry->fhandle, 1088 - __entry->offset, __entry->count 1090 + (long long)__entry->offset, __entry->count 1089 1091 ) 1090 1092 ); 1091 1093 1092 1094 TRACE_EVENT(nfs_commit_done, 1093 1095 TP_PROTO( 1096 + const struct rpc_task *task, 1094 1097 const struct nfs_commit_data *data 1095 1098 ), 1096 1099 1097 - TP_ARGS(data), 1100 + TP_ARGS(task, data), 1098 1101 1099 1102 TP_STRUCT__entry( 1100 - __field(int, status) 1101 - __field(loff_t, offset) 1102 - __field(unsigned long long, verifier) 1103 1103 __field(dev_t, dev) 1104 1104 __field(u32, fhandle) 1105 1105 __field(u64, fileid) 1106 + __field(loff_t, offset) 1107 + __field(int, status) 1108 + __field(enum nfs3_stable_how, stable) 1109 + __array(char, verifier, NFS4_VERIFIER_SIZE) 1106 1110 ), 1107 1111 1108 1112 TP_fast_assign( 1109 1113 const struct inode *inode = data->inode; 1110 1114 const struct nfs_inode *nfsi = NFS_I(inode); 1115 + const struct nfs_fh *fh = data->args.fh ? 1116 + data->args.fh : &nfsi->fh; 1117 + const struct nfs_writeverf *verf = data->res.verf; 1111 1118 1112 - __entry->status = data->res.op_status; 1119 + __entry->status = task->tk_status; 1113 1120 __entry->offset = data->args.offset; 1114 - memcpy(&__entry->verifier, &data->verf.verifier, 1115 - sizeof(__entry->verifier)); 1121 + __entry->stable = verf->committed; 1122 + memcpy(__entry->verifier, 1123 + &verf->verifier, 1124 + NFS4_VERIFIER_SIZE); 1116 1125 __entry->dev = inode->i_sb->s_dev; 1117 1126 __entry->fileid = nfsi->fileid; 1118 - __entry->fhandle = nfs_fhandle_hash(&nfsi->fh); 1127 + __entry->fhandle = nfs_fhandle_hash(fh); 1119 1128 ), 1120 1129 1121 1130 TP_printk( 1122 1131 "fileid=%02x:%02x:%llu fhandle=0x%08x " 1123 - "offset=%lld status=%d verifier 0x%016llx", 1132 + "offset=%lld status=%d stable=%s verifier=%s", 1124 1133 MAJOR(__entry->dev), MINOR(__entry->dev), 1125 1134 (unsigned long long)__entry->fileid, 1126 1135 __entry->fhandle, 1127 - __entry->offset, __entry->status, 1128 - __entry->verifier 1136 + (long long)__entry->offset, __entry->status, 1137 + nfs_show_stable(__entry->stable), 1138 + __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) 1129 1139 ) 1130 1140 ); 1131 1141
+1 -1
fs/nfs/write.c
··· 1833 1833 1834 1834 /* Call the NFS version-specific code */ 1835 1835 NFS_PROTO(data->inode)->commit_done(task, data); 1836 - trace_nfs_commit_done(data); 1836 + trace_nfs_commit_done(task, data); 1837 1837 } 1838 1838 1839 1839 static void nfs_commit_release_pages(struct nfs_commit_data *data)