diff options
10 files changed, 1350 insertions, 0 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch new file mode 100644 index 0000000000..351184dabb --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch | |||
| @@ -0,0 +1,133 @@ | |||
| 1 | From 0a0d736ec89dffdbc83e7181166a99d5563acfe8 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Mon, 5 Nov 2018 11:35:52 -0500 | ||
| 4 | Subject: [PATCH 1/9] Fix: signal: Distinguish between kernel_siginfo and | ||
| 5 | siginfo (v4.20) | ||
| 6 | |||
| 7 | See upstream commit : | ||
| 8 | |||
| 9 | commit ae7795bc6187a15ec51cf258abae656a625f9980 | ||
| 10 | Author: Eric W. Biederman <ebiederm@xmission.com> | ||
| 11 | Date: Tue Sep 25 11:27:20 2018 +0200 | ||
| 12 | |||
| 13 | signal: Distinguish between kernel_siginfo and siginfo | ||
| 14 | |||
| 15 | Linus recently observed that if we did not worry about the padding | ||
| 16 | member in struct siginfo it is only about 48 bytes, and 48 bytes is | ||
| 17 | much nicer than 128 bytes for allocating on the stack and copying | ||
| 18 | around in the kernel. | ||
| 19 | |||
| 20 | The obvious thing of only adding the padding when userspace is | ||
| 21 | including siginfo.h won't work as there are sigframe definitions in | ||
| 22 | the kernel that embed struct siginfo. | ||
| 23 | |||
| 24 | So split siginfo in two; kernel_siginfo and siginfo. Keeping the | ||
| 25 | traditional name for the userspace definition. While the version that | ||
| 26 | is used internally to the kernel and ultimately will not be padded to | ||
| 27 | 128 bytes is called kernel_siginfo. | ||
| 28 | |||
| 29 | The definition of struct kernel_siginfo I have put in include/signal_types.h | ||
| 30 | |||
| 31 | A set of buildtime checks has been added to verify the two structures have | ||
| 32 | the same field offsets. | ||
| 33 | |||
| 34 | To make it easy to verify the change kernel_siginfo retains the same | ||
| 35 | size as siginfo. The reduction in size comes in a following change. | ||
| 36 | |||
| 37 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 38 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 39 | |||
| 40 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0a0d736ec89dffdbc83e7181166a99d5563acfe8 | ||
| 41 | |||
| 42 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 43 | --- | ||
| 44 | instrumentation/events/lttng-module/signal.h | 41 ++++++++++++++++++-- | ||
| 45 | 1 file changed, 37 insertions(+), 4 deletions(-) | ||
| 46 | |||
| 47 | diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h | ||
| 48 | index b3c9126..8783b52 100644 | ||
| 49 | --- a/instrumentation/events/lttng-module/signal.h | ||
| 50 | +++ b/instrumentation/events/lttng-module/signal.h | ||
| 51 | @@ -35,21 +35,24 @@ | ||
| 52 | * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV | ||
| 53 | * means that si_code is SI_KERNEL. | ||
| 54 | */ | ||
| 55 | -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) | ||
| 56 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 57 | LTTNG_TRACEPOINT_EVENT(signal_generate, | ||
| 58 | |||
| 59 | - TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), | ||
| 60 | + TP_PROTO(int sig, struct kernel_siginfo *info, struct task_struct *task, | ||
| 61 | + int group, int result), | ||
| 62 | |||
| 63 | - TP_ARGS(sig, info, task), | ||
| 64 | + TP_ARGS(sig, info, task, group, result), | ||
| 65 | |||
| 66 | TP_FIELDS( | ||
| 67 | ctf_integer(int, sig, sig) | ||
| 68 | LTTNG_FIELDS_SIGINFO(info) | ||
| 69 | ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) | ||
| 70 | ctf_integer(pid_t, pid, task->pid) | ||
| 71 | + ctf_integer(int, group, group) | ||
| 72 | + ctf_integer(int, result, result) | ||
| 73 | ) | ||
| 74 | ) | ||
| 75 | -#else | ||
| 76 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) | ||
| 77 | LTTNG_TRACEPOINT_EVENT(signal_generate, | ||
| 78 | |||
| 79 | TP_PROTO(int sig, struct siginfo *info, struct task_struct *task, | ||
| 80 | @@ -66,6 +69,20 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, | ||
| 81 | ctf_integer(int, result, result) | ||
| 82 | ) | ||
| 83 | ) | ||
| 84 | +#else | ||
| 85 | +LTTNG_TRACEPOINT_EVENT(signal_generate, | ||
| 86 | + | ||
| 87 | + TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), | ||
| 88 | + | ||
| 89 | + TP_ARGS(sig, info, task), | ||
| 90 | + | ||
| 91 | + TP_FIELDS( | ||
| 92 | + ctf_integer(int, sig, sig) | ||
| 93 | + LTTNG_FIELDS_SIGINFO(info) | ||
| 94 | + ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) | ||
| 95 | + ctf_integer(pid_t, pid, task->pid) | ||
| 96 | + ) | ||
| 97 | +) | ||
| 98 | #endif | ||
| 99 | |||
| 100 | /** | ||
| 101 | @@ -82,6 +99,21 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, | ||
| 102 | * This means, this can show which signals are actually delivered, but | ||
| 103 | * matching generated signals and delivered signals may not be correct. | ||
| 104 | */ | ||
| 105 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 106 | +LTTNG_TRACEPOINT_EVENT(signal_deliver, | ||
| 107 | + | ||
| 108 | + TP_PROTO(int sig, struct kernel_siginfo *info, struct k_sigaction *ka), | ||
| 109 | + | ||
| 110 | + TP_ARGS(sig, info, ka), | ||
| 111 | + | ||
| 112 | + TP_FIELDS( | ||
| 113 | + ctf_integer(int, sig, sig) | ||
| 114 | + LTTNG_FIELDS_SIGINFO(info) | ||
| 115 | + ctf_integer(unsigned long, sa_handler, (unsigned long) ka->sa.sa_handler) | ||
| 116 | + ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) | ||
| 117 | + ) | ||
| 118 | +) | ||
| 119 | +#else | ||
| 120 | LTTNG_TRACEPOINT_EVENT(signal_deliver, | ||
| 121 | |||
| 122 | TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka), | ||
| 123 | @@ -95,6 +127,7 @@ LTTNG_TRACEPOINT_EVENT(signal_deliver, | ||
| 124 | ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) | ||
| 125 | ) | ||
| 126 | ) | ||
| 127 | +#endif | ||
| 128 | |||
| 129 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) | ||
| 130 | LTTNG_TRACEPOINT_EVENT_CLASS(signal_queue_overflow, | ||
| 131 | -- | ||
| 132 | 2.19.1 | ||
| 133 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch new file mode 100644 index 0000000000..905b68165b --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | From 26bc064a4d4c85e6000393aadb38659f99b59162 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Mon, 5 Nov 2018 11:35:53 -0500 | ||
| 4 | Subject: [PATCH 2/9] Fix: signal: Remove SEND_SIG_FORCED (v4.20) | ||
| 5 | |||
| 6 | See upstream commit : | ||
| 7 | |||
| 8 | commit 4ff4c31a6e85f4c49fbeebeaa28018d002884b5a | ||
| 9 | Author: Eric W. Biederman <ebiederm@xmission.com> | ||
| 10 | Date: Mon Sep 3 10:39:04 2018 +0200 | ||
| 11 | |||
| 12 | signal: Remove SEND_SIG_FORCED | ||
| 13 | |||
| 14 | There are no more users of SEND_SIG_FORCED so it may be safely removed. | ||
| 15 | |||
| 16 | Remove the definition of SEND_SIG_FORCED, it's use in is_si_special, | ||
| 17 | it's use in TP_STORE_SIGINFO, and it's use in __send_signal as without | ||
| 18 | any users the uses of SEND_SIG_FORCED are now unncessary. | ||
| 19 | |||
| 20 | This makes the code simpler, easier to understand and use. Users of | ||
| 21 | signal sending functions now no longer need to ask themselves do I | ||
| 22 | need to use SEND_SIG_FORCED. | ||
| 23 | |||
| 24 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 25 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 26 | |||
| 27 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/26bc064a4d4c85e6000393aadb38659f99b59162 | ||
| 28 | |||
| 29 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 30 | |||
| 31 | --- | ||
| 32 | instrumentation/events/lttng-module/signal.h | 12 ++++++++++++ | ||
| 33 | 1 file changed, 12 insertions(+) | ||
| 34 | |||
| 35 | diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h | ||
| 36 | index 8783b52..ad8fe69 100644 | ||
| 37 | --- a/instrumentation/events/lttng-module/signal.h | ||
| 38 | +++ b/instrumentation/events/lttng-module/signal.h | ||
| 39 | @@ -12,6 +12,17 @@ | ||
| 40 | #include <linux/signal.h> | ||
| 41 | #include <linux/sched.h> | ||
| 42 | #undef LTTNG_FIELDS_SIGINFO | ||
| 43 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 44 | +#define LTTNG_FIELDS_SIGINFO(info) \ | ||
| 45 | + ctf_integer(int, errno, \ | ||
| 46 | + (info == SEND_SIG_NOINFO || info == SEND_SIG_PRIV) ? \ | ||
| 47 | + 0 : \ | ||
| 48 | + info->si_errno) \ | ||
| 49 | + ctf_integer(int, code, \ | ||
| 50 | + (info == SEND_SIG_NOINFO) ? \ | ||
| 51 | + SI_USER : \ | ||
| 52 | + ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) | ||
| 53 | +#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ | ||
| 54 | #define LTTNG_FIELDS_SIGINFO(info) \ | ||
| 55 | ctf_integer(int, errno, \ | ||
| 56 | (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED || info == SEND_SIG_PRIV) ? \ | ||
| 57 | @@ -21,6 +32,7 @@ | ||
| 58 | (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED) ? \ | ||
| 59 | SI_USER : \ | ||
| 60 | ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) | ||
| 61 | +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ | ||
| 62 | #endif /* _TRACE_SIGNAL_DEF */ | ||
| 63 | |||
| 64 | /** | ||
| 65 | -- | ||
| 66 | 2.19.1 | ||
| 67 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch new file mode 100644 index 0000000000..7edffee542 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch | |||
| @@ -0,0 +1,149 @@ | |||
| 1 | From cb9f1a821bcf55cecf3813195fd6d4eff8070927 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Mon, 5 Nov 2018 11:35:54 -0500 | ||
| 4 | Subject: [PATCH 3/9] Fix: ext4: adjust reserved cluster count when removing | ||
| 5 | extents (v4.20) | ||
| 6 | |||
| 7 | See upstream commit : | ||
| 8 | |||
| 9 | commit 9fe671496b6c286f9033aedfc1718d67721da0ae | ||
| 10 | Author: Eric Whitney <enwlinux@gmail.com> | ||
| 11 | Date: Mon Oct 1 14:25:08 2018 -0400 | ||
| 12 | |||
| 13 | ext4: adjust reserved cluster count when removing extents | ||
| 14 | |||
| 15 | Modify ext4_ext_remove_space() and the code it calls to correct the | ||
| 16 | reserved cluster count for pending reservations (delayed allocated | ||
| 17 | clusters shared with allocated blocks) when a block range is removed | ||
| 18 | from the extent tree. Pending reservations may be found for the clusters | ||
| 19 | at the ends of written or unwritten extents when a block range is removed. | ||
| 20 | If a physical cluster at the end of an extent is freed, it's necessary | ||
| 21 | to increment the reserved cluster count to maintain correct accounting | ||
| 22 | if the corresponding logical cluster is shared with at least one | ||
| 23 | delayed and unwritten extent as found in the extents status tree. | ||
| 24 | |||
| 25 | Add a new function, ext4_rereserve_cluster(), to reapply a reservation | ||
| 26 | on a delayed allocated cluster sharing blocks with a freed allocated | ||
| 27 | cluster. To avoid ENOSPC on reservation, a flag is applied to | ||
| 28 | ext4_free_blocks() to briefly defer updating the freeclusters counter | ||
| 29 | when an allocated cluster is freed. This prevents another thread | ||
| 30 | from allocating the freed block before the reservation can be reapplied. | ||
| 31 | |||
| 32 | Redefine the partial cluster object as a struct to carry more state | ||
| 33 | information and to clarify the code using it. | ||
| 34 | |||
| 35 | Adjust the conditional code structure in ext4_ext_remove_space to | ||
| 36 | reduce the indentation level in the main body of the code to improve | ||
| 37 | readability. | ||
| 38 | |||
| 39 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 40 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 41 | |||
| 42 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/cb9f1a821bcf55cecf3813195fd6d4eff8070927 | ||
| 43 | |||
| 44 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 45 | |||
| 46 | --- | ||
| 47 | instrumentation/events/lttng-module/ext4.h | 72 +++++++++++++++++++++- | ||
| 48 | 1 file changed, 69 insertions(+), 3 deletions(-) | ||
| 49 | |||
| 50 | diff --git a/instrumentation/events/lttng-module/ext4.h b/instrumentation/events/lttng-module/ext4.h | ||
| 51 | index fe6f802..83a80ba 100644 | ||
| 52 | --- a/instrumentation/events/lttng-module/ext4.h | ||
| 53 | +++ b/instrumentation/events/lttng-module/ext4.h | ||
| 54 | @@ -1602,7 +1602,30 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_show_extent, | ||
| 55 | ) | ||
| 56 | ) | ||
| 57 | |||
| 58 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 59 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 60 | + | ||
| 61 | +LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, | ||
| 62 | + TP_PROTO(struct inode *inode, struct ext4_extent *ex, | ||
| 63 | + ext4_lblk_t from, ext4_fsblk_t to, | ||
| 64 | + struct partial_cluster *pc), | ||
| 65 | + | ||
| 66 | + TP_ARGS(inode, ex, from, to, pc), | ||
| 67 | + | ||
| 68 | + TP_FIELDS( | ||
| 69 | + ctf_integer(dev_t, dev, inode->i_sb->s_dev) | ||
| 70 | + ctf_integer(ino_t, ino, inode->i_ino) | ||
| 71 | + ctf_integer(ext4_lblk_t, from, from) | ||
| 72 | + ctf_integer(ext4_lblk_t, to, to) | ||
| 73 | + ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) | ||
| 74 | + ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) | ||
| 75 | + ctf_integer(unsigned short, ee_len, ext4_ext_get_actual_len(ex)) | ||
| 76 | + ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) | ||
| 77 | + ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) | ||
| 78 | + ctf_integer(int, pc_state, pc->state) | ||
| 79 | + ) | ||
| 80 | +) | ||
| 81 | + | ||
| 82 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 83 | |||
| 84 | LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, | ||
| 85 | TP_PROTO(struct inode *inode, struct ext4_extent *ex, | ||
| 86 | @@ -1646,7 +1669,29 @@ LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, | ||
| 87 | |||
| 88 | #endif | ||
| 89 | |||
| 90 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 91 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 92 | + | ||
| 93 | +LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, | ||
| 94 | + TP_PROTO(struct inode *inode, ext4_lblk_t start, | ||
| 95 | + struct ext4_extent *ex, | ||
| 96 | + struct partial_cluster *pc), | ||
| 97 | + | ||
| 98 | + TP_ARGS(inode, start, ex, pc), | ||
| 99 | + | ||
| 100 | + TP_FIELDS( | ||
| 101 | + ctf_integer(dev_t, dev, inode->i_sb->s_dev) | ||
| 102 | + ctf_integer(ino_t, ino, inode->i_ino) | ||
| 103 | + ctf_integer(ext4_lblk_t, start, start) | ||
| 104 | + ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) | ||
| 105 | + ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) | ||
| 106 | + ctf_integer(short, ee_len, ext4_ext_get_actual_len(ex)) | ||
| 107 | + ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) | ||
| 108 | + ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) | ||
| 109 | + ctf_integer(int, pc_state, pc->state) | ||
| 110 | + ) | ||
| 111 | +) | ||
| 112 | + | ||
| 113 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 114 | |||
| 115 | LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, | ||
| 116 | TP_PROTO(struct inode *inode, ext4_lblk_t start, | ||
| 117 | @@ -1733,7 +1778,28 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space, | ||
| 118 | |||
| 119 | #endif | ||
| 120 | |||
| 121 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 122 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) | ||
| 123 | + | ||
| 124 | +LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, | ||
| 125 | + TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, | ||
| 126 | + int depth, struct partial_cluster *pc, __le16 eh_entries), | ||
| 127 | + | ||
| 128 | + TP_ARGS(inode, start, end, depth, pc, eh_entries), | ||
| 129 | + | ||
| 130 | + TP_FIELDS( | ||
| 131 | + ctf_integer(dev_t, dev, inode->i_sb->s_dev) | ||
| 132 | + ctf_integer(ino_t, ino, inode->i_ino) | ||
| 133 | + ctf_integer(ext4_lblk_t, start, start) | ||
| 134 | + ctf_integer(ext4_lblk_t, end, end) | ||
| 135 | + ctf_integer(int, depth, depth) | ||
| 136 | + ctf_integer(unsigned short, eh_entries, le16_to_cpu(eh_entries)) | ||
| 137 | + ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) | ||
| 138 | + ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) | ||
| 139 | + ctf_integer(int, pc_state, pc->state) | ||
| 140 | + ) | ||
| 141 | +) | ||
| 142 | + | ||
| 143 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
| 144 | |||
| 145 | LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, | ||
| 146 | TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, | ||
| 147 | -- | ||
| 148 | 2.19.1 | ||
| 149 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch new file mode 100644 index 0000000000..b5d50dba1c --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | From 4eaeb54a27fbf701c2a4908a6e90a978b93deb06 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Thu, 6 Dec 2018 11:31:51 -0500 | ||
| 4 | Subject: [PATCH 4/9] Fix: timer instrumentation for RHEL 7.6 | ||
| 5 | |||
| 6 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 7 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 8 | |||
| 9 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/4eaeb54a27fbf701c2a4908a6e90a978b93deb06 | ||
| 10 | |||
| 11 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 12 | --- | ||
| 13 | instrumentation/events/lttng-module/timer.h | 3 ++- | ||
| 14 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
| 15 | |||
| 16 | diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h | ||
| 17 | index 6f0cb7f..8807ad5 100644 | ||
| 18 | --- a/instrumentation/events/lttng-module/timer.h | ||
| 19 | +++ b/instrumentation/events/lttng-module/timer.h | ||
| 20 | @@ -44,7 +44,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init, | ||
| 21 | TP_ARGS(timer) | ||
| 22 | ) | ||
| 23 | |||
| 24 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) | ||
| 25 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) || \ | ||
| 26 | + LTTNG_RHEL_KERNEL_RANGE(3,10,0,957,0,0, 3,11,0,0,0,0)) | ||
| 27 | /** | ||
| 28 | * timer_start - called when the timer is started | ||
| 29 | * @timer: pointer to struct timer_list | ||
| 30 | -- | ||
| 31 | 2.19.1 | ||
| 32 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch b/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch new file mode 100644 index 0000000000..2266bbd9e0 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch | |||
| @@ -0,0 +1,204 @@ | |||
| 1 | From 0039dbe9891cfdf2c0d04691f83c2f342993dfd7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Wed, 9 Jan 2019 14:59:15 -0500 | ||
| 4 | Subject: [PATCH 5/9] Fix: Remove 'type' argument from access_ok() function | ||
| 5 | (v5.0) | ||
| 6 | |||
| 7 | See upstream commit : | ||
| 8 | |||
| 9 | commit 96d4f267e40f9509e8a66e2b39e8b95655617693 | ||
| 10 | Author: Linus Torvalds <torvalds@linux-foundation.org> | ||
| 11 | Date: Thu Jan 3 18:57:57 2019 -0800 | ||
| 12 | |||
| 13 | Remove 'type' argument from access_ok() function | ||
| 14 | |||
| 15 | Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument | ||
| 16 | of the user address range verification function since we got rid of the | ||
| 17 | old racy i386-only code to walk page tables by hand. | ||
| 18 | |||
| 19 | It existed because the original 80386 would not honor the write protect | ||
| 20 | bit when in kernel mode, so you had to do COW by hand before doing any | ||
| 21 | user access. But we haven't supported that in a long time, and these | ||
| 22 | days the 'type' argument is a purely historical artifact. | ||
| 23 | |||
| 24 | A discussion about extending 'user_access_begin()' to do the range | ||
| 25 | checking resulted this patch, because there is no way we're going to | ||
| 26 | move the old VERIFY_xyz interface to that model. And it's best done at | ||
| 27 | the end of the merge window when I've done most of my merges, so let's | ||
| 28 | just get this done once and for all. | ||
| 29 | |||
| 30 | This patch was mostly done with a sed-script, with manual fix-ups for | ||
| 31 | the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form. | ||
| 32 | |||
| 33 | There were a couple of notable cases: | ||
| 34 | |||
| 35 | - csky still had the old "verify_area()" name as an alias. | ||
| 36 | |||
| 37 | - the iter_iov code had magical hardcoded knowledge of the actual | ||
| 38 | values of VERIFY_{READ,WRITE} (not that they mattered, since nothing | ||
| 39 | really used it) | ||
| 40 | |||
| 41 | - microblaze used the type argument for a debug printout | ||
| 42 | |||
| 43 | but other than those oddities this should be a total no-op patch. | ||
| 44 | |||
| 45 | I tried to fix up all architectures, did fairly extensive grepping for | ||
| 46 | access_ok() uses, and the changes are trivial, but I may have missed | ||
| 47 | something. Any missed conversion should be trivially fixable, though. | ||
| 48 | |||
| 49 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 50 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 51 | |||
| 52 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0039dbe9891cfdf2c0d04691f83c2f342993dfd7 | ||
| 53 | |||
| 54 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 55 | --- | ||
| 56 | lib/ringbuffer/backend.h | 8 ++++---- | ||
| 57 | lib/ringbuffer/ring_buffer_iterator.c | 3 ++- | ||
| 58 | lttng-filter-interpreter.c | 4 ++-- | ||
| 59 | probes/lttng-probe-user.c | 3 ++- | ||
| 60 | wrapper/uaccess.h | 28 +++++++++++++++++++++++++++ | ||
| 61 | 5 files changed, 38 insertions(+), 8 deletions(-) | ||
| 62 | create mode 100644 wrapper/uaccess.h | ||
| 63 | |||
| 64 | diff --git a/lib/ringbuffer/backend.h b/lib/ringbuffer/backend.h | ||
| 65 | index 0b75de8..3f8c108 100644 | ||
| 66 | --- a/lib/ringbuffer/backend.h | ||
| 67 | +++ b/lib/ringbuffer/backend.h | ||
| 68 | @@ -34,7 +34,7 @@ | ||
| 69 | #include <linux/list.h> | ||
| 70 | #include <linux/fs.h> | ||
| 71 | #include <linux/mm.h> | ||
| 72 | -#include <linux/uaccess.h> | ||
| 73 | +#include <wrapper/uaccess.h> | ||
| 74 | |||
| 75 | /* Internal helpers */ | ||
| 76 | #include <wrapper/ringbuffer/backend_internal.h> | ||
| 77 | @@ -302,7 +302,7 @@ void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config | ||
| 78 | |||
| 79 | set_fs(KERNEL_DS); | ||
| 80 | pagefault_disable(); | ||
| 81 | - if (unlikely(!access_ok(VERIFY_READ, src, len))) | ||
| 82 | + if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) | ||
| 83 | goto fill_buffer; | ||
| 84 | |||
| 85 | if (likely(pagecpy == len)) { | ||
| 86 | @@ -372,7 +372,7 @@ void lib_ring_buffer_strcpy_from_user_inatomic(const struct lib_ring_buffer_conf | ||
| 87 | |||
| 88 | set_fs(KERNEL_DS); | ||
| 89 | pagefault_disable(); | ||
| 90 | - if (unlikely(!access_ok(VERIFY_READ, src, len))) | ||
| 91 | + if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) | ||
| 92 | goto fill_buffer; | ||
| 93 | |||
| 94 | if (likely(pagecpy == len)) { | ||
| 95 | @@ -462,7 +462,7 @@ unsigned long lib_ring_buffer_copy_from_user_check_nofault(void *dest, | ||
| 96 | unsigned long ret; | ||
| 97 | mm_segment_t old_fs; | ||
| 98 | |||
| 99 | - if (!access_ok(VERIFY_READ, src, len)) | ||
| 100 | + if (!lttng_access_ok(VERIFY_READ, src, len)) | ||
| 101 | return 1; | ||
| 102 | old_fs = get_fs(); | ||
| 103 | set_fs(KERNEL_DS); | ||
| 104 | diff --git a/lib/ringbuffer/ring_buffer_iterator.c b/lib/ringbuffer/ring_buffer_iterator.c | ||
| 105 | index 61eaa5b..9645946 100644 | ||
| 106 | --- a/lib/ringbuffer/ring_buffer_iterator.c | ||
| 107 | +++ b/lib/ringbuffer/ring_buffer_iterator.c | ||
| 108 | @@ -27,6 +27,7 @@ | ||
| 109 | |||
| 110 | #include <wrapper/ringbuffer/iterator.h> | ||
| 111 | #include <wrapper/file.h> | ||
| 112 | +#include <wrapper/uaccess.h> | ||
| 113 | #include <linux/jiffies.h> | ||
| 114 | #include <linux/delay.h> | ||
| 115 | #include <linux/module.h> | ||
| 116 | @@ -621,7 +622,7 @@ ssize_t channel_ring_buffer_file_read(struct file *filp, | ||
| 117 | ssize_t len; | ||
| 118 | |||
| 119 | might_sleep(); | ||
| 120 | - if (!access_ok(VERIFY_WRITE, user_buf, count)) | ||
| 121 | + if (!lttng_access_ok(VERIFY_WRITE, user_buf, count)) | ||
| 122 | return -EFAULT; | ||
| 123 | |||
| 124 | /* Finish copy of previous record */ | ||
| 125 | diff --git a/lttng-filter-interpreter.c b/lttng-filter-interpreter.c | ||
| 126 | index e131462..bee2918 100644 | ||
| 127 | --- a/lttng-filter-interpreter.c | ||
| 128 | +++ b/lttng-filter-interpreter.c | ||
| 129 | @@ -24,7 +24,7 @@ | ||
| 130 | * SOFTWARE. | ||
| 131 | */ | ||
| 132 | |||
| 133 | -#include <linux/uaccess.h> | ||
| 134 | +#include <wrapper/uaccess.h> | ||
| 135 | #include <wrapper/frame.h> | ||
| 136 | #include <wrapper/types.h> | ||
| 137 | |||
| 138 | @@ -46,7 +46,7 @@ char get_char(struct estack_entry *reg, size_t offset) | ||
| 139 | char c; | ||
| 140 | |||
| 141 | /* Handle invalid access as end of string. */ | ||
| 142 | - if (unlikely(!access_ok(VERIFY_READ, | ||
| 143 | + if (unlikely(!lttng_access_ok(VERIFY_READ, | ||
| 144 | reg->u.s.user_str + offset, | ||
| 145 | sizeof(c)))) | ||
| 146 | return '\0'; | ||
| 147 | diff --git a/probes/lttng-probe-user.c b/probes/lttng-probe-user.c | ||
| 148 | index 099a66b..ed566dd 100644 | ||
| 149 | --- a/probes/lttng-probe-user.c | ||
| 150 | +++ b/probes/lttng-probe-user.c | ||
| 151 | @@ -20,6 +20,7 @@ | ||
| 152 | |||
| 153 | #include <linux/uaccess.h> | ||
| 154 | #include <linux/module.h> | ||
| 155 | +#include <wrapper/uaccess.h> | ||
| 156 | #include <probes/lttng-probe-user.h> | ||
| 157 | |||
| 158 | /* | ||
| 159 | @@ -43,7 +44,7 @@ long lttng_strlen_user_inatomic(const char *addr) | ||
| 160 | char v; | ||
| 161 | unsigned long ret; | ||
| 162 | |||
| 163 | - if (unlikely(!access_ok(VERIFY_READ, | ||
| 164 | + if (unlikely(!lttng_access_ok(VERIFY_READ, | ||
| 165 | (__force const char __user *) addr, | ||
| 166 | sizeof(v)))) | ||
| 167 | break; | ||
| 168 | diff --git a/wrapper/uaccess.h b/wrapper/uaccess.h | ||
| 169 | new file mode 100644 | ||
| 170 | index 0000000..c56427c | ||
| 171 | --- /dev/null | ||
| 172 | +++ b/wrapper/uaccess.h | ||
| 173 | @@ -0,0 +1,28 @@ | ||
| 174 | +/* SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) | ||
| 175 | + * | ||
| 176 | + * wrapper/uaccess.h | ||
| 177 | + * | ||
| 178 | + * wrapper around linux/uaccess.h. | ||
| 179 | + * | ||
| 180 | + * Copyright (C) 2019 Michael Jeanson <mjeanson@efficios.com> | ||
| 181 | + */ | ||
| 182 | + | ||
| 183 | +#ifndef _LTTNG_WRAPPER_UACCESS_H | ||
| 184 | +#define _LTTNG_WRAPPER_UACCESS_H | ||
| 185 | + | ||
| 186 | +#include <linux/uaccess.h> | ||
| 187 | +#include <lttng-kernel-version.h> | ||
| 188 | + | ||
| 189 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) | ||
| 190 | + | ||
| 191 | +#define VERIFY_READ 0 | ||
| 192 | +#define VERIFY_WRITE 1 | ||
| 193 | +#define lttng_access_ok(type, addr, size) access_ok(addr, size) | ||
| 194 | + | ||
| 195 | +#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ | ||
| 196 | + | ||
| 197 | +#define lttng_access_ok(type, addr, size) access_ok(type, addr, size) | ||
| 198 | + | ||
| 199 | +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ | ||
| 200 | + | ||
| 201 | +#endif /* _LTTNG_WRAPPER_UACCESS_H */ | ||
| 202 | -- | ||
| 203 | 2.19.1 | ||
| 204 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch b/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch new file mode 100644 index 0000000000..089486f51b --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch | |||
| @@ -0,0 +1,186 @@ | |||
| 1 | From 89f0be35e1baf411df6852014013ac64ad1bbcf8 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Wed, 9 Jan 2019 14:59:16 -0500 | ||
| 4 | Subject: [PATCH 6/9] Fix: Replace pointer values with task->tk_pid and | ||
| 5 | rpc_clnt->cl_clid | ||
| 6 | |||
| 7 | Introduced in v3.12. | ||
| 8 | |||
| 9 | See upstream commit : | ||
| 10 | |||
| 11 | commit 92cb6c5be8134db6f7c38f25f6afd13e444cebaf | ||
| 12 | Author: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
| 13 | Date: Wed Sep 4 22:09:50 2013 -0400 | ||
| 14 | |||
| 15 | SUNRPC: Replace pointer values with task->tk_pid and rpc_clnt->cl_clid | ||
| 16 | |||
| 17 | Instead of the pointer values, use the task and client identifier values | ||
| 18 | for tracing purposes. | ||
| 19 | |||
| 20 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 21 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 22 | |||
| 23 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/89f0be35e1baf411df6852014013ac64ad1bbcf8 | ||
| 24 | |||
| 25 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 26 | --- | ||
| 27 | instrumentation/events/lttng-module/rpc.h | 108 ++++++++++++++++++++-- | ||
| 28 | 1 file changed, 102 insertions(+), 6 deletions(-) | ||
| 29 | |||
| 30 | diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h | ||
| 31 | index b9e45fe..a4ac557 100644 | ||
| 32 | --- a/instrumentation/events/lttng-module/rpc.h | ||
| 33 | +++ b/instrumentation/events/lttng-module/rpc.h | ||
| 34 | @@ -8,6 +8,20 @@ | ||
| 35 | #include <linux/sunrpc/sched.h> | ||
| 36 | #include <linux/sunrpc/clnt.h> | ||
| 37 | |||
| 38 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 39 | +LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 40 | + | ||
| 41 | + TP_PROTO(struct rpc_task *task), | ||
| 42 | + | ||
| 43 | + TP_ARGS(task), | ||
| 44 | + | ||
| 45 | + TP_FIELDS( | ||
| 46 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 47 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 48 | + ctf_integer(int, status, task->tk_status) | ||
| 49 | + ) | ||
| 50 | +) | ||
| 51 | +#else | ||
| 52 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 53 | |||
| 54 | TP_PROTO(struct rpc_task *task), | ||
| 55 | @@ -20,6 +34,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 56 | ctf_integer(int, status, task->tk_status) | ||
| 57 | ) | ||
| 58 | ) | ||
| 59 | +#endif | ||
| 60 | |||
| 61 | LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, | ||
| 62 | TP_PROTO(struct rpc_task *task), | ||
| 63 | @@ -40,8 +55,8 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 64 | TP_ARGS(task), | ||
| 65 | |||
| 66 | TP_FIELDS( | ||
| 67 | - ctf_integer_hex(const struct rpc_task *, task, task) | ||
| 68 | - ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) | ||
| 69 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 70 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 71 | ctf_integer(int, status, task->tk_status) | ||
| 72 | ) | ||
| 73 | ) | ||
| 74 | @@ -53,8 +68,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, | ||
| 75 | TP_ARGS(task, action), | ||
| 76 | |||
| 77 | TP_FIELDS( | ||
| 78 | - ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) | ||
| 79 | - ctf_integer_hex(const struct rpc_task *, task, task) | ||
| 80 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 81 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 82 | ctf_integer_hex(const void *, action, action) | ||
| 83 | ctf_integer(unsigned long, runstate, task->tk_runstate) | ||
| 84 | ctf_integer(int, status, task->tk_status) | ||
| 85 | @@ -90,8 +105,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued, | ||
| 86 | TP_ARGS(task, q), | ||
| 87 | |||
| 88 | TP_FIELDS( | ||
| 89 | - ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) | ||
| 90 | - ctf_integer_hex(const struct rpc_task *, task, task) | ||
| 91 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 92 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 93 | ctf_integer(unsigned long, timeout, task->tk_timeout) | ||
| 94 | ctf_integer(unsigned long, runstate, task->tk_runstate) | ||
| 95 | ctf_integer(int, status, task->tk_status) | ||
| 96 | @@ -114,6 +129,87 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, | ||
| 97 | TP_ARGS(task, q) | ||
| 98 | ) | ||
| 99 | |||
| 100 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 101 | +LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 102 | + TP_PROTO(struct rpc_task *task, int status), | ||
| 103 | + | ||
| 104 | + TP_ARGS(task, status), | ||
| 105 | + | ||
| 106 | + TP_FIELDS( | ||
| 107 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 108 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 109 | + ctf_integer(int, status, status) | ||
| 110 | + ) | ||
| 111 | +) | ||
| 112 | + | ||
| 113 | +LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, | ||
| 114 | + | ||
| 115 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 116 | + | ||
| 117 | + TP_ARGS(clnt, task, action), | ||
| 118 | + | ||
| 119 | + TP_FIELDS( | ||
| 120 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 121 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 122 | + ctf_integer_hex(const void *, action, action) | ||
| 123 | + ctf_integer(unsigned long, runstate, task->tk_runstate) | ||
| 124 | + ctf_integer(int, status, task->tk_status) | ||
| 125 | + ctf_integer(unsigned short, flags, task->tk_flags) | ||
| 126 | + ) | ||
| 127 | +) | ||
| 128 | + | ||
| 129 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_begin, | ||
| 130 | + | ||
| 131 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 132 | + | ||
| 133 | + TP_ARGS(clnt, task, action) | ||
| 134 | +) | ||
| 135 | + | ||
| 136 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_run_action, | ||
| 137 | + | ||
| 138 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 139 | + | ||
| 140 | + TP_ARGS(clnt, task, action) | ||
| 141 | +) | ||
| 142 | + | ||
| 143 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_complete, | ||
| 144 | + | ||
| 145 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 146 | + | ||
| 147 | + TP_ARGS(clnt, task, action) | ||
| 148 | +) | ||
| 149 | + | ||
| 150 | +LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued, | ||
| 151 | + | ||
| 152 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), | ||
| 153 | + | ||
| 154 | + TP_ARGS(clnt, task, q), | ||
| 155 | + | ||
| 156 | + TP_FIELDS( | ||
| 157 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 158 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 159 | + ctf_integer(unsigned long, timeout, task->tk_timeout) | ||
| 160 | + ctf_integer(unsigned long, runstate, task->tk_runstate) | ||
| 161 | + ctf_integer(int, status, task->tk_status) | ||
| 162 | + ctf_integer(unsigned short, flags, task->tk_flags) | ||
| 163 | + ctf_string(q_name, rpc_qname(q)) | ||
| 164 | + ) | ||
| 165 | +) | ||
| 166 | + | ||
| 167 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_sleep, | ||
| 168 | + | ||
| 169 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), | ||
| 170 | + | ||
| 171 | + TP_ARGS(clnt, task, q) | ||
| 172 | +) | ||
| 173 | + | ||
| 174 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, | ||
| 175 | + | ||
| 176 | + TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), | ||
| 177 | + | ||
| 178 | + TP_ARGS(clnt, task, q) | ||
| 179 | +) | ||
| 180 | + | ||
| 181 | #else | ||
| 182 | LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 183 | TP_PROTO(struct rpc_task *task, int status), | ||
| 184 | -- | ||
| 185 | 2.19.1 | ||
| 186 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch b/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch new file mode 100644 index 0000000000..f3673301de --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch | |||
| @@ -0,0 +1,183 @@ | |||
| 1 | From d11b568681f87c2df6ecb0516d3f16d153f24bd2 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Wed, 9 Jan 2019 14:59:17 -0500 | ||
| 4 | Subject: [PATCH 7/9] Fix: SUNRPC: Simplify defining common RPC trace events | ||
| 5 | (v5.0) | ||
| 6 | |||
| 7 | See upstream commit : | ||
| 8 | |||
| 9 | commit dc5820bd21d84ee34770b0a1e2fca9378f8f7456 | ||
| 10 | Author: Chuck Lever <chuck.lever@oracle.com> | ||
| 11 | Date: Wed Dec 19 11:00:16 2018 -0500 | ||
| 12 | |||
| 13 | SUNRPC: Simplify defining common RPC trace events | ||
| 14 | |||
| 15 | Clean up, no functional change is expected. | ||
| 16 | |||
| 17 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 18 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 19 | |||
| 20 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/d11b568681f87c2df6ecb0516d3f16d153f24bd2 | ||
| 21 | |||
| 22 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 23 | --- | ||
| 24 | instrumentation/events/lttng-module/rpc.h | 99 ++++++++++++++++------- | ||
| 25 | 1 file changed, 72 insertions(+), 27 deletions(-) | ||
| 26 | |||
| 27 | diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h | ||
| 28 | index a4ac557..4239280 100644 | ||
| 29 | --- a/instrumentation/events/lttng-module/rpc.h | ||
| 30 | +++ b/instrumentation/events/lttng-module/rpc.h | ||
| 31 | @@ -8,7 +8,32 @@ | ||
| 32 | #include <linux/sunrpc/sched.h> | ||
| 33 | #include <linux/sunrpc/clnt.h> | ||
| 34 | |||
| 35 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 36 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) | ||
| 37 | +LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 38 | + | ||
| 39 | + TP_PROTO(const struct rpc_task *task), | ||
| 40 | + | ||
| 41 | + TP_ARGS(task), | ||
| 42 | + | ||
| 43 | + TP_FIELDS( | ||
| 44 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 45 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 46 | + ctf_integer(int, status, task->tk_status) | ||
| 47 | + ) | ||
| 48 | +) | ||
| 49 | + | ||
| 50 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, | ||
| 51 | + TP_PROTO(const struct rpc_task *task), | ||
| 52 | + | ||
| 53 | + TP_ARGS(task) | ||
| 54 | +) | ||
| 55 | + | ||
| 56 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, | ||
| 57 | + TP_PROTO(const struct rpc_task *task), | ||
| 58 | + | ||
| 59 | + TP_ARGS(task) | ||
| 60 | +) | ||
| 61 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 62 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 63 | |||
| 64 | TP_PROTO(struct rpc_task *task), | ||
| 65 | @@ -21,6 +46,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 66 | ctf_integer(int, status, task->tk_status) | ||
| 67 | ) | ||
| 68 | ) | ||
| 69 | + | ||
| 70 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, | ||
| 71 | + TP_PROTO(struct rpc_task *task), | ||
| 72 | + | ||
| 73 | + TP_ARGS(task) | ||
| 74 | +) | ||
| 75 | + | ||
| 76 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, | ||
| 77 | + TP_PROTO(struct rpc_task *task), | ||
| 78 | + | ||
| 79 | + TP_ARGS(task) | ||
| 80 | +) | ||
| 81 | #else | ||
| 82 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 83 | |||
| 84 | @@ -34,7 +71,6 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, | ||
| 85 | ctf_integer(int, status, task->tk_status) | ||
| 86 | ) | ||
| 87 | ) | ||
| 88 | -#endif | ||
| 89 | |||
| 90 | LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, | ||
| 91 | TP_PROTO(struct rpc_task *task), | ||
| 92 | @@ -47,8 +83,15 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, | ||
| 93 | |||
| 94 | TP_ARGS(task) | ||
| 95 | ) | ||
| 96 | +#endif | ||
| 97 | |||
| 98 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) | ||
| 99 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) | ||
| 100 | +LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_connect_status, | ||
| 101 | + TP_PROTO(const struct rpc_task *task), | ||
| 102 | + | ||
| 103 | + TP_ARGS(task) | ||
| 104 | +) | ||
| 105 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) | ||
| 106 | LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 107 | TP_PROTO(const struct rpc_task *task), | ||
| 108 | |||
| 109 | @@ -60,7 +103,33 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 110 | ctf_integer(int, status, task->tk_status) | ||
| 111 | ) | ||
| 112 | ) | ||
| 113 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 114 | +LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 115 | + TP_PROTO(struct rpc_task *task, int status), | ||
| 116 | + | ||
| 117 | + TP_ARGS(task, status), | ||
| 118 | + | ||
| 119 | + TP_FIELDS( | ||
| 120 | + ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 121 | + ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 122 | + ctf_integer(int, status, status) | ||
| 123 | + ) | ||
| 124 | +) | ||
| 125 | +#else | ||
| 126 | +LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 127 | + TP_PROTO(struct rpc_task *task, int status), | ||
| 128 | + | ||
| 129 | + TP_ARGS(task, status), | ||
| 130 | + | ||
| 131 | + TP_FIELDS( | ||
| 132 | + ctf_integer_hex(const struct rpc_task *, task, task) | ||
| 133 | + ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) | ||
| 134 | + ctf_integer(int, status, status) | ||
| 135 | + ) | ||
| 136 | +) | ||
| 137 | +#endif | ||
| 138 | |||
| 139 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) | ||
| 140 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, | ||
| 141 | |||
| 142 | TP_PROTO(const struct rpc_task *task, const void *action), | ||
| 143 | @@ -130,18 +199,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, | ||
| 144 | ) | ||
| 145 | |||
| 146 | #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) | ||
| 147 | -LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 148 | - TP_PROTO(struct rpc_task *task, int status), | ||
| 149 | - | ||
| 150 | - TP_ARGS(task, status), | ||
| 151 | - | ||
| 152 | - TP_FIELDS( | ||
| 153 | - ctf_integer(unsigned int, task_id, task->tk_pid) | ||
| 154 | - ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) | ||
| 155 | - ctf_integer(int, status, status) | ||
| 156 | - ) | ||
| 157 | -) | ||
| 158 | - | ||
| 159 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, | ||
| 160 | |||
| 161 | TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 162 | @@ -211,18 +268,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, | ||
| 163 | ) | ||
| 164 | |||
| 165 | #else | ||
| 166 | -LTTNG_TRACEPOINT_EVENT(rpc_connect_status, | ||
| 167 | - TP_PROTO(struct rpc_task *task, int status), | ||
| 168 | - | ||
| 169 | - TP_ARGS(task, status), | ||
| 170 | - | ||
| 171 | - TP_FIELDS( | ||
| 172 | - ctf_integer_hex(const struct rpc_task *, task, task) | ||
| 173 | - ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) | ||
| 174 | - ctf_integer(int, status, status) | ||
| 175 | - ) | ||
| 176 | -) | ||
| 177 | - | ||
| 178 | LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, | ||
| 179 | |||
| 180 | TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), | ||
| 181 | -- | ||
| 182 | 2.19.1 | ||
| 183 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch b/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch new file mode 100644 index 0000000000..5f12989956 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch | |||
| @@ -0,0 +1,341 @@ | |||
| 1 | From 8af8245f6f86370d01cc4acaabafb90de45e143f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Thu, 10 Jan 2019 14:56:15 -0500 | ||
| 4 | Subject: [PATCH 8/9] Fix: btrfs: Remove fsid/metadata_fsid fields from | ||
| 5 | btrfs_info | ||
| 6 | |||
| 7 | Introduced in v5.0. | ||
| 8 | |||
| 9 | See upstream commit : | ||
| 10 | |||
| 11 | commit de37aa513105f864d3c21105bf5542d498f21ca2 | ||
| 12 | Author: Nikolay Borisov <nborisov@suse.com> | ||
| 13 | Date: Tue Oct 30 16:43:24 2018 +0200 | ||
| 14 | |||
| 15 | btrfs: Remove fsid/metadata_fsid fields from btrfs_info | ||
| 16 | |||
| 17 | Currently btrfs_fs_info structure contains a copy of the | ||
| 18 | fsid/metadata_uuid fields. Same values are also contained in the | ||
| 19 | btrfs_fs_devices structure which fs_info has a reference to. Let's | ||
| 20 | reduce duplication by removing the fields from fs_info and always refer | ||
| 21 | to the ones in fs_devices. No functional changes. | ||
| 22 | |||
| 23 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 24 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 25 | |||
| 26 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/8af8245f6f86370d01cc4acaabafb90de45e143f | ||
| 27 | |||
| 28 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 29 | --- | ||
| 30 | instrumentation/events/lttng-module/btrfs.h | 100 +++++++++++--------- | ||
| 31 | 1 file changed, 53 insertions(+), 47 deletions(-) | ||
| 32 | |||
| 33 | diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h | ||
| 34 | index 4dfbf5b..ec45a1e 100644 | ||
| 35 | --- a/instrumentation/events/lttng-module/btrfs.h | ||
| 36 | +++ b/instrumentation/events/lttng-module/btrfs.h | ||
| 37 | @@ -32,6 +32,12 @@ struct extent_state; | ||
| 38 | |||
| 39 | #define BTRFS_UUID_SIZE 16 | ||
| 40 | |||
| 41 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) | ||
| 42 | +#define lttng_fs_info_fsid fs_info->fs_devices->fsid | ||
| 43 | +#else | ||
| 44 | +#define lttng_fs_info_fsid fs_info->fsid | ||
| 45 | +#endif | ||
| 46 | + | ||
| 47 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) || \ | ||
| 48 | LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ | ||
| 49 | LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ | ||
| 50 | @@ -629,7 +635,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, | ||
| 51 | TP_ARGS(fs_info, block_group, create), | ||
| 52 | |||
| 53 | TP_FIELDS( | ||
| 54 | - ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) | ||
| 55 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 56 | ctf_integer(u64, offset, block_group->key.objectid) | ||
| 57 | ctf_integer(u64, size, block_group->key.offset) | ||
| 58 | ctf_integer(u64, flags, block_group->flags) | ||
| 59 | @@ -647,7 +653,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, | ||
| 60 | TP_ARGS(fs_info, block_group, create), | ||
| 61 | |||
| 62 | TP_FIELDS( | ||
| 63 | - ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) | ||
| 64 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 65 | ctf_integer(u64, offset, block_group->key.objectid) | ||
| 66 | ctf_integer(u64, size, block_group->key.offset) | ||
| 67 | ctf_integer(u64, flags, block_group->flags) | ||
| 68 | @@ -1015,18 +1021,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, | ||
| 69 | |||
| 70 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, | ||
| 71 | |||
| 72 | - TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, | ||
| 73 | + TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, | ||
| 74 | u64 offset, u64 size), | ||
| 75 | |||
| 76 | - TP_ARGS(info, map, offset, size) | ||
| 77 | + TP_ARGS(fs_info, map, offset, size) | ||
| 78 | ) | ||
| 79 | |||
| 80 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, | ||
| 81 | |||
| 82 | - TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, | ||
| 83 | + TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, | ||
| 84 | u64 offset, u64 size), | ||
| 85 | |||
| 86 | - TP_ARGS(info, map, offset, size) | ||
| 87 | + TP_ARGS(fs_info, map, offset, size) | ||
| 88 | ) | ||
| 89 | |||
| 90 | #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) | ||
| 91 | @@ -1050,18 +1056,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, | ||
| 92 | |||
| 93 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, | ||
| 94 | |||
| 95 | - TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, | ||
| 96 | + TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, | ||
| 97 | u64 offset, u64 size), | ||
| 98 | |||
| 99 | - TP_ARGS(info, map, offset, size) | ||
| 100 | + TP_ARGS(fs_info, map, offset, size) | ||
| 101 | ) | ||
| 102 | |||
| 103 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, | ||
| 104 | |||
| 105 | - TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, | ||
| 106 | + TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, | ||
| 107 | u64 offset, u64 size), | ||
| 108 | |||
| 109 | - TP_ARGS(info, map, offset, size) | ||
| 110 | + TP_ARGS(fs_info, map, offset, size) | ||
| 111 | ) | ||
| 112 | |||
| 113 | #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ | ||
| 114 | @@ -1192,7 +1198,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, | ||
| 115 | TP_ARGS(fs_info, type, val, bytes, reserve), | ||
| 116 | |||
| 117 | TP_FIELDS( | ||
| 118 | - ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) | ||
| 119 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 120 | ctf_string(type, type) | ||
| 121 | ctf_integer(u64, val, val) | ||
| 122 | ctf_integer(u64, bytes, bytes) | ||
| 123 | @@ -1208,7 +1214,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, | ||
| 124 | TP_ARGS(fs_info, type, val, bytes, reserve), | ||
| 125 | |||
| 126 | TP_FIELDS( | ||
| 127 | - ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) | ||
| 128 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 129 | ctf_string(type, type) | ||
| 130 | ctf_integer(u64, val, val) | ||
| 131 | ctf_integer(u64, bytes, bytes) | ||
| 132 | @@ -1221,9 +1227,9 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, | ||
| 133 | |||
| 134 | LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, | ||
| 135 | |||
| 136 | - TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 137 | + TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 138 | |||
| 139 | - TP_ARGS(info, start, len), | ||
| 140 | + TP_ARGS(fs_info, start, len), | ||
| 141 | |||
| 142 | TP_FIELDS( | ||
| 143 | ctf_integer(u64, start, start) | ||
| 144 | @@ -1233,25 +1239,25 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, | ||
| 145 | |||
| 146 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, | ||
| 147 | |||
| 148 | - TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 149 | + TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 150 | |||
| 151 | - TP_ARGS(info, start, len) | ||
| 152 | + TP_ARGS(fs_info, start, len) | ||
| 153 | ) | ||
| 154 | |||
| 155 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, | ||
| 156 | |||
| 157 | - TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 158 | + TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 159 | |||
| 160 | - TP_ARGS(info, start, len) | ||
| 161 | + TP_ARGS(fs_info, start, len) | ||
| 162 | ) | ||
| 163 | |||
| 164 | #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) | ||
| 165 | |||
| 166 | LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, | ||
| 167 | |||
| 168 | - TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 169 | + TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 170 | |||
| 171 | - TP_ARGS(info, start, len), | ||
| 172 | + TP_ARGS(fs_info, start, len), | ||
| 173 | |||
| 174 | TP_FIELDS( | ||
| 175 | ctf_integer(u64, start, start) | ||
| 176 | @@ -1261,16 +1267,16 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, | ||
| 177 | |||
| 178 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, | ||
| 179 | |||
| 180 | - TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 181 | + TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 182 | |||
| 183 | - TP_ARGS(info, start, len) | ||
| 184 | + TP_ARGS(fs_info, start, len) | ||
| 185 | ) | ||
| 186 | |||
| 187 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, | ||
| 188 | |||
| 189 | - TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), | ||
| 190 | + TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), | ||
| 191 | |||
| 192 | - TP_ARGS(info, start, len) | ||
| 193 | + TP_ARGS(fs_info, start, len) | ||
| 194 | ) | ||
| 195 | |||
| 196 | #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ | ||
| 197 | @@ -1341,13 +1347,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, | ||
| 198 | |||
| 199 | btrfs_find_free_extent, | ||
| 200 | |||
| 201 | - TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, | ||
| 202 | + TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, | ||
| 203 | u64 data), | ||
| 204 | |||
| 205 | - TP_ARGS(info, num_bytes, empty_size, data), | ||
| 206 | + TP_ARGS(fs_info, num_bytes, empty_size, data), | ||
| 207 | |||
| 208 | TP_FIELDS( | ||
| 209 | - ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) | ||
| 210 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 211 | ctf_integer(u64, num_bytes, num_bytes) | ||
| 212 | ctf_integer(u64, empty_size, empty_size) | ||
| 213 | ctf_integer(u64, data, data) | ||
| 214 | @@ -1362,7 +1368,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, | ||
| 215 | TP_ARGS(block_group, start, len), | ||
| 216 | |||
| 217 | TP_FIELDS( | ||
| 218 | - ctf_array(u8, fsid, block_group->fs_info->fsid, BTRFS_UUID_SIZE) | ||
| 219 | + ctf_array(u8, fsid, block_group->lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 220 | ctf_integer(u64, bg_objectid, block_group->key.objectid) | ||
| 221 | ctf_integer(u64, flags, block_group->flags) | ||
| 222 | ctf_integer(u64, start, start) | ||
| 223 | @@ -1391,13 +1397,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, | ||
| 224 | |||
| 225 | btrfs_find_free_extent, | ||
| 226 | |||
| 227 | - TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, | ||
| 228 | + TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, | ||
| 229 | u64 data), | ||
| 230 | |||
| 231 | - TP_ARGS(info, num_bytes, empty_size, data), | ||
| 232 | + TP_ARGS(fs_info, num_bytes, empty_size, data), | ||
| 233 | |||
| 234 | TP_FIELDS( | ||
| 235 | - ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) | ||
| 236 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 237 | ctf_integer(u64, num_bytes, num_bytes) | ||
| 238 | ctf_integer(u64, empty_size, empty_size) | ||
| 239 | ctf_integer(u64, data, data) | ||
| 240 | @@ -1406,14 +1412,14 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, | ||
| 241 | |||
| 242 | LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, | ||
| 243 | |||
| 244 | - TP_PROTO(const struct btrfs_fs_info *info, | ||
| 245 | + TP_PROTO(const struct btrfs_fs_info *fs_info, | ||
| 246 | const struct btrfs_block_group_cache *block_group, u64 start, | ||
| 247 | u64 len), | ||
| 248 | |||
| 249 | - TP_ARGS(info, block_group, start, len), | ||
| 250 | + TP_ARGS(fs_info, block_group, start, len), | ||
| 251 | |||
| 252 | TP_FIELDS( | ||
| 253 | - ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) | ||
| 254 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 255 | ctf_integer(u64, bg_objectid, block_group->key.objectid) | ||
| 256 | ctf_integer(u64, flags, block_group->flags) | ||
| 257 | ctf_integer(u64, start, start) | ||
| 258 | @@ -1423,20 +1429,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, | ||
| 259 | |||
| 260 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, | ||
| 261 | |||
| 262 | - TP_PROTO(const struct btrfs_fs_info *info, | ||
| 263 | + TP_PROTO(const struct btrfs_fs_info *fs_info, | ||
| 264 | const struct btrfs_block_group_cache *block_group, u64 start, | ||
| 265 | u64 len), | ||
| 266 | |||
| 267 | - TP_ARGS(info, block_group, start, len) | ||
| 268 | + TP_ARGS(fs_info, block_group, start, len) | ||
| 269 | ) | ||
| 270 | |||
| 271 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, | ||
| 272 | |||
| 273 | - TP_PROTO(const struct btrfs_fs_info *info, | ||
| 274 | + TP_PROTO(const struct btrfs_fs_info *fs_info, | ||
| 275 | const struct btrfs_block_group_cache *block_group, u64 start, | ||
| 276 | u64 len), | ||
| 277 | |||
| 278 | - TP_ARGS(info, block_group, start, len) | ||
| 279 | + TP_ARGS(fs_info, block_group, start, len) | ||
| 280 | ) | ||
| 281 | |||
| 282 | #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) | ||
| 283 | @@ -1445,13 +1451,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, | ||
| 284 | |||
| 285 | btrfs_find_free_extent, | ||
| 286 | |||
| 287 | - TP_PROTO(struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, | ||
| 288 | + TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, | ||
| 289 | u64 data), | ||
| 290 | |||
| 291 | - TP_ARGS(info, num_bytes, empty_size, data), | ||
| 292 | + TP_ARGS(fs_info, num_bytes, empty_size, data), | ||
| 293 | |||
| 294 | TP_FIELDS( | ||
| 295 | - ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) | ||
| 296 | + ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) | ||
| 297 | ctf_integer(u64, num_bytes, num_bytes) | ||
| 298 | ctf_integer(u64, empty_size, empty_size) | ||
| 299 | ctf_integer(u64, data, data) | ||
| 300 | @@ -1460,11 +1466,11 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, | ||
| 301 | |||
| 302 | LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, | ||
| 303 | |||
| 304 | - TP_PROTO(struct btrfs_fs_info *info, | ||
| 305 | + TP_PROTO(struct btrfs_fs_info *fs_info, | ||
| 306 | struct btrfs_block_group_cache *block_group, u64 start, | ||
| 307 | u64 len), | ||
| 308 | |||
| 309 | - TP_ARGS(info, block_group, start, len), | ||
| 310 | + TP_ARGS(fs_info, block_group, start, len), | ||
| 311 | |||
| 312 | TP_FIELDS( | ||
| 313 | ctf_integer(u64, bg_objectid, block_group->key.objectid) | ||
| 314 | @@ -1476,20 +1482,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, | ||
| 315 | |||
| 316 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, | ||
| 317 | |||
| 318 | - TP_PROTO(struct btrfs_fs_info *info, | ||
| 319 | + TP_PROTO(struct btrfs_fs_info *fs_info, | ||
| 320 | struct btrfs_block_group_cache *block_group, u64 start, | ||
| 321 | u64 len), | ||
| 322 | |||
| 323 | - TP_ARGS(info, block_group, start, len) | ||
| 324 | + TP_ARGS(fs_info, block_group, start, len) | ||
| 325 | ) | ||
| 326 | |||
| 327 | LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, | ||
| 328 | |||
| 329 | - TP_PROTO(struct btrfs_fs_info *info, | ||
| 330 | + TP_PROTO(struct btrfs_fs_info *fs_info, | ||
| 331 | struct btrfs_block_group_cache *block_group, u64 start, | ||
| 332 | u64 len), | ||
| 333 | |||
| 334 | - TP_ARGS(info, block_group, start, len) | ||
| 335 | + TP_ARGS(fs_info, block_group, start, len) | ||
| 336 | ) | ||
| 337 | #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ | ||
| 338 | LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ | ||
| 339 | -- | ||
| 340 | 2.19.1 | ||
| 341 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch b/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch new file mode 100644 index 0000000000..4ffe488677 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | From 416cee8707053a9015dfec8332e12f8c263098e3 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 3 | Date: Thu, 14 Feb 2019 11:40:50 -0500 | ||
| 4 | Subject: [PATCH 9/9] Cleanup: tp mempool: Remove logically dead code | ||
| 5 | |||
| 6 | Found by Coverity: | ||
| 7 | CID 1391045 (#1 of 1): Logically dead code (DEADCODE) | ||
| 8 | |||
| 9 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 10 | |||
| 11 | Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/416cee8707053a9015dfec8332e12f8c263098e3 | ||
| 12 | |||
| 13 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
| 14 | --- | ||
| 15 | lttng-tp-mempool.c | 11 ++--------- | ||
| 16 | 1 file changed, 2 insertions(+), 9 deletions(-) | ||
| 17 | |||
| 18 | diff --git a/lttng-tp-mempool.c b/lttng-tp-mempool.c | ||
| 19 | index d984bd4..21e8376 100644 | ||
| 20 | --- a/lttng-tp-mempool.c | ||
| 21 | +++ b/lttng-tp-mempool.c | ||
| 22 | @@ -151,19 +151,12 @@ void lttng_tp_mempool_free(void *ptr) | ||
| 23 | struct lttng_tp_buf_entry *entry; | ||
| 24 | struct per_cpu_buf *cpu_buf; | ||
| 25 | |||
| 26 | - if (!ptr) { | ||
| 27 | + if (!ptr) | ||
| 28 | goto end; | ||
| 29 | - } | ||
| 30 | - | ||
| 31 | entry = container_of(ptr, struct lttng_tp_buf_entry, buf); | ||
| 32 | - if (!entry) { | ||
| 33 | - goto end; | ||
| 34 | - } | ||
| 35 | - | ||
| 36 | cpu_buf = per_cpu_ptr(pool, entry->cpu); | ||
| 37 | - if (!cpu_buf) { | ||
| 38 | + if (!cpu_buf) | ||
| 39 | goto end; | ||
| 40 | - } | ||
| 41 | /* Add it to the free list. */ | ||
| 42 | list_add_tail(&entry->list, &cpu_buf->free_list); | ||
| 43 | |||
| 44 | -- | ||
| 45 | 2.19.1 | ||
| 46 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb b/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb index 92e8c319b6..086254d3d3 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb | |||
| @@ -15,6 +15,15 @@ COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm).*-linux' | |||
| 15 | SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ | 15 | SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ |
| 16 | file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ | 16 | file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ |
| 17 | file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ | 17 | file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ |
| 18 | file://0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch \ | ||
| 19 | file://0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch \ | ||
| 20 | file://0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch \ | ||
| 21 | file://0004-Fix-timer-instrumentation-for-RHEL-7.6.patch \ | ||
| 22 | file://0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch \ | ||
| 23 | file://0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch \ | ||
| 24 | file://0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch \ | ||
| 25 | file://0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch \ | ||
| 26 | file://0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch \ | ||
| 18 | " | 27 | " |
| 19 | 28 | ||
| 20 | SRC_URI[md5sum] = "54bd9fca61487bbec1b3fca2f2213c98" | 29 | SRC_URI[md5sum] = "54bd9fca61487bbec1b3fca2f2213c98" |
