summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Aring <aahringo@redhat.com>2022-11-18 01:11:45 +0300
committerDavid Teigland <teigland@redhat.com>2022-11-21 18:45:49 +0300
commit17827754e503d6c72b05a1c4603469ec9bf35d48 (patch)
treef61973b4a8662a67719dc912749348afb9f9dff7
parent81889255c2e6ed1eef448375b5d6330a2f1453de (diff)
downloadlinux-17827754e503d6c72b05a1c4603469ec9bf35d48.tar.xz
fs: dlm: add dst nodeid for msg tracing
In DLM when we send a dlm message it is easy to add the lock resource name, but additional lookup is required when to trace the receive message side. The idea here is to move the lookup work to the user by using a lookup to find the right send message with recv message. As note DLM can't drop any message which is guaranteed by a special session layer. For doing the lookup a 3 tupel is required as an unique identification which is dst nodeid, src nodeid and sequence number. This patch adds the destination nodeid to the dlm message trace points. The source nodeid is given by the h_nodeid field inside the header. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
-rw-r--r--fs/dlm/midcomms.c10
-rw-r--r--include/trace/events/dlm.h38
2 files changed, 28 insertions, 20 deletions
diff --git a/fs/dlm/midcomms.c b/fs/dlm/midcomms.c
index 32194a750fe1..960def5ab530 100644
--- a/fs/dlm/midcomms.c
+++ b/fs/dlm/midcomms.c
@@ -479,10 +479,10 @@ static void dlm_receive_buffer_3_2_trace(uint32_t seq, union dlm_packet *p)
{
switch (p->header.h_cmd) {
case DLM_MSG:
- trace_dlm_recv_message(seq, &p->message);
+ trace_dlm_recv_message(dlm_our_nodeid(), seq, &p->message);
break;
case DLM_RCOM:
- trace_dlm_recv_rcom(seq, &p->rcom);
+ trace_dlm_recv_rcom(dlm_our_nodeid(), seq, &p->rcom);
break;
default:
break;
@@ -1151,11 +1151,13 @@ static void dlm_midcomms_commit_msg_3_2_trace(const struct dlm_mhandle *mh,
{
switch (mh->inner_p->header.h_cmd) {
case DLM_MSG:
- trace_dlm_send_message(mh->seq, &mh->inner_p->message,
+ trace_dlm_send_message(mh->node->nodeid, mh->seq,
+ &mh->inner_p->message,
name, namelen);
break;
case DLM_RCOM:
- trace_dlm_send_rcom(mh->seq, &mh->inner_p->rcom);
+ trace_dlm_send_rcom(mh->node->nodeid, mh->seq,
+ &mh->inner_p->rcom);
break;
default:
/* nothing to trace */
diff --git a/include/trace/events/dlm.h b/include/trace/events/dlm.h
index 212f30aec7cf..37eb79e29b28 100644
--- a/include/trace/events/dlm.h
+++ b/include/trace/events/dlm.h
@@ -342,11 +342,12 @@ TRACE_EVENT(dlm_unlock_end,
DECLARE_EVENT_CLASS(dlm_rcom_template,
- TP_PROTO(uint32_t h_seq, const struct dlm_rcom *rc),
+ TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
- TP_ARGS(h_seq, rc),
+ TP_ARGS(dst, h_seq, rc),
TP_STRUCT__entry(
+ __field(uint32_t, dst)
__field(uint32_t, h_seq)
__field(uint32_t, h_version)
__field(uint32_t, h_lockspace)
@@ -363,6 +364,7 @@ DECLARE_EVENT_CLASS(dlm_rcom_template,
),
TP_fast_assign(
+ __entry->dst = dst;
__entry->h_seq = h_seq;
__entry->h_version = le32_to_cpu(rc->rc_header.h_version);
__entry->h_lockspace = le32_to_cpu(rc->rc_header.u.h_lockspace);
@@ -378,10 +380,10 @@ DECLARE_EVENT_CLASS(dlm_rcom_template,
__get_dynamic_array_len(rc_buf));
),
- TP_printk("h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
+ TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
"h_length=%u h_cmd=%s rc_type=%s rc_result=%d "
"rc_id=%llu rc_seq=%llu rc_seq_reply=%llu "
- "rc_buf=0x%s", __entry->h_seq,
+ "rc_buf=0x%s", __entry->dst, __entry->h_seq,
show_message_version(__entry->h_version),
__entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
show_header_cmd(__entry->h_cmd),
@@ -394,21 +396,22 @@ DECLARE_EVENT_CLASS(dlm_rcom_template,
);
DEFINE_EVENT(dlm_rcom_template, dlm_send_rcom,
- TP_PROTO(uint32_t h_seq, const struct dlm_rcom *rc),
- TP_ARGS(h_seq, rc));
+ TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
+ TP_ARGS(dst, h_seq, rc));
DEFINE_EVENT(dlm_rcom_template, dlm_recv_rcom,
- TP_PROTO(uint32_t h_seq, const struct dlm_rcom *rc),
- TP_ARGS(h_seq, rc));
+ TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_rcom *rc),
+ TP_ARGS(dst, h_seq, rc));
TRACE_EVENT(dlm_send_message,
- TP_PROTO(uint32_t h_seq, const struct dlm_message *ms,
+ TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms,
const void *name, int namelen),
- TP_ARGS(h_seq, ms, name, namelen),
+ TP_ARGS(dst, h_seq, ms, name, namelen),
TP_STRUCT__entry(
+ __field(uint32_t, dst)
__field(uint32_t, h_seq)
__field(uint32_t, h_version)
__field(uint32_t, h_lockspace)
@@ -439,6 +442,7 @@ TRACE_EVENT(dlm_send_message,
),
TP_fast_assign(
+ __entry->dst = dst;
__entry->h_seq = h_seq;
__entry->h_version = le32_to_cpu(ms->m_header.h_version);
__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
@@ -469,13 +473,13 @@ TRACE_EVENT(dlm_send_message,
__get_dynamic_array_len(res_name));
),
- TP_printk("h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
+ TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
"h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
"m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
"m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
"m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
"m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
- "m_extra=0x%s res_name=0x%s",
+ "m_extra=0x%s res_name=0x%s", __entry->dst,
__entry->h_seq, show_message_version(__entry->h_version),
__entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
show_header_cmd(__entry->h_cmd),
@@ -499,11 +503,12 @@ TRACE_EVENT(dlm_send_message,
TRACE_EVENT(dlm_recv_message,
- TP_PROTO(uint32_t h_seq, const struct dlm_message *ms),
+ TP_PROTO(uint32_t dst, uint32_t h_seq, const struct dlm_message *ms),
- TP_ARGS(h_seq, ms),
+ TP_ARGS(dst, h_seq, ms),
TP_STRUCT__entry(
+ __field(uint32_t, dst)
__field(uint32_t, h_seq)
__field(uint32_t, h_version)
__field(uint32_t, h_lockspace)
@@ -533,6 +538,7 @@ TRACE_EVENT(dlm_recv_message,
),
TP_fast_assign(
+ __entry->dst = dst;
__entry->h_seq = h_seq;
__entry->h_version = le32_to_cpu(ms->m_header.h_version);
__entry->h_lockspace = le32_to_cpu(ms->m_header.u.h_lockspace);
@@ -561,13 +567,13 @@ TRACE_EVENT(dlm_recv_message,
__get_dynamic_array_len(m_extra));
),
- TP_printk("h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
+ TP_printk("dst=%u h_seq=%u h_version=%s h_lockspace=%u h_nodeid=%u "
"h_length=%u h_cmd=%s m_type=%s m_nodeid=%u "
"m_pid=%u m_lkid=%u m_remid=%u m_parent_lkid=%u "
"m_parent_remid=%u m_exflags=%s m_sbflags=%s m_flags=%s "
"m_lvbseq=%u m_hash=%u m_status=%d m_grmode=%s "
"m_rqmode=%s m_bastmode=%s m_asts=%d m_result=%d "
- "m_extra=0x%s",
+ "m_extra=0x%s", __entry->dst,
__entry->h_seq, show_message_version(__entry->h_version),
__entry->h_lockspace, __entry->h_nodeid, __entry->h_length,
show_header_cmd(__entry->h_cmd),