Files
poky/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch
Bruce Ashfield cb3194828a lttng: add 5.x fixup patches to 2.10.8 release
lttng hasn't released 2.10.9, but the stable/2.10 branch
contains changes that we need to build against the 5.0
kernel.

We add them here as patches, and we can drop them in the
future when lttng is updated.

(From OE-Core rev: f8bcf3486d44ebd867e9089d4dbd3b56726c9075)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-03-06 16:44:37 +00:00

187 lines
5.9 KiB
Diff

From 89f0be35e1baf411df6852014013ac64ad1bbcf8 Mon Sep 17 00:00:00 2001
From: Michael Jeanson <mjeanson@efficios.com>
Date: Wed, 9 Jan 2019 14:59:16 -0500
Subject: [PATCH 6/9] Fix: Replace pointer values with task->tk_pid and
rpc_clnt->cl_clid
Introduced in v3.12.
See upstream commit :
commit 92cb6c5be8134db6f7c38f25f6afd13e444cebaf
Author: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed Sep 4 22:09:50 2013 -0400
SUNRPC: Replace pointer values with task->tk_pid and rpc_clnt->cl_clid
Instead of the pointer values, use the task and client identifier values
for tracing purposes.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/89f0be35e1baf411df6852014013ac64ad1bbcf8
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
instrumentation/events/lttng-module/rpc.h | 108 ++++++++++++++++++++--
1 file changed, 102 insertions(+), 6 deletions(-)
diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h
index b9e45fe..a4ac557 100644
--- a/instrumentation/events/lttng-module/rpc.h
+++ b/instrumentation/events/lttng-module/rpc.h
@@ -8,6 +8,20 @@
#include <linux/sunrpc/sched.h>
#include <linux/sunrpc/clnt.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status,
+
+ TP_PROTO(struct rpc_task *task),
+
+ TP_ARGS(task),
+
+ TP_FIELDS(
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
+ ctf_integer(int, status, task->tk_status)
+ )
+)
+#else
LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status,
TP_PROTO(struct rpc_task *task),
@@ -20,6 +34,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status,
ctf_integer(int, status, task->tk_status)
)
)
+#endif
LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status,
TP_PROTO(struct rpc_task *task),
@@ -40,8 +55,8 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
TP_ARGS(task),
TP_FIELDS(
- ctf_integer_hex(const struct rpc_task *, task, task)
- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client)
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
ctf_integer(int, status, task->tk_status)
)
)
@@ -53,8 +68,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running,
TP_ARGS(task, action),
TP_FIELDS(
- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client)
- ctf_integer_hex(const struct rpc_task *, task, task)
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
ctf_integer_hex(const void *, action, action)
ctf_integer(unsigned long, runstate, task->tk_runstate)
ctf_integer(int, status, task->tk_status)
@@ -90,8 +105,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued,
TP_ARGS(task, q),
TP_FIELDS(
- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client)
- ctf_integer_hex(const struct rpc_task *, task, task)
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
ctf_integer(unsigned long, timeout, task->tk_timeout)
ctf_integer(unsigned long, runstate, task->tk_runstate)
ctf_integer(int, status, task->tk_status)
@@ -114,6 +129,87 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup,
TP_ARGS(task, q)
)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
+ TP_PROTO(struct rpc_task *task, int status),
+
+ TP_ARGS(task, status),
+
+ TP_FIELDS(
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
+ ctf_integer(int, status, status)
+ )
+)
+
+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+
+ TP_ARGS(clnt, task, action),
+
+ TP_FIELDS(
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
+ ctf_integer_hex(const void *, action, action)
+ ctf_integer(unsigned long, runstate, task->tk_runstate)
+ ctf_integer(int, status, task->tk_status)
+ ctf_integer(unsigned short, flags, task->tk_flags)
+ )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_begin,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+
+ TP_ARGS(clnt, task, action)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_run_action,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+
+ TP_ARGS(clnt, task, action)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_complete,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+
+ TP_ARGS(clnt, task, action)
+)
+
+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+
+ TP_ARGS(clnt, task, q),
+
+ TP_FIELDS(
+ ctf_integer(unsigned int, task_id, task->tk_pid)
+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid)
+ ctf_integer(unsigned long, timeout, task->tk_timeout)
+ ctf_integer(unsigned long, runstate, task->tk_runstate)
+ ctf_integer(int, status, task->tk_status)
+ ctf_integer(unsigned short, flags, task->tk_flags)
+ ctf_string(q_name, rpc_qname(q))
+ )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_sleep,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+
+ TP_ARGS(clnt, task, q)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup,
+
+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+
+ TP_ARGS(clnt, task, q)
+)
+
#else
LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
TP_PROTO(struct rpc_task *task, int status),
--
2.19.1