diff --git a/kmod/src/scoutfs_trace.h b/kmod/src/scoutfs_trace.h index e43084d0..fd3a0f6c 100644 --- a/kmod/src/scoutfs_trace.h +++ b/kmod/src/scoutfs_trace.h @@ -37,6 +37,7 @@ #include "export.h" #include "dir.h" #include "extents.h" +#include "server.h" struct lock_info; @@ -1641,36 +1642,20 @@ DECLARE_EVENT_CLASS(scoutfs_net_class, struct sockaddr_in *peer, struct scoutfs_net_header *nh), TP_ARGS(sb, name, peer, nh), TP_STRUCT__entry( - __field(unsigned int, major) - __field(unsigned int, minor) - __field(u32, name_addr) - __field(u16, name_port) - __field(u32, peer_addr) - __field(u16, peer_port) - __field(u64, id) - __field(u8, type) - __field(u8, status) - __field(u16, data_len) + __field(__u64, fsid) + si4_trace_define(name) + si4_trace_define(peer) + snh_trace_define(nh) ), TP_fast_assign( - __entry->major = MAJOR(sb->s_bdev->bd_dev); - __entry->minor = MINOR(sb->s_bdev->bd_dev); - /* sparse can't handle this cpp nightmare */ - __entry->name_addr = (u32 __force)name->sin_addr.s_addr; - __entry->name_port = be16_to_cpu(name->sin_port); - __entry->peer_addr = (u32 __force)peer->sin_addr.s_addr; - __entry->peer_port = be16_to_cpu(peer->sin_port); - __entry->id = le64_to_cpu(nh->id); - __entry->type = nh->type; - __entry->status = nh->status; - __entry->data_len = le16_to_cpu(nh->data_len); + __entry->fsid = FSID_ARG(sb); + si4_trace_assign(name, name); + si4_trace_assign(peer, peer); + snh_trace_assign(nh, nh); ), - TP_printk("dev %u:%u %pI4:%u -> %pI4:%u id %llu type %u status %u data_len %u", - __entry->major, __entry->minor, - &__entry->name_addr, __entry->name_port, - &__entry->peer_addr, __entry->peer_port, - __entry->id, __entry->type, __entry->status, - __entry->data_len) + TP_printk("fsid "FSID_FMT" name "SI4_FMT" peer "SI4_FMT" nh "SNH_FMT, + __entry->fsid, si4_trace_args(name), si4_trace_args(peer), + snh_trace_args(nh)) ); DEFINE_EVENT(scoutfs_net_class, scoutfs_client_send_request, diff --git a/kmod/src/server.h b/kmod/src/server.h index bbc73901..96f3a5df 100644 --- a/kmod/src/server.h +++ b/kmod/src/server.h @@ -1,6 +1,49 @@ #ifndef _SCOUTFS_SERVER_H_ #define _SCOUTFS_SERVER_H_ +#define SI4_FMT "%u.%u.%u.%u:%u" + +#define si4_trace_define(name) \ + __field(__u32, name##_addr) \ + __field(__u16, name##_port) + +#define si4_trace_assign(name, sin) \ +do { \ + __typeof__(sin) _sin = (sin); \ + \ + __entry->name##_addr = be32_to_cpu(_sin->sin_addr.s_addr); \ + __entry->name##_port = be16_to_cpu(_sin->sin_port); \ +} while(0) + +#define si4_trace_args(name) \ + (__entry->name##_addr >> 24), \ + (__entry->name##_addr >> 16) & 255, \ + (__entry->name##_addr >> 0) & 255, \ + __entry->name##_addr & 255, \ + __entry->name##_port + +#define SNH_FMT "id %llu data_len %u type %u status %u" + +#define snh_trace_define(name) \ + __field(__u64, name##_id) \ + __field(__u16, name##_data_len) \ + __field(__u8, name##_type) \ + __field(__u8, name##_status) + +#define snh_trace_assign(name, nh) \ +do { \ + __typeof__(nh) _nh = (nh); \ + \ + __entry->name##_id = le64_to_cpu(_nh->id); \ + __entry->name##_data_len = le16_to_cpu(_nh->data_len); \ + __entry->name##_type = _nh->type; \ + __entry->name##_status = _nh->status; \ +} while (0) + +#define snh_trace_args(name) \ + __entry->name##_id, __entry->name##_data_len, __entry->name##_type, \ + __entry->name##_status + void scoutfs_init_ment_to_net(struct scoutfs_net_manifest_entry *net_ment, struct scoutfs_manifest_entry *ment); void scoutfs_init_ment_from_net(struct scoutfs_manifest_entry *ment,