|
@@ -719,6 +719,254 @@ TRACE_EVENT(nfs_sillyrename_unlink,
|
|
|
__get_str(name)
|
|
|
)
|
|
|
);
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_initiate_read,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct inode *inode,
|
|
|
+ loff_t offset, unsigned long count
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(inode, offset, count),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(unsigned long, count)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->offset = offset;
|
|
|
+ __entry->count = count;
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld count=%lu",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->count
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_readpage_done,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct inode *inode,
|
|
|
+ int status, loff_t offset, bool eof
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(inode, status, offset, eof),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(int, status)
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(bool, eof)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->status = status;
|
|
|
+ __entry->offset = offset;
|
|
|
+ __entry->eof = eof;
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld status=%d%s",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->status,
|
|
|
+ __entry->eof ? " eof" : ""
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+/*
|
|
|
+ * XXX: I tried using NFS_UNSTABLE and friends in this table, but they
|
|
|
+ * all evaluate to 0 for some reason, even if I include linux/nfs.h.
|
|
|
+ */
|
|
|
+#define nfs_show_stable(stable) \
|
|
|
+ __print_symbolic(stable, \
|
|
|
+ { 0, " (UNSTABLE)" }, \
|
|
|
+ { 1, " (DATA_SYNC)" }, \
|
|
|
+ { 2, " (FILE_SYNC)" })
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_initiate_write,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct inode *inode,
|
|
|
+ loff_t offset, unsigned long count,
|
|
|
+ enum nfs3_stable_how stable
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(inode, offset, count, stable),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(unsigned long, count)
|
|
|
+ __field(enum nfs3_stable_how, stable)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->offset = offset;
|
|
|
+ __entry->count = count;
|
|
|
+ __entry->stable = stable;
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld count=%lu stable=%d%s",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->count,
|
|
|
+ __entry->stable, nfs_show_stable(__entry->stable)
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_writeback_done,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct inode *inode,
|
|
|
+ int status,
|
|
|
+ loff_t offset,
|
|
|
+ struct nfs_writeverf *writeverf
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(inode, status, offset, writeverf),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(int, status)
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(enum nfs3_stable_how, stable)
|
|
|
+ __field(unsigned long long, verifier)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->status = status;
|
|
|
+ __entry->offset = offset;
|
|
|
+ __entry->stable = writeverf->committed;
|
|
|
+ memcpy(&__entry->verifier, &writeverf->verifier,
|
|
|
+ sizeof(__entry->verifier));
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld status=%d stable=%d%s "
|
|
|
+ "verifier 0x%016llx",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->status,
|
|
|
+ __entry->stable, nfs_show_stable(__entry->stable),
|
|
|
+ __entry->verifier
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_initiate_commit,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct nfs_commit_data *data
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(data),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(unsigned long, count)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct inode *inode = data->inode;
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->offset = data->args.offset;
|
|
|
+ __entry->count = data->args.count;
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld count=%lu",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->count
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(nfs_commit_done,
|
|
|
+ TP_PROTO(
|
|
|
+ const struct nfs_commit_data *data
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_ARGS(data),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(int, status)
|
|
|
+ __field(loff_t, offset)
|
|
|
+ __field(unsigned long long, verifier)
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(u32, fhandle)
|
|
|
+ __field(u64, fileid)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ const struct inode *inode = data->inode;
|
|
|
+ const struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
+
|
|
|
+ __entry->status = data->res.op_status;
|
|
|
+ __entry->offset = data->args.offset;
|
|
|
+ memcpy(&__entry->verifier, &data->verf.verifier,
|
|
|
+ sizeof(__entry->verifier));
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->fileid = nfsi->fileid;
|
|
|
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk(
|
|
|
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
|
|
|
+ "offset=%lld status=%d verifier 0x%016llx",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long long)__entry->fileid,
|
|
|
+ __entry->fhandle,
|
|
|
+ __entry->offset, __entry->status,
|
|
|
+ __entry->verifier
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
#endif /* _TRACE_NFS_H */
|
|
|
|
|
|
#undef TRACE_INCLUDE_PATH
|