From 193236933b0f4ab91b1625b64e2187e2db4e0e8f Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Fri, 5 Apr 2019 15:28:33 -0400 Subject: reset upstream subtrees to HEAD Reset the following subtrees on HEAD: poky: 8217b477a1(master) meta-xilinx: 64aa3d35ae(master) meta-openembedded: 0435c9e193(master) meta-raspberrypi: 490a4441ac(master) meta-security: cb6d1c85ee(master) Squashed patches: meta-phosphor: drop systemd 239 patches meta-phosphor: mrw-api: use correct install path Change-Id: I268e2646d9174ad305630c6bbd3fbc1a6105f43d Signed-off-by: Brad Bishop --- ...trfs-Remove-unnecessary-fs_info-parameter.patch | 116 ---- ...Distinguish-between-kernel_siginfo-and-si.patch | 133 +++++ ...2-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch | 67 +++ ...just-reserved-cluster-count-when-removing.patch | 149 +++++ ...04-Fix-timer-instrumentation-for-RHEL-7.6.patch | 32 ++ ...type-argument-from-access_ok-function-v5..patch | 204 +++++++ ...-pointer-values-with-task-tk_pid-and-rpc_.patch | 186 +++++++ ...Simplify-defining-common-RPC-trace-events.patch | 183 +++++++ ...emove-fsid-metadata_fsid-fields-from-btrf.patch | 341 ++++++++++++ ...nup-tp-mempool-Remove-logically-dead-code.patch | 46 ++ .../recipes-kernel/lttng/lttng-modules_2.10.8.bb | 45 ++ .../recipes-kernel/lttng/lttng-modules_2.10.9.bb | 36 -- ...ow-multiple-attempts-to-connect-to-relayd.patch | 42 -- ...ts-link-libpause_consumer-on-liblttng-ctl.patch | 35 ++ ...ip-test_getcpu_override-on-single-thread-.patch | 52 ++ ...it-the-tree-origin-can-be-a-symlink-itsel.patch | 80 +++ .../0004-Skip-when-testapp-is-not-present.patch | 610 +++++++++++++++++++++ ...odprobe-to-test-for-the-presence-of-lttng.patch | 176 ++++++ ...06-Tests-check-for-lttng-modules-presence.patch | 28 + ...ix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch | 345 ++++++++++++ .../recipes-kernel/lttng/lttng-tools/run-ptest | 2 +- .../recipes-kernel/lttng/lttng-tools/x32.patch | 28 +- .../recipes-kernel/lttng/lttng-tools_2.10.6.bb | 167 ++++++ .../recipes-kernel/lttng/lttng-tools_2.9.11.bb | 134 ----- ...-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch | 109 ++++ poky/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb | 14 +- 26 files changed, 3026 insertions(+), 334 deletions(-) delete mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb delete mode 100644 poky/meta/recipes-kernel/lttng/lttng-modules_2.10.9.bb delete mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch create mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb delete mode 100644 poky/meta/recipes-kernel/lttng/lttng-tools_2.9.11.bb create mode 100644 poky/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch (limited to 'poky/meta/recipes-kernel/lttng') diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch deleted file mode 100644 index 0fe4ee829..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 51ab0b1da29354375a19f865abcd233dd2178295 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson -Date: Mon, 18 Jun 2018 14:53:19 -0400 -Subject: [PATCH] Fix: btrfs: Remove unnecessary fs_info parameter - -See upstream commit: - - commit 3dca5c942dac60164e6a6e89172f25b86af07ce7 - Author: Qu Wenruo - Date: Thu Apr 26 14:24:25 2018 +0800 - - btrfs: trace: Remove unnecessary fs_info parameter for btrfs__reserve_extent event class - - fs_info can be extracted from btrfs_block_group_cache, and all - btrfs_block_group_cache is created by btrfs_create_block_group_cache() - with fs_info initialized, no need to worry about NULL pointer - dereference. - -Signed-off-by: Michael Jeanson -Signed-off-by: Mathieu Desnoyers -Upstream-Status: Backport -Signed-off-by: He Zhe ---- - instrumentation/events/lttng-module/btrfs.h | 54 ++++++++++++++++++++++++++++- - 1 file changed, 53 insertions(+), 1 deletion(-) - -diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h -index 75cc73b..fd1b6b8 100644 ---- a/instrumentation/events/lttng-module/btrfs.h -+++ b/instrumentation/events/lttng-module/btrfs.h -@@ -1658,8 +1658,57 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_f - - #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */ - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0)) -+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, -+ -+ btrfs_find_free_extent, -+ -+ TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, -+ u64 data), -+ -+ TP_ARGS(info, num_bytes, empty_size, data), -+ -+ TP_FIELDS( -+ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) -+ ctf_integer(u64, num_bytes, num_bytes) -+ ctf_integer(u64, empty_size, empty_size) -+ ctf_integer(u64, data, data) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, -+ -+ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, -+ u64 len), -+ -+ TP_ARGS(block_group, start, len), -+ -+ TP_FIELDS( -+ ctf_array(u8, fsid, block_group->fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_integer(u64, bg_objectid, block_group->key.objectid) -+ ctf_integer(u64, flags, block_group->flags) -+ ctf_integer(u64, start, start) -+ ctf_integer(u64, len, len) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, -+ -+ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, -+ u64 len), -+ -+ TP_ARGS(block_group, start, len) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, -+ -+ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, -+ u64 len), -+ -+ TP_ARGS(block_group, start, len) -+) - -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) - LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - btrfs_find_free_extent, -@@ -1670,6 +1719,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - TP_ARGS(info, num_bytes, empty_size, data), - - TP_FIELDS( -+ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, num_bytes, num_bytes) - ctf_integer(u64, empty_size, empty_size) - ctf_integer(u64, data, data) -@@ -1685,6 +1735,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - TP_ARGS(info, block_group, start, len), - - TP_FIELDS( -+ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, bg_objectid, block_group->key.objectid) - ctf_integer(u64, flags, block_group->flags) - ctf_integer(u64, start, start) -@@ -1722,6 +1773,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - TP_ARGS(info, num_bytes, empty_size, data), - - TP_FIELDS( -+ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, num_bytes, num_bytes) - ctf_integer(u64, empty_size, empty_size) - ctf_integer(u64, data, data) --- -2.13.3 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch new file mode 100644 index 000000000..351184dab --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch @@ -0,0 +1,133 @@ +From 0a0d736ec89dffdbc83e7181166a99d5563acfe8 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Mon, 5 Nov 2018 11:35:52 -0500 +Subject: [PATCH 1/9] Fix: signal: Distinguish between kernel_siginfo and + siginfo (v4.20) + +See upstream commit : + + commit ae7795bc6187a15ec51cf258abae656a625f9980 + Author: Eric W. Biederman + Date: Tue Sep 25 11:27:20 2018 +0200 + + signal: Distinguish between kernel_siginfo and siginfo + + Linus recently observed that if we did not worry about the padding + member in struct siginfo it is only about 48 bytes, and 48 bytes is + much nicer than 128 bytes for allocating on the stack and copying + around in the kernel. + + The obvious thing of only adding the padding when userspace is + including siginfo.h won't work as there are sigframe definitions in + the kernel that embed struct siginfo. + + So split siginfo in two; kernel_siginfo and siginfo. Keeping the + traditional name for the userspace definition. While the version that + is used internally to the kernel and ultimately will not be padded to + 128 bytes is called kernel_siginfo. + + The definition of struct kernel_siginfo I have put in include/signal_types.h + + A set of buildtime checks has been added to verify the two structures have + the same field offsets. + + To make it easy to verify the change kernel_siginfo retains the same + size as siginfo. The reduction in size comes in a following change. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0a0d736ec89dffdbc83e7181166a99d5563acfe8 + +Signed-off-by: Bruce Ashfield +--- + instrumentation/events/lttng-module/signal.h | 41 ++++++++++++++++++-- + 1 file changed, 37 insertions(+), 4 deletions(-) + +diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h +index b3c9126..8783b52 100644 +--- a/instrumentation/events/lttng-module/signal.h ++++ b/instrumentation/events/lttng-module/signal.h +@@ -35,21 +35,24 @@ + * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV + * means that si_code is SI_KERNEL. + */ +-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) + LTTNG_TRACEPOINT_EVENT(signal_generate, + +- TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), ++ TP_PROTO(int sig, struct kernel_siginfo *info, struct task_struct *task, ++ int group, int result), + +- TP_ARGS(sig, info, task), ++ TP_ARGS(sig, info, task, group, result), + + TP_FIELDS( + ctf_integer(int, sig, sig) + LTTNG_FIELDS_SIGINFO(info) + ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) + ctf_integer(pid_t, pid, task->pid) ++ ctf_integer(int, group, group) ++ ctf_integer(int, result, result) + ) + ) +-#else ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) + LTTNG_TRACEPOINT_EVENT(signal_generate, + + TP_PROTO(int sig, struct siginfo *info, struct task_struct *task, +@@ -66,6 +69,20 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, + ctf_integer(int, result, result) + ) + ) ++#else ++LTTNG_TRACEPOINT_EVENT(signal_generate, ++ ++ TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), ++ ++ TP_ARGS(sig, info, task), ++ ++ TP_FIELDS( ++ ctf_integer(int, sig, sig) ++ LTTNG_FIELDS_SIGINFO(info) ++ ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) ++ ctf_integer(pid_t, pid, task->pid) ++ ) ++) + #endif + + /** +@@ -82,6 +99,21 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, + * This means, this can show which signals are actually delivered, but + * matching generated signals and delivered signals may not be correct. + */ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) ++LTTNG_TRACEPOINT_EVENT(signal_deliver, ++ ++ TP_PROTO(int sig, struct kernel_siginfo *info, struct k_sigaction *ka), ++ ++ TP_ARGS(sig, info, ka), ++ ++ TP_FIELDS( ++ ctf_integer(int, sig, sig) ++ LTTNG_FIELDS_SIGINFO(info) ++ ctf_integer(unsigned long, sa_handler, (unsigned long) ka->sa.sa_handler) ++ ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) ++ ) ++) ++#else + LTTNG_TRACEPOINT_EVENT(signal_deliver, + + TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka), +@@ -95,6 +127,7 @@ LTTNG_TRACEPOINT_EVENT(signal_deliver, + ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) + ) + ) ++#endif + + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(signal_queue_overflow, +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch new file mode 100644 index 000000000..905b68165 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch @@ -0,0 +1,67 @@ +From 26bc064a4d4c85e6000393aadb38659f99b59162 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Mon, 5 Nov 2018 11:35:53 -0500 +Subject: [PATCH 2/9] Fix: signal: Remove SEND_SIG_FORCED (v4.20) + +See upstream commit : + + commit 4ff4c31a6e85f4c49fbeebeaa28018d002884b5a + Author: Eric W. Biederman + Date: Mon Sep 3 10:39:04 2018 +0200 + + signal: Remove SEND_SIG_FORCED + + There are no more users of SEND_SIG_FORCED so it may be safely removed. + + Remove the definition of SEND_SIG_FORCED, it's use in is_si_special, + it's use in TP_STORE_SIGINFO, and it's use in __send_signal as without + any users the uses of SEND_SIG_FORCED are now unncessary. + + This makes the code simpler, easier to understand and use. Users of + signal sending functions now no longer need to ask themselves do I + need to use SEND_SIG_FORCED. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/26bc064a4d4c85e6000393aadb38659f99b59162 + +Signed-off-by: Bruce Ashfield + +--- + instrumentation/events/lttng-module/signal.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h +index 8783b52..ad8fe69 100644 +--- a/instrumentation/events/lttng-module/signal.h ++++ b/instrumentation/events/lttng-module/signal.h +@@ -12,6 +12,17 @@ + #include + #include + #undef LTTNG_FIELDS_SIGINFO ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) ++#define LTTNG_FIELDS_SIGINFO(info) \ ++ ctf_integer(int, errno, \ ++ (info == SEND_SIG_NOINFO || info == SEND_SIG_PRIV) ? \ ++ 0 : \ ++ info->si_errno) \ ++ ctf_integer(int, code, \ ++ (info == SEND_SIG_NOINFO) ? \ ++ SI_USER : \ ++ ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) ++#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ + #define LTTNG_FIELDS_SIGINFO(info) \ + ctf_integer(int, errno, \ + (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED || info == SEND_SIG_PRIV) ? \ +@@ -21,6 +32,7 @@ + (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED) ? \ + SI_USER : \ + ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ + #endif /* _TRACE_SIGNAL_DEF */ + + /** +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch new file mode 100644 index 000000000..7edffee54 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch @@ -0,0 +1,149 @@ +From cb9f1a821bcf55cecf3813195fd6d4eff8070927 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Mon, 5 Nov 2018 11:35:54 -0500 +Subject: [PATCH 3/9] Fix: ext4: adjust reserved cluster count when removing + extents (v4.20) + +See upstream commit : + + commit 9fe671496b6c286f9033aedfc1718d67721da0ae + Author: Eric Whitney + Date: Mon Oct 1 14:25:08 2018 -0400 + + ext4: adjust reserved cluster count when removing extents + + Modify ext4_ext_remove_space() and the code it calls to correct the + reserved cluster count for pending reservations (delayed allocated + clusters shared with allocated blocks) when a block range is removed + from the extent tree. Pending reservations may be found for the clusters + at the ends of written or unwritten extents when a block range is removed. + If a physical cluster at the end of an extent is freed, it's necessary + to increment the reserved cluster count to maintain correct accounting + if the corresponding logical cluster is shared with at least one + delayed and unwritten extent as found in the extents status tree. + + Add a new function, ext4_rereserve_cluster(), to reapply a reservation + on a delayed allocated cluster sharing blocks with a freed allocated + cluster. To avoid ENOSPC on reservation, a flag is applied to + ext4_free_blocks() to briefly defer updating the freeclusters counter + when an allocated cluster is freed. This prevents another thread + from allocating the freed block before the reservation can be reapplied. + + Redefine the partial cluster object as a struct to carry more state + information and to clarify the code using it. + + Adjust the conditional code structure in ext4_ext_remove_space to + reduce the indentation level in the main body of the code to improve + readability. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/cb9f1a821bcf55cecf3813195fd6d4eff8070927 + +Signed-off-by: Bruce Ashfield + +--- + instrumentation/events/lttng-module/ext4.h | 72 +++++++++++++++++++++- + 1 file changed, 69 insertions(+), 3 deletions(-) + +diff --git a/instrumentation/events/lttng-module/ext4.h b/instrumentation/events/lttng-module/ext4.h +index fe6f802..83a80ba 100644 +--- a/instrumentation/events/lttng-module/ext4.h ++++ b/instrumentation/events/lttng-module/ext4.h +@@ -1602,7 +1602,30 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_show_extent, + ) + ) + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) ++ ++LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, ++ TP_PROTO(struct inode *inode, struct ext4_extent *ex, ++ ext4_lblk_t from, ext4_fsblk_t to, ++ struct partial_cluster *pc), ++ ++ TP_ARGS(inode, ex, from, to, pc), ++ ++ TP_FIELDS( ++ ctf_integer(dev_t, dev, inode->i_sb->s_dev) ++ ctf_integer(ino_t, ino, inode->i_ino) ++ ctf_integer(ext4_lblk_t, from, from) ++ ctf_integer(ext4_lblk_t, to, to) ++ ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) ++ ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) ++ ctf_integer(unsigned short, ee_len, ext4_ext_get_actual_len(ex)) ++ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) ++ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) ++ ctf_integer(int, pc_state, pc->state) ++ ) ++) ++ ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) + + LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, + TP_PROTO(struct inode *inode, struct ext4_extent *ex, +@@ -1646,7 +1669,29 @@ LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, + + #endif + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) ++ ++LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, ++ TP_PROTO(struct inode *inode, ext4_lblk_t start, ++ struct ext4_extent *ex, ++ struct partial_cluster *pc), ++ ++ TP_ARGS(inode, start, ex, pc), ++ ++ TP_FIELDS( ++ ctf_integer(dev_t, dev, inode->i_sb->s_dev) ++ ctf_integer(ino_t, ino, inode->i_ino) ++ ctf_integer(ext4_lblk_t, start, start) ++ ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) ++ ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) ++ ctf_integer(short, ee_len, ext4_ext_get_actual_len(ex)) ++ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) ++ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) ++ ctf_integer(int, pc_state, pc->state) ++ ) ++) ++ ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) + + LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, + TP_PROTO(struct inode *inode, ext4_lblk_t start, +@@ -1733,7 +1778,28 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space, + + #endif + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) ++ ++LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, ++ TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, ++ int depth, struct partial_cluster *pc, __le16 eh_entries), ++ ++ TP_ARGS(inode, start, end, depth, pc, eh_entries), ++ ++ TP_FIELDS( ++ ctf_integer(dev_t, dev, inode->i_sb->s_dev) ++ ctf_integer(ino_t, ino, inode->i_ino) ++ ctf_integer(ext4_lblk_t, start, start) ++ ctf_integer(ext4_lblk_t, end, end) ++ ctf_integer(int, depth, depth) ++ ctf_integer(unsigned short, eh_entries, le16_to_cpu(eh_entries)) ++ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) ++ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) ++ ctf_integer(int, pc_state, pc->state) ++ ) ++) ++ ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) + + LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, + TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch new file mode 100644 index 000000000..b5d50dba1 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch @@ -0,0 +1,32 @@ +From 4eaeb54a27fbf701c2a4908a6e90a978b93deb06 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Thu, 6 Dec 2018 11:31:51 -0500 +Subject: [PATCH 4/9] Fix: timer instrumentation for RHEL 7.6 + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/4eaeb54a27fbf701c2a4908a6e90a978b93deb06 + +Signed-off-by: Bruce Ashfield +--- + instrumentation/events/lttng-module/timer.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h +index 6f0cb7f..8807ad5 100644 +--- a/instrumentation/events/lttng-module/timer.h ++++ b/instrumentation/events/lttng-module/timer.h +@@ -44,7 +44,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init, + TP_ARGS(timer) + ) + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) || \ ++ LTTNG_RHEL_KERNEL_RANGE(3,10,0,957,0,0, 3,11,0,0,0,0)) + /** + * timer_start - called when the timer is started + * @timer: pointer to struct timer_list +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch new file mode 100644 index 000000000..2266bbd9e --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch @@ -0,0 +1,204 @@ +From 0039dbe9891cfdf2c0d04691f83c2f342993dfd7 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Wed, 9 Jan 2019 14:59:15 -0500 +Subject: [PATCH 5/9] Fix: Remove 'type' argument from access_ok() function + (v5.0) + +See upstream commit : + + commit 96d4f267e40f9509e8a66e2b39e8b95655617693 + Author: Linus Torvalds + Date: Thu Jan 3 18:57:57 2019 -0800 + + Remove 'type' argument from access_ok() function + + Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument + of the user address range verification function since we got rid of the + old racy i386-only code to walk page tables by hand. + + It existed because the original 80386 would not honor the write protect + bit when in kernel mode, so you had to do COW by hand before doing any + user access. But we haven't supported that in a long time, and these + days the 'type' argument is a purely historical artifact. + + A discussion about extending 'user_access_begin()' to do the range + checking resulted this patch, because there is no way we're going to + move the old VERIFY_xyz interface to that model. And it's best done at + the end of the merge window when I've done most of my merges, so let's + just get this done once and for all. + + This patch was mostly done with a sed-script, with manual fix-ups for + the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form. + + There were a couple of notable cases: + + - csky still had the old "verify_area()" name as an alias. + + - the iter_iov code had magical hardcoded knowledge of the actual + values of VERIFY_{READ,WRITE} (not that they mattered, since nothing + really used it) + + - microblaze used the type argument for a debug printout + + but other than those oddities this should be a total no-op patch. + + I tried to fix up all architectures, did fairly extensive grepping for + access_ok() uses, and the changes are trivial, but I may have missed + something. Any missed conversion should be trivially fixable, though. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0039dbe9891cfdf2c0d04691f83c2f342993dfd7 + +Signed-off-by: Bruce Ashfield +--- + lib/ringbuffer/backend.h | 8 ++++---- + lib/ringbuffer/ring_buffer_iterator.c | 3 ++- + lttng-filter-interpreter.c | 4 ++-- + probes/lttng-probe-user.c | 3 ++- + wrapper/uaccess.h | 28 +++++++++++++++++++++++++++ + 5 files changed, 38 insertions(+), 8 deletions(-) + create mode 100644 wrapper/uaccess.h + +diff --git a/lib/ringbuffer/backend.h b/lib/ringbuffer/backend.h +index 0b75de8..3f8c108 100644 +--- a/lib/ringbuffer/backend.h ++++ b/lib/ringbuffer/backend.h +@@ -34,7 +34,7 @@ + #include + #include + #include +-#include ++#include + + /* Internal helpers */ + #include +@@ -302,7 +302,7 @@ void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config + + set_fs(KERNEL_DS); + pagefault_disable(); +- if (unlikely(!access_ok(VERIFY_READ, src, len))) ++ if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) + goto fill_buffer; + + if (likely(pagecpy == len)) { +@@ -372,7 +372,7 @@ void lib_ring_buffer_strcpy_from_user_inatomic(const struct lib_ring_buffer_conf + + set_fs(KERNEL_DS); + pagefault_disable(); +- if (unlikely(!access_ok(VERIFY_READ, src, len))) ++ if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) + goto fill_buffer; + + if (likely(pagecpy == len)) { +@@ -462,7 +462,7 @@ unsigned long lib_ring_buffer_copy_from_user_check_nofault(void *dest, + unsigned long ret; + mm_segment_t old_fs; + +- if (!access_ok(VERIFY_READ, src, len)) ++ if (!lttng_access_ok(VERIFY_READ, src, len)) + return 1; + old_fs = get_fs(); + set_fs(KERNEL_DS); +diff --git a/lib/ringbuffer/ring_buffer_iterator.c b/lib/ringbuffer/ring_buffer_iterator.c +index 61eaa5b..9645946 100644 +--- a/lib/ringbuffer/ring_buffer_iterator.c ++++ b/lib/ringbuffer/ring_buffer_iterator.c +@@ -27,6 +27,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -621,7 +622,7 @@ ssize_t channel_ring_buffer_file_read(struct file *filp, + ssize_t len; + + might_sleep(); +- if (!access_ok(VERIFY_WRITE, user_buf, count)) ++ if (!lttng_access_ok(VERIFY_WRITE, user_buf, count)) + return -EFAULT; + + /* Finish copy of previous record */ +diff --git a/lttng-filter-interpreter.c b/lttng-filter-interpreter.c +index e131462..bee2918 100644 +--- a/lttng-filter-interpreter.c ++++ b/lttng-filter-interpreter.c +@@ -24,7 +24,7 @@ + * SOFTWARE. + */ + +-#include ++#include + #include + #include + +@@ -46,7 +46,7 @@ char get_char(struct estack_entry *reg, size_t offset) + char c; + + /* Handle invalid access as end of string. */ +- if (unlikely(!access_ok(VERIFY_READ, ++ if (unlikely(!lttng_access_ok(VERIFY_READ, + reg->u.s.user_str + offset, + sizeof(c)))) + return '\0'; +diff --git a/probes/lttng-probe-user.c b/probes/lttng-probe-user.c +index 099a66b..ed566dd 100644 +--- a/probes/lttng-probe-user.c ++++ b/probes/lttng-probe-user.c +@@ -20,6 +20,7 @@ + + #include + #include ++#include + #include + + /* +@@ -43,7 +44,7 @@ long lttng_strlen_user_inatomic(const char *addr) + char v; + unsigned long ret; + +- if (unlikely(!access_ok(VERIFY_READ, ++ if (unlikely(!lttng_access_ok(VERIFY_READ, + (__force const char __user *) addr, + sizeof(v)))) + break; +diff --git a/wrapper/uaccess.h b/wrapper/uaccess.h +new file mode 100644 +index 0000000..c56427c +--- /dev/null ++++ b/wrapper/uaccess.h +@@ -0,0 +1,28 @@ ++/* SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) ++ * ++ * wrapper/uaccess.h ++ * ++ * wrapper around linux/uaccess.h. ++ * ++ * Copyright (C) 2019 Michael Jeanson ++ */ ++ ++#ifndef _LTTNG_WRAPPER_UACCESS_H ++#define _LTTNG_WRAPPER_UACCESS_H ++ ++#include ++#include ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) ++ ++#define VERIFY_READ 0 ++#define VERIFY_WRITE 1 ++#define lttng_access_ok(type, addr, size) access_ok(addr, size) ++ ++#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ ++ ++#define lttng_access_ok(type, addr, size) access_ok(type, addr, size) ++ ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ ++ ++#endif /* _LTTNG_WRAPPER_UACCESS_H */ +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch new file mode 100644 index 000000000..089486f51 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch @@ -0,0 +1,186 @@ +From 89f0be35e1baf411df6852014013ac64ad1bbcf8 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +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 + 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 +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/89f0be35e1baf411df6852014013ac64ad1bbcf8 + +Signed-off-by: Bruce Ashfield +--- + 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 + #include + ++#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 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch new file mode 100644 index 000000000..f3673301d --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch @@ -0,0 +1,183 @@ +From d11b568681f87c2df6ecb0516d3f16d153f24bd2 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Wed, 9 Jan 2019 14:59:17 -0500 +Subject: [PATCH 7/9] Fix: SUNRPC: Simplify defining common RPC trace events + (v5.0) + +See upstream commit : + + commit dc5820bd21d84ee34770b0a1e2fca9378f8f7456 + Author: Chuck Lever + Date: Wed Dec 19 11:00:16 2018 -0500 + + SUNRPC: Simplify defining common RPC trace events + + Clean up, no functional change is expected. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/d11b568681f87c2df6ecb0516d3f16d153f24bd2 + +Signed-off-by: Bruce Ashfield +--- + instrumentation/events/lttng-module/rpc.h | 99 ++++++++++++++++------- + 1 file changed, 72 insertions(+), 27 deletions(-) + +diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h +index a4ac557..4239280 100644 +--- a/instrumentation/events/lttng-module/rpc.h ++++ b/instrumentation/events/lttng-module/rpc.h +@@ -8,7 +8,32 @@ + #include + #include + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, ++ ++ TP_PROTO(const 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) ++ ) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, ++ TP_PROTO(const struct rpc_task *task), ++ ++ TP_ARGS(task) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, ++ TP_PROTO(const struct rpc_task *task), ++ ++ TP_ARGS(task) ++) ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, + + TP_PROTO(struct rpc_task *task), +@@ -21,6 +46,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, + ctf_integer(int, status, task->tk_status) + ) + ) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, ++ TP_PROTO(struct rpc_task *task), ++ ++ TP_ARGS(task) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, ++ TP_PROTO(struct rpc_task *task), ++ ++ TP_ARGS(task) ++) + #else + LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, + +@@ -34,7 +71,6 @@ 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), +@@ -47,8 +83,15 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, + + TP_ARGS(task) + ) ++#endif + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) ++LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_connect_status, ++ TP_PROTO(const struct rpc_task *task), ++ ++ TP_ARGS(task) ++) ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) + LTTNG_TRACEPOINT_EVENT(rpc_connect_status, + TP_PROTO(const struct rpc_task *task), + +@@ -60,7 +103,33 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status, + ctf_integer(int, status, task->tk_status) + ) + ) ++#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) ++ ) ++) ++#else ++LTTNG_TRACEPOINT_EVENT(rpc_connect_status, ++ TP_PROTO(struct rpc_task *task, int status), ++ ++ TP_ARGS(task, status), ++ ++ TP_FIELDS( ++ ctf_integer_hex(const struct rpc_task *, task, task) ++ ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) ++ ctf_integer(int, status, status) ++ ) ++) ++#endif + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, + + TP_PROTO(const struct rpc_task *task, const void *action), +@@ -130,18 +199,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, + ) + + #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), +@@ -211,18 +268,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, + ) + + #else +-LTTNG_TRACEPOINT_EVENT(rpc_connect_status, +- TP_PROTO(struct rpc_task *task, int status), +- +- TP_ARGS(task, status), +- +- TP_FIELDS( +- ctf_integer_hex(const struct rpc_task *, task, task) +- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) +- 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), +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch new file mode 100644 index 000000000..5f1298995 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch @@ -0,0 +1,341 @@ +From 8af8245f6f86370d01cc4acaabafb90de45e143f Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Thu, 10 Jan 2019 14:56:15 -0500 +Subject: [PATCH 8/9] Fix: btrfs: Remove fsid/metadata_fsid fields from + btrfs_info + +Introduced in v5.0. + +See upstream commit : + + commit de37aa513105f864d3c21105bf5542d498f21ca2 + Author: Nikolay Borisov + Date: Tue Oct 30 16:43:24 2018 +0200 + + btrfs: Remove fsid/metadata_fsid fields from btrfs_info + + Currently btrfs_fs_info structure contains a copy of the + fsid/metadata_uuid fields. Same values are also contained in the + btrfs_fs_devices structure which fs_info has a reference to. Let's + reduce duplication by removing the fields from fs_info and always refer + to the ones in fs_devices. No functional changes. + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/8af8245f6f86370d01cc4acaabafb90de45e143f + +Signed-off-by: Bruce Ashfield +--- + instrumentation/events/lttng-module/btrfs.h | 100 +++++++++++--------- + 1 file changed, 53 insertions(+), 47 deletions(-) + +diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h +index 4dfbf5b..ec45a1e 100644 +--- a/instrumentation/events/lttng-module/btrfs.h ++++ b/instrumentation/events/lttng-module/btrfs.h +@@ -32,6 +32,12 @@ struct extent_state; + + #define BTRFS_UUID_SIZE 16 + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) ++#define lttng_fs_info_fsid fs_info->fs_devices->fsid ++#else ++#define lttng_fs_info_fsid fs_info->fsid ++#endif ++ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ +@@ -629,7 +635,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, + TP_ARGS(fs_info, block_group, create), + + TP_FIELDS( +- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, offset, block_group->key.objectid) + ctf_integer(u64, size, block_group->key.offset) + ctf_integer(u64, flags, block_group->flags) +@@ -647,7 +653,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, + TP_ARGS(fs_info, block_group, create), + + TP_FIELDS( +- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, offset, block_group->key.objectid) + ctf_integer(u64, size, block_group->key.offset) + ctf_integer(u64, flags, block_group->flags) +@@ -1015,18 +1021,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, + +- TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, + u64 offset, u64 size), + +- TP_ARGS(info, map, offset, size) ++ TP_ARGS(fs_info, map, offset, size) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, + +- TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, + u64 offset, u64 size), + +- TP_ARGS(info, map, offset, size) ++ TP_ARGS(fs_info, map, offset, size) + ) + + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) +@@ -1050,18 +1056,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, + +- TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, ++ TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, + u64 offset, u64 size), + +- TP_ARGS(info, map, offset, size) ++ TP_ARGS(fs_info, map, offset, size) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, + +- TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, ++ TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, + u64 offset, u64 size), + +- TP_ARGS(info, map, offset, size) ++ TP_ARGS(fs_info, map, offset, size) + ) + + #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ +@@ -1192,7 +1198,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, + TP_ARGS(fs_info, type, val, bytes, reserve), + + TP_FIELDS( +- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_string(type, type) + ctf_integer(u64, val, val) + ctf_integer(u64, bytes, bytes) +@@ -1208,7 +1214,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, + TP_ARGS(fs_info, type, val, bytes, reserve), + + TP_FIELDS( +- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_string(type, type) + ctf_integer(u64, val, val) + ctf_integer(u64, bytes, bytes) +@@ -1221,9 +1227,9 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, + + LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, + +- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len), ++ TP_ARGS(fs_info, start, len), + + TP_FIELDS( + ctf_integer(u64, start, start) +@@ -1233,25 +1239,25 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, + +- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len) ++ TP_ARGS(fs_info, start, len) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, + +- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len) ++ TP_ARGS(fs_info, start, len) + ) + + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) + + LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, + +- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len), ++ TP_ARGS(fs_info, start, len), + + TP_FIELDS( + ctf_integer(u64, start, start) +@@ -1261,16 +1267,16 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, + +- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len) ++ TP_ARGS(fs_info, start, len) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, + +- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), ++ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), + +- TP_ARGS(info, start, len) ++ TP_ARGS(fs_info, start, len) + ) + + #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ +@@ -1341,13 +1347,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, + + btrfs_find_free_extent, + +- TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, + u64 data), + +- TP_ARGS(info, num_bytes, empty_size, data), ++ TP_ARGS(fs_info, num_bytes, empty_size, data), + + TP_FIELDS( +- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, num_bytes, num_bytes) + ctf_integer(u64, empty_size, empty_size) + ctf_integer(u64, data, data) +@@ -1362,7 +1368,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, + TP_ARGS(block_group, start, len), + + TP_FIELDS( +- ctf_array(u8, fsid, block_group->fs_info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, block_group->lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, bg_objectid, block_group->key.objectid) + ctf_integer(u64, flags, block_group->flags) + ctf_integer(u64, start, start) +@@ -1391,13 +1397,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, + + btrfs_find_free_extent, + +- TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, + u64 data), + +- TP_ARGS(info, num_bytes, empty_size, data), ++ TP_ARGS(fs_info, num_bytes, empty_size, data), + + TP_FIELDS( +- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, num_bytes, num_bytes) + ctf_integer(u64, empty_size, empty_size) + ctf_integer(u64, data, data) +@@ -1406,14 +1412,14 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, + + LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, + +- TP_PROTO(const struct btrfs_fs_info *info, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, + const struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len), ++ TP_ARGS(fs_info, block_group, start, len), + + TP_FIELDS( +- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, bg_objectid, block_group->key.objectid) + ctf_integer(u64, flags, block_group->flags) + ctf_integer(u64, start, start) +@@ -1423,20 +1429,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, + +- TP_PROTO(const struct btrfs_fs_info *info, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, + const struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len) ++ TP_ARGS(fs_info, block_group, start, len) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, + +- TP_PROTO(const struct btrfs_fs_info *info, ++ TP_PROTO(const struct btrfs_fs_info *fs_info, + const struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len) ++ TP_ARGS(fs_info, block_group, start, len) + ) + + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) +@@ -1445,13 +1451,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, + + btrfs_find_free_extent, + +- TP_PROTO(struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, ++ TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, + u64 data), + +- TP_ARGS(info, num_bytes, empty_size, data), ++ TP_ARGS(fs_info, num_bytes, empty_size, data), + + TP_FIELDS( +- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) ++ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) + ctf_integer(u64, num_bytes, num_bytes) + ctf_integer(u64, empty_size, empty_size) + ctf_integer(u64, data, data) +@@ -1460,11 +1466,11 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, + + LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, + +- TP_PROTO(struct btrfs_fs_info *info, ++ TP_PROTO(struct btrfs_fs_info *fs_info, + struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len), ++ TP_ARGS(fs_info, block_group, start, len), + + TP_FIELDS( + ctf_integer(u64, bg_objectid, block_group->key.objectid) +@@ -1476,20 +1482,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, + +- TP_PROTO(struct btrfs_fs_info *info, ++ TP_PROTO(struct btrfs_fs_info *fs_info, + struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len) ++ TP_ARGS(fs_info, block_group, start, len) + ) + + LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, + +- TP_PROTO(struct btrfs_fs_info *info, ++ TP_PROTO(struct btrfs_fs_info *fs_info, + struct btrfs_block_group_cache *block_group, u64 start, + u64 len), + +- TP_ARGS(info, block_group, start, len) ++ TP_ARGS(fs_info, block_group, start, len) + ) + #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch new file mode 100644 index 000000000..4ffe48867 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch @@ -0,0 +1,46 @@ +From 416cee8707053a9015dfec8332e12f8c263098e3 Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers +Date: Thu, 14 Feb 2019 11:40:50 -0500 +Subject: [PATCH 9/9] Cleanup: tp mempool: Remove logically dead code + +Found by Coverity: +CID 1391045 (#1 of 1): Logically dead code (DEADCODE) + +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/416cee8707053a9015dfec8332e12f8c263098e3 + +Signed-off-by: Bruce Ashfield +--- + lttng-tp-mempool.c | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/lttng-tp-mempool.c b/lttng-tp-mempool.c +index d984bd4..21e8376 100644 +--- a/lttng-tp-mempool.c ++++ b/lttng-tp-mempool.c +@@ -151,19 +151,12 @@ void lttng_tp_mempool_free(void *ptr) + struct lttng_tp_buf_entry *entry; + struct per_cpu_buf *cpu_buf; + +- if (!ptr) { ++ if (!ptr) + goto end; +- } +- + entry = container_of(ptr, struct lttng_tp_buf_entry, buf); +- if (!entry) { +- goto end; +- } +- + cpu_buf = per_cpu_ptr(pool, entry->cpu); +- if (!cpu_buf) { ++ if (!cpu_buf) + goto end; +- } + /* Add it to the free list. */ + list_add_tail(&entry->list, &cpu_buf->free_list); + +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb new file mode 100644 index 000000000..15e75e51c --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb @@ -0,0 +1,45 @@ +SECTION = "devel" +SUMMARY = "Linux Trace Toolkit KERNEL MODULE" +DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules" +LICENSE = "LGPLv2.1 & GPLv2 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c4613d1f8a9587bd7b366191830364b3 \ + file://gpl-2.0.txt;md5=751419260aa954499f7abaabaa882bbe \ + file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad \ + " + +inherit module + +COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm|riscv).*-linux' + +#https://lttng.org/files/lttng-modules/lttng-modules-2.10.7.tar.bz2 +SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ + file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ + file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ + file://0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch \ + file://0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch \ + file://0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch \ + file://0004-Fix-timer-instrumentation-for-RHEL-7.6.patch \ + file://0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch \ + file://0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch \ + file://0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch \ + file://0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch \ + file://0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch \ + " + +SRC_URI[md5sum] = "54bd9fca61487bbec1b3fca2f2213c98" +SRC_URI[sha256sum] = "fe1d269bca723e8948af871c322c37d3900e647cdc5eb3efbe821e434beee44c" + +export INSTALL_MOD_DIR="kernel/lttng-modules" + +EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'" + +do_install_append() { + # Delete empty directories to avoid QA failures if no modules were built + find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \; +} + +python do_package_prepend() { + if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')): + bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN')) +} + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.9.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.9.bb deleted file mode 100644 index d29737775..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.10.9.bb +++ /dev/null @@ -1,36 +0,0 @@ -SECTION = "devel" -SUMMARY = "Linux Trace Toolkit KERNEL MODULE" -DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules" -LICENSE = "LGPLv2.1 & GPLv2 & MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=c4613d1f8a9587bd7b366191830364b3 \ - file://gpl-2.0.txt;md5=751419260aa954499f7abaabaa882bbe \ - file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad \ - " - -inherit module - -COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm).*-linux' - -#https://lttng.org/files/lttng-modules/lttng-modules-2.10.7.tar.bz2 -SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ - file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ -" - -SRC_URI[md5sum] = "09df0ac2e8f245740a2f32411d10c0d1" -SRC_URI[sha256sum] = "a1855bbd02d0f71ebd180e9872309862036624f012442ab9cc5852eb60340145" - -export INSTALL_MOD_DIR="kernel/lttng-modules" - -EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'" - -do_install_append() { - # Delete empty directories to avoid QA failures if no modules were built - find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \; -} - -python do_package_prepend() { - if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')): - bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN')) -} - diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch deleted file mode 100644 index 0998fc386..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 70eff899104b86bae02862927c76caaef5de5d3c Mon Sep 17 00:00:00 2001 -From: Mikael Beckius -Date: Thu, 7 May 2015 16:14:25 +0200 -Subject: [PATCH] Allow multiple attempts to connect to relayd. - -It is unclear why a session needs to be made -unusable after a failure to connect to relayd -since a check for a relayd connection is -always made before a session can be configured. - -The behaviour was introduced in: -d9078d0c000d04d49c599a72c1a725026b636ec0 - -Signed-off-by: Mikael Beckius -[ The context has moved, adjust the hunk accordingly ] -Signed-off-by: He Zhe -Upstream-Status: Pending ---- - src/bin/lttng-sessiond/cmd.c | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c -index cf30b8e..cc41a48 100644 ---- a/src/bin/lttng-sessiond/cmd.c -+++ b/src/bin/lttng-sessiond/cmd.c -@@ -945,14 +945,6 @@ static int send_consumer_relayd_socket(enum lttng_domain_type domain, - */ - - close_sock: -- if (ret != LTTNG_OK) { -- /* -- * The consumer output for this session should not be used anymore -- * since the relayd connection failed thus making any tracing or/and -- * streaming not usable. -- */ -- consumer->enabled = 0; -- } - (void) relayd_close(rsock); - free(rsock); - --- -2.17.1 diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch new file mode 100644 index 000000000..df18dc842 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch @@ -0,0 +1,35 @@ +From 7244eac44be929fabd6ed1333f96929ef8da564f Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Tue, 19 Mar 2019 17:56:49 +0000 +Subject: [PATCH] fix: tests: link libpause_consumer on liblttng-ctl + +This preload test library uses symbols from liblttng-ctl which are +resolved when preloaded by GLIBC but not by MUSL. + +Upstream-Status: Accepted [f667fbd7f8b9512f9943edb2597c226fcc424ee9] +Backported to 2.11 and 2.10. + +Signed-off-by: Michael Jeanson +--- + tests/regression/tools/notification/Makefile.am | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tests/regression/tools/notification/Makefile.am b/tests/regression/tools/notification/Makefile.am +index 41adc69..a352bb8 100644 +--- a/tests/regression/tools/notification/Makefile.am ++++ b/tests/regression/tools/notification/Makefile.am +@@ -20,7 +20,10 @@ FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \ + -rpath $(abs_builddir) + + libpause_consumer_la_SOURCES = consumer_testpoints.c +-libpause_consumer_la_LIBADD = $(top_builddir)/src/common/libcommon.la $(DL_LIBS) ++libpause_consumer_la_LIBADD = \ ++ $(top_builddir)/src/common/libcommon.la \ ++ $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \ ++ $(DL_LIBS) + libpause_consumer_la_LDFLAGS = $(FORCE_SHARED_LIB_OPTIONS) + noinst_LTLIBRARIES = libpause_consumer.la + +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch new file mode 100644 index 000000000..5bb88d21e --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch @@ -0,0 +1,52 @@ +From e7db27668a9d7fd279d45bc43f3a2d5847374e7b Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Tue, 12 Mar 2019 12:04:58 -0400 +Subject: [PATCH lttng-tools 1/2] Fix: test: skip test_getcpu_override on + single thread system + +There is no value in performing this test on single thread system +since the only valid value for the cpu field is 0. + +This test currently fails on single thread system (i.e yocto runquemu) +on the test_getcpu_override_fail test case. + +Upstream-Status: Accepted [f87d0ca370c17b597762f5ee218f0e821ed2452d] +Backported to 2.11 and 2.10 + +Signed-off-by: Jonathan Rajotte +--- + .../ust/getcpu-override/test_getcpu_override | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override +index 4ca385aeb..ee3e31953 100755 +--- a/tests/regression/ust/getcpu-override/test_getcpu_override ++++ b/tests/regression/ust/getcpu-override/test_getcpu_override +@@ -157,13 +157,19 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then +- foundobj=1 +-else +- foundobj=0 ++if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then ++ skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 ++fi ++ ++if [ "$num_cpus" -eq "1" ]; then ++ # Skip the test since we cannot perform it as designed since N mod 1 ++ # is always equals to zero. There is no point testing this on a system ++ # with a single thread. LTTng-UST limits the get_cpu function to return ++ # value inside the [0, NUM_CPU - 1] range for a valid event (present in ++ # trace). ++ skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0 + fi + +-skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 + + TESTS=( + test_getcpu_override_fail +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch new file mode 100644 index 000000000..822b26a36 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch @@ -0,0 +1,80 @@ +From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Wed, 6 Mar 2019 16:46:49 -0500 +Subject: [PATCH lttng-tools 2/2] Fix: test: unit: the tree origin can be a + symlink itself + +Problem: + +The base tree is defined as "/tmp/.....XXXXXX". +On systems where "/tmp/" is itself a symlink utils_expand_path will +expand the tree origin itself. + +For example on a base core-image-minimal Yocto build /tmp is a symlink +to "/var/tmp", which is a symlink to "/var/volatile". + +utils_expand_path will return something like this for the symlink test: +"/var/volative/.....XXXXXX/...." which is the valid result. + +Solution: + +Simply use realpath on the tree_origin and use this path to perform the +test validation. + +This work was performed in the effort to support yocto fully and be able +to run the test suite to detect problem as early as possible. + + +Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d] +Backported to 2.11 and 2.10 + +Signed-off-by: Jonathan Rajotte +--- + tests/unit/test_utils_expand_path.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c +index d5cab002e..d047c207d 100644 +--- a/tests/unit/test_utils_expand_path.c ++++ b/tests/unit/test_utils_expand_path.c +@@ -281,8 +281,8 @@ error: + static void test_utils_expand_path(void) + { + char *result; +- char name[100], tmppath[PATH_MAX]; +- int i; ++ char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX]; ++ int i, treelen; + + /* Test valid cases */ + for (i = 0; i < num_valid_tests; i++) { +@@ -295,14 +295,24 @@ static void test_utils_expand_path(void) + free(result); + } + ++ /* ++ * Get the realpath for the tree_origin since it can itself be a ++ * symlink. ++ */ ++ result = realpath(tree_origin, real_tree_origin); ++ if (!result) { ++ fail("realpath failed."); ++ return; ++ } ++ + /* Test symlink tree cases */ +- int treelen = strlen(tree_origin) + 1; ++ treelen = strlen(real_tree_origin) + 1; + for (i = 0; i < num_symlink_tests; i++) { + sprintf(name, "symlink tree test case: [tmppath/]%s", + symlink_tests_inputs[i].input); + + snprintf(tmppath, PATH_MAX, "%s/%s", +- tree_origin, symlink_tests_inputs[i].input); ++ real_tree_origin, symlink_tests_inputs[i].input); + result = utils_expand_path(tmppath); + ok(result != NULL && strcmp(result + treelen, + symlink_tests_inputs[i].expected_result) == 0, name); +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch new file mode 100644 index 000000000..6c9f7e462 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch @@ -0,0 +1,610 @@ +From 95c27e6acceaeda55c729b9e92e594322adef13f Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Wed, 3 Apr 2019 16:31:18 -0400 +Subject: [PATCH lttng-tools] Skip when testapp is not present + +We expect lttng-ust do be present, this is a wrong assumptions. + +This is a quick fix. The real fix is to either detect at runtime +lttng-ust support or at build time (HAVE_LIBLTTNG_UST_CTL). + +This prevent hang for make check done on a build configured with +--without-lttng-ust. + +Upstream-Status: Inappropriate [other] +Reason: This patch is inappropriate for upstream for 2.10 stable release +since we do not backport "superficial" fix to the test suite. We do +backport when a test is broken. The fact that on --without-lttng-ust +hang is not a "broken" test per-see. Still, a variation of this fix will +be upstreamed in our master branch and possibly 2.11. The upstreamed +version will split the test in kernel/ust test and skip them at the +build system level. This patch is more succinct. + +Signed-off-by: Jonathan Rajotte +--- + tests/regression/tools/crash/test_crash | 4 ++ + .../regression/tools/exclusion/test_exclusion | 4 ++ + .../tools/filtering/test_valid_filter | 21 ++++-- + tests/regression/tools/health/test_thread_ok | 29 +++++--- + tests/regression/tools/live/Makefile.am | 2 - + tests/regression/tools/live/test_lttng_ust | 4 ++ + tests/regression/tools/live/test_ust | 4 ++ + .../tools/live/test_ust_tracefile_count | 4 ++ + tests/regression/tools/mi/test_mi | 4 ++ + .../notification/test_notification_multi_app | 18 +++-- + .../tools/notification/test_notification_ust | 4 ++ + .../regression/tools/regen-metadata/test_ust | 2 +- + .../regression/tools/regen-statedump/test_ust | 2 +- + .../regression/tools/save-load/test_autoload | 7 ++ + tests/regression/tools/save-load/test_load | 8 +++ + tests/regression/tools/save-load/test_save | 7 ++ + .../regression/tools/snapshots/test_ust_fast | 2 +- + .../regression/tools/snapshots/test_ust_long | 2 +- + .../tools/snapshots/test_ust_streaming | 2 +- + tests/regression/tools/snapshots/ust_test | 2 +- + .../streaming/test_high_throughput_limits | 2 +- + tests/regression/tools/streaming/test_ust | 2 +- + .../tracefile-limits/test_tracefile_count | 2 +- + .../tracefile-limits/test_tracefile_size | 2 +- + .../tools/wildcard/test_event_wildcard | 67 ++++++++++--------- + 25 files changed, 147 insertions(+), 60 deletions(-) + +diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash +index 8c62c513d..3cbe97688 100755 +--- a/tests/regression/tools/crash/test_crash ++++ b/tests/regression/tools/crash/test_crash +@@ -35,6 +35,10 @@ NUM_TESTS=77 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + # Global declaration for simplification + LTTNG_CRASH=$TESTDIR/../src/bin/lttng-crash/$CRASH_BIN + +diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion +index 949cd41df..42e4d72fb 100755 +--- a/tests/regression/tools/exclusion/test_exclusion ++++ b/tests/regression/tools/exclusion/test_exclusion +@@ -30,6 +30,10 @@ NUM_TESTS=149 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + function enable_ust_lttng_all_event_exclusion() + { + sess_name="$1" +diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter +index 163b32182..1e8da630b 100755 +--- a/tests/regression/tools/filtering/test_valid_filter ++++ b/tests/regression/tools/filtering/test_valid_filter +@@ -418,12 +418,18 @@ issue_356_filter+="intfield > 4 && intfield > 5 && " + issue_356_filter+="intfield > 6 && intfield > 7 && " + issue_356_filter+="intfield > 8 || intfield > 0" + ++BIN_NAME="gen-ust-events" ++ ++skip_ust=1 ++if [ ! -x "$CURDIR/$BIN_NAME" ]; then ++ skip_ust=0 ++ skip 0 "No UST nevents binary detected." $NUM_UST_TESTS ++fi ++ + start_lttng_sessiond + + ### UST TESTS + +-BIN_NAME="gen-ust-events" +- + KIRK_KRAUSS_TESTS=( + # the tests below were written by Kirk Krauss in this article: + # http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123 +@@ -897,9 +903,6 @@ UST_STR_FILTERS=( + END + ) + +-if [ ! -x "$CURDIR/$BIN_NAME" ]; then +- BAIL_OUT "No UST nevents binary detected." +-fi + + IFS="$OLDIFS" + +@@ -910,6 +913,10 @@ i=0 + while true; do + validator="${UST_FILTERS[$i]}" + ++ if [ $skip_ust -eq 0 ]; then ++ break ++ fi ++ + if [ "$validator" = END ]; then + break + fi +@@ -929,6 +936,10 @@ i=0 + while true; do + validator="${UST_STR_FILTERS[$i]}" + ++ if [ $skip_ust -eq 0 ]; then ++ break ++ fi ++ + if [ "$validator" = END ]; then + break + fi +diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok +index e81d6ed24..849b7e71f 100755 +--- a/tests/regression/tools/health/test_thread_ok ++++ b/tests/regression/tools/health/test_thread_ok +@@ -27,6 +27,9 @@ CHANNEL_NAME="testchan" + HEALTH_CHECK_BIN="health_check" + NUM_TESTS=17 + SLEEP_TIME=30 ++TESTAPP_PATH="$TESTDIR/utils/testapp" ++TESTAPP_NAME="gen-ust-events" ++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" + + source $TESTDIR/utils/utils.sh + +@@ -76,15 +79,19 @@ function test_thread_ok + $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} + report_errors + +- diag "With UST consumer daemons" +- create_lttng_session_no_output $SESSION_NAME +- enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME +- start_lttng_tracing_ok $SESSION_NAME +- destroy_lttng_session_ok $SESSION_NAME ++ skip $skip_ust "Ust does not seems to be supported" "5" || ++ { ++ diag "With UST consumer daemons" ++ create_lttng_session_no_output $SESSION_NAME ++ enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME ++ start_lttng_tracing_ok $SESSION_NAME ++ destroy_lttng_session_ok $SESSION_NAME + +- # Check health status +- $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} +- report_errors ++ ++ # Check health status ++ $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} ++ report_errors ++ } + + skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || + { +@@ -141,6 +148,12 @@ else + isroot=0 + fi + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ skip_ust=0 ++else ++ skip_ust=1 ++fi ++ + test_thread_ok + + rm -rf ${HEALTH_PATH} +diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am +index 46186d383..db74de8d5 100644 +--- a/tests/regression/tools/live/Makefile.am ++++ b/tests/regression/tools/live/Makefile.am +@@ -16,9 +16,7 @@ LIVE=$(top_builddir)/src/bin/lttng-sessiond/session.$(OBJEXT) \ + noinst_PROGRAMS = live_test + EXTRA_DIST = test_kernel test_lttng_kernel + +-if HAVE_LIBLTTNG_UST_CTL + EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust +-endif + + live_test_SOURCES = live_test.c + live_test_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) \ +diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust +index 06017d01d..be9b3d7f7 100755 +--- a/tests/regression/tools/live/test_lttng_ust ++++ b/tests/regression/tools/live/test_lttng_ust +@@ -38,6 +38,10 @@ NUM_TESTS=12 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust +index 0384a706f..add521bfc 100755 +--- a/tests/regression/tools/live/test_ust ++++ b/tests/regression/tools/live/test_ust +@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + echo "$TEST_DESC" + + function setup_live_tracing() +diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count +index 6da368fc6..10504f8c6 100755 +--- a/tests/regression/tools/live/test_ust_tracefile_count ++++ b/tests/regression/tools/live/test_ust_tracefile_count +@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + echo "$TEST_DESC" + + function setup_live_tracing() +diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi +index 48dda7da6..2cc30b29a 100755 +--- a/tests/regression/tools/mi/test_mi ++++ b/tests/regression/tools/mi/test_mi +@@ -61,6 +61,10 @@ NUM_TESTS=228 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + #Overwrite the lttng_bin to get mi output + LTTNG_BIN="lttng --mi xml" + +diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app +index 0a05ea6a0..29b0f62fa 100755 +--- a/tests/regression/tools/notification/test_notification_multi_app ++++ b/tests/regression/tools/notification/test_notification_multi_app +@@ -52,6 +52,11 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + ++skip_ust=1 ++if [ ! -x "$TESTAPP_BIN" ]; then ++ skip_ust=0 ++fi ++ + app_pids=() + + function kernel_event_generator_toogle_state +@@ -468,10 +473,15 @@ function test_on_register_evaluation () + } + + +-TESTS=( +- test_multi_app_ust +- test_on_register_evaluation_ust +-) ++TESTS=() ++if [ $skip_ust -eq "1" ]; then ++ TESTS+=( ++ test_multi_app_ust ++ test_on_register_evaluation_ust ++ ) ++else ++ skip 0 "No UST events binary detected." $NUM_TEST_UST ++fi + + if [ "$(id -u)" == "0" ]; then + TESTS+=( +diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust +index 8941e476d..eb2e15cad 100755 +--- a/tests/regression/tools/notification/test_notification_ust ++++ b/tests/regression/tools/notification/test_notification_ust +@@ -46,6 +46,10 @@ DIR=$(readlink -f $TESTDIR) + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + function ust_event_generator_toogle_state + { + ust_event_generator_suspended=$((ust_event_generator_suspended==0)) +diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust +index b7f1af1d8..312c8a40d 100755 +--- a/tests/regression/tools/regen-metadata/test_ust ++++ b/tests/regression/tools/regen-metadata/test_ust +@@ -34,7 +34,7 @@ NUM_TESTS=33 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function lttng_create_session_uri +diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust +index 486b9a560..8d455b26a 100755 +--- a/tests/regression/tools/regen-statedump/test_ust ++++ b/tests/regression/tools/regen-statedump/test_ust +@@ -34,7 +34,7 @@ NUM_TESTS=11 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function test_ust_local () +diff --git a/tests/regression/tools/save-load/test_autoload b/tests/regression/tools/save-load/test_autoload +index 7ee5e9906..ec376cfb3 100755 +--- a/tests/regression/tools/save-load/test_autoload ++++ b/tests/regression/tools/save-load/test_autoload +@@ -21,6 +21,9 @@ CURDIR=$(dirname $0)/ + CONFIG_DIR="${CURDIR}/configuration" + TESTDIR=$CURDIR/../../../ + export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) ++TESTAPP_PATH="$TESTDIR/utils/testapp" ++TESTAPP_NAME="gen-ust-events" ++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" + + DIR=$(readlink -f $TESTDIR) + +@@ -28,6 +31,10 @@ NUM_TESTS=9 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load +index 5e38b46b6..b6fdd8192 100755 +--- a/tests/regression/tools/save-load/test_load ++++ b/tests/regression/tools/save-load/test_load +@@ -20,6 +20,10 @@ TEST_DESC="Load session(s)" + CURDIR=$(dirname $0)/ + CONFIG_DIR="${CURDIR}/configuration" + TESTDIR=$CURDIR/../../../ ++TESTAPP_PATH="$TESTDIR/utils/testapp" ++TESTAPP_NAME="gen-ust-events" ++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" ++ + export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) + + SESSION_NAME="load-42" +@@ -31,6 +35,10 @@ NUM_TESTS=67 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "$TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +diff --git a/tests/regression/tools/save-load/test_save b/tests/regression/tools/save-load/test_save +index c5f6b1341..cfaf67b7a 100755 +--- a/tests/regression/tools/save-load/test_save ++++ b/tests/regression/tools/save-load/test_save +@@ -23,6 +23,9 @@ TESTDIR=$CURDIR/../../../ + SESSION_NAME="save-42" + CHANNEL_NAME="chan-save" + EVENT_NAME="tp:tptest" ++TESTAPP_PATH="$TESTDIR/utils/testapp" ++TESTAPP_NAME="gen-ust-events" ++TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" + + DIR=$(readlink -f $TESTDIR) + +@@ -30,6 +33,10 @@ NUM_TESTS=41 + + source $TESTDIR/utils/utils.sh + ++if [ ! -x "TESTAPP_BIN" ]; then ++ plan_skip_all "No UST events binary detected." ++fi ++ + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +diff --git a/tests/regression/tools/snapshots/test_ust_fast b/tests/regression/tools/snapshots/test_ust_fast +index edb435c52..5a68ec56d 100755 +--- a/tests/regression/tools/snapshots/test_ust_fast ++++ b/tests/regression/tools/snapshots/test_ust_fast +@@ -23,7 +23,7 @@ TEST_BIN="ust_test" + source $TESTDIR/utils/utils.sh + + if [ ! -x "$CURDIR/$TEST_BIN" ]; then +- BAIL_OUT "No UST test found: $TEST_BIN" ++ plan_skip_all "No UST test found: $TEST_BIN" + fi + + ./$CURDIR/$TEST_BIN $NR_SNAPSHOT +diff --git a/tests/regression/tools/snapshots/test_ust_long b/tests/regression/tools/snapshots/test_ust_long +index 9e1a0c262..afa019f6a 100755 +--- a/tests/regression/tools/snapshots/test_ust_long ++++ b/tests/regression/tools/snapshots/test_ust_long +@@ -23,7 +23,7 @@ TEST_BIN="ust_test" + source $TESTDIR/utils/utils.sh + + if [ ! -x "$CURDIR/$TEST_BIN" ]; then +- BAIL_OUT "No UST test found: $TEST_BIN" ++ plan_skip_all "No UST test found: $TEST_BIN" + fi + + ./$CURDIR/$TEST_BIN $NR_SNAPSHOT +diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming +index 93b0957f3..69291ab4d 100755 +--- a/tests/regression/tools/snapshots/test_ust_streaming ++++ b/tests/regression/tools/snapshots/test_ust_streaming +@@ -37,7 +37,7 @@ NUM_TESTS=75 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function snapshot_add_output () +diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test +index 755cef9e0..92f9f6cff 100755 +--- a/tests/regression/tools/snapshots/ust_test ++++ b/tests/regression/tools/snapshots/ust_test +@@ -34,7 +34,7 @@ TRACE_PATH=$(mktemp -d) + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + # Need the number of snapshot to do. +diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits +index 32c3f1f2b..f54178923 100755 +--- a/tests/regression/tools/streaming/test_high_throughput_limits ++++ b/tests/regression/tools/streaming/test_high_throughput_limits +@@ -38,7 +38,7 @@ NUM_TESTS=104 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function set_bw_limit +diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust +index a5d5b5e92..e1dd98ee7 100755 +--- a/tests/regression/tools/streaming/test_ust ++++ b/tests/regression/tools/streaming/test_ust +@@ -34,7 +34,7 @@ NUM_TESTS=16 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function lttng_create_session_uri +diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count +index 6ada8580f..7553c7d1f 100755 +--- a/tests/regression/tools/tracefile-limits/test_tracefile_count ++++ b/tests/regression/tools/tracefile-limits/test_tracefile_count +@@ -33,7 +33,7 @@ PAGE_SIZE=$(getconf PAGE_SIZE) + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function enable_lttng_channel_count_limit () +diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size +index 3dddbe613..1089487ff 100755 +--- a/tests/regression/tools/tracefile-limits/test_tracefile_size ++++ b/tests/regression/tools/tracefile-limits/test_tracefile_size +@@ -33,7 +33,7 @@ NUM_TESTS=66 + source $TESTDIR/utils/utils.sh + + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST events binary detected." ++ plan_skip_all "No UST events binary detected." + fi + + function enable_lttng_channel_size_limit () +diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard +index 61ea67a72..921a2301d 100755 +--- a/tests/regression/tools/wildcard/test_event_wildcard ++++ b/tests/regression/tools/wildcard/test_event_wildcard +@@ -97,42 +97,47 @@ print_test_banner "$TEST_DESC" + + start_lttng_sessiond + +-diag "Test UST wildcard" +- + if [ ! -x "$TESTAPP_BIN" ]; then +- BAIL_OUT "No UST nevents binary detected." ++ skip_ust=0 ++else ++ skip_ust=1 + fi + +-EVENT_NAME="tp:tptest" ++skip $skip_ust "No UST nevents binary detected." $NUM_UST_TESTS || ++{ ++ diag "Test UST wildcard" + +-# non-matching +-test_event_wildcard ust 0 'tp:abc*' +-test_event_wildcard ust 0 '*abc' +-test_event_wildcard ust 0 '*z*' +-test_event_wildcard ust 0 '*\**' +-test_event_wildcard ust 0 '*\*' +-test_event_wildcard ust 0 '\**' +-test_event_wildcard ust 0 '*:*tpte*s' +-test_event_wildcard ust 0 'tp**tpTest' ++ EVENT_NAME="tp:tptest" + +-# matching +-test_event_wildcard ust 1 'tp:tp*' +-test_event_wildcard ust 1 '*' +-test_event_wildcard ust 1 'tp:tptest*' +-test_event_wildcard ust 1 '**' +-test_event_wildcard ust 1 '***' +-test_event_wildcard ust 1 '*tptest' +-test_event_wildcard ust 1 '**tptest' +-test_event_wildcard ust 1 '*tpte*' +-test_event_wildcard ust 1 '*tp*' +-test_event_wildcard ust 1 '*tp**' +-test_event_wildcard ust 1 '*:*tptest' +-test_event_wildcard ust 1 '*:*tpte*t' +-test_event_wildcard ust 1 't*p*:*t*e*s*t' +-test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' +-test_event_wildcard ust 1 'tp*tptest' +-test_event_wildcard ust 1 'tp**tptest' +-test_event_wildcard ust 1 'tp*test' ++ # non-matching ++ test_event_wildcard ust 0 'tp:abc*' ++ test_event_wildcard ust 0 '*abc' ++ test_event_wildcard ust 0 '*z*' ++ test_event_wildcard ust 0 '*\**' ++ test_event_wildcard ust 0 '*\*' ++ test_event_wildcard ust 0 '\**' ++ test_event_wildcard ust 0 '*:*tpte*s' ++ test_event_wildcard ust 0 'tp**tpTest' ++ ++ # matching ++ test_event_wildcard ust 1 'tp:tp*' ++ test_event_wildcard ust 1 '*' ++ test_event_wildcard ust 1 'tp:tptest*' ++ test_event_wildcard ust 1 '**' ++ test_event_wildcard ust 1 '***' ++ test_event_wildcard ust 1 '*tptest' ++ test_event_wildcard ust 1 '**tptest' ++ test_event_wildcard ust 1 '*tpte*' ++ test_event_wildcard ust 1 '*tp*' ++ test_event_wildcard ust 1 '*tp**' ++ test_event_wildcard ust 1 '*:*tptest' ++ test_event_wildcard ust 1 '*:*tpte*t' ++ test_event_wildcard ust 1 't*p*:*t*e*s*t' ++ test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' ++ test_event_wildcard ust 1 'tp*tptest' ++ test_event_wildcard ust 1 'tp**tptest' ++ test_event_wildcard ust 1 'tp*test' ++} + + if [ "$(id -u)" == "0" ]; then + isroot=1 +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch new file mode 100644 index 000000000..16df3e610 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch @@ -0,0 +1,176 @@ +From 9bc81a446d0a3ea9a884739eee48d3f14db3283c Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Wed, 28 Mar 2018 15:21:26 -0400 +Subject: [PATCH lttng-tools] Tests: use modprobe to test for the presence of + lttng-modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Backport [28702730192ae1ded06105c54c5dc] + +Signed-off-by: Jonathan Rajotte +Signed-off-by: Jérémie Galarneau +--- + tests/regression/tools/regen-metadata/test_kernel | 8 ++------ + tests/regression/tools/regen-statedump/test_kernel | 7 +------ + tests/regression/tools/snapshots/test_kernel | 9 +++------ + tests/regression/tools/snapshots/test_kernel_streaming | 8 ++------ + tests/regression/tools/streaming/test_kernel | 8 ++------ + tests/utils/utils.sh | 10 ++++++++++ + 6 files changed, 20 insertions(+), 30 deletions(-) + +diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel +index fd139aeef..1849b9cd0 100755 +--- a/tests/regression/tools/regen-metadata/test_kernel ++++ b/tests/regression/tools/regen-metadata/test_kernel +@@ -28,12 +28,6 @@ NUM_TESTS=18 + + source $TESTDIR/utils/utils.sh + +-# LTTng kernel modules check +-out=`ls /lib/modules/$(uname -r)/extra | grep lttng` +-if [ -z "$out" ]; then +- BAIL_OUT "LTTng modules not detected." +-fi +- + function lttng_create_session_uri + { + # Create session with default path +@@ -91,6 +85,8 @@ fi + + skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || + { ++ validate_lttng_modules_present ++ + start_lttng_relayd "-o $TRACE_PATH" + start_lttng_sessiond + modprobe lttng-test +diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel +index 85afe76a1..50054eb07 100755 +--- a/tests/regression/tools/regen-statedump/test_kernel ++++ b/tests/regression/tools/regen-statedump/test_kernel +@@ -29,12 +29,6 @@ NUM_TESTS=11 + + source $TESTDIR/utils/utils.sh + +-# LTTng kernel modules check +-out=`ls /lib/modules/$(uname -r)/extra | grep lttng` +-if [ -z "$out" ]; then +- BAIL_OUT "LTTng modules not detected." +-fi +- + function test_kernel_local () + { + diag "Test kernel local with statedump regeneration" +@@ -64,6 +58,7 @@ fi + + skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || + { ++ validate_lttng_modules_present + start_lttng_sessiond + modprobe lttng-test + +diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel +index 886c4557a..ff563100b 100755 +--- a/tests/regression/tools/snapshots/test_kernel ++++ b/tests/regression/tools/snapshots/test_kernel +@@ -29,12 +29,6 @@ NUM_TESTS=2060 + + source $TESTDIR/utils/utils.sh + +-# LTTng kernel modules check +-out=`ls /lib/modules/$(uname -r)/extra | grep lttng` +-if [ -z "$out" ]; then +- BAIL_OUT "LTTng modules not detected." +-fi +- + function test_kernel_local_snapshot () + { + diag "Test local kernel snapshots" +@@ -241,6 +235,9 @@ fi + + skip $isroot "Root access is needed. Skipping all kernel snapshot tests." $NUM_TESTS || + { ++ ++ validate_lttng_modules_present ++ + start_lttng_sessiond + + #tests=( test_kernel_1000_local_snapshots ) +diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming +index 7b96ef270..1d97519aa 100755 +--- a/tests/regression/tools/snapshots/test_kernel_streaming ++++ b/tests/regression/tools/snapshots/test_kernel_streaming +@@ -29,12 +29,6 @@ NUM_TESTS=61 + + source $TESTDIR/utils/utils.sh + +-# LTTng kernel modules check +-out=`ls /lib/modules/$(uname -r)/extra | grep lttng` +-if [ -z "$out" ]; then +- BAIL_OUT "LTTng modules not detected." +-fi +- + function snapshot_add_output () + { + local sess_name=$1 +@@ -169,6 +163,8 @@ fi + + skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || + { ++ validate_lttng_modules_present ++ + start_lttng_relayd "-o $TRACE_PATH" + start_lttng_sessiond + +diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel +index d54bcedf5..6bb23d9f5 100755 +--- a/tests/regression/tools/streaming/test_kernel ++++ b/tests/regression/tools/streaming/test_kernel +@@ -28,12 +28,6 @@ NUM_TESTS=10 + + source $TESTDIR/utils/utils.sh + +-# LTTng kernel modules check +-out=`ls /lib/modules/$(uname -r)/extra | grep lttng` +-if [ -z "$out" ]; then +- BAIL_OUT "LTTng modules not detected." +-fi +- + function lttng_create_session_uri + { + # Create session with default path +@@ -80,6 +74,8 @@ fi + + skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || + { ++ validate_lttng_modules_present ++ + start_lttng_relayd "-o $TRACE_PATH" + start_lttng_sessiond + +diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh +index af63824ce..26e59e383 100644 +--- a/tests/utils/utils.sh ++++ b/tests/utils/utils.sh +@@ -125,6 +125,16 @@ function conf_proc_count() + echo + } + ++# Check if base lttng-modules are present. ++# Bail out on failure ++function validate_lttng_modules_present () ++{ ++ modprobe -n lttng-tracer 2>/dev/null ++ if [ $? -ne 0 ]; then ++ BAIL_OUT "LTTng modules not detected." ++ fi ++} ++ + function enable_kernel_lttng_event + { + local withtap="$1" +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch new file mode 100644 index 000000000..e07c227f4 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch @@ -0,0 +1,28 @@ +From 92f93238f1df005aadc98e105c0dd0e04a5955a7 Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Mon, 25 Mar 2019 14:24:51 -0400 +Subject: [2/2] tests: check for lttng-modules presence + +Upstream-status: Accepted [5da3fc8579a9f93ea4767729a107784bf2d034ae] +Backported to 2.11 and 2.10 + +Signed-off-by: Jonathan Rajotte +--- + tests/regression/tools/notification/test_notification_kernel | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/regression/tools/notification/test_notification_kernel b/tests/regression/tools/notification/test_notification_kernel +index 6d7f256ae..e7368df26 100755 +--- a/tests/regression/tools/notification/test_notification_kernel ++++ b/tests/regression/tools/notification/test_notification_kernel +@@ -108,6 +108,7 @@ function kernel_test + } + + if [ "$(id -u)" == "0" ]; then ++ validate_lttng_modules_present + kernel_test + else + # Kernel tests are skipped. +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch new file mode 100644 index 000000000..5437de26e --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch @@ -0,0 +1,345 @@ +From 10e8001ad876d8cb3b5a17c7492e713bbc047975 Mon Sep 17 00:00:00 2001 +From: Jonathan Rajotte +Date: Thu, 28 Mar 2019 18:31:29 -0400 +Subject: [PATCH] Fix: getgrnam is not MT-Safe, use getgrnam_r + +Running the test suite under a Yocto musl build resulted in musl +coredump due to double freeing. + +We get the following backtraces: + +0 a_crash () at ./arch/x86_64/atomic_arch.h:108 +1 unmap_chunk (self=) at src/malloc/malloc.c:515 +2 free (p=) at src/malloc/malloc.c:526 +3 0x00007f46d9dc3849 in __getgrent_a (f=f@entry=0x7f46d9d1f7e0, gr=gr@entry=0x7f46d9e24460 , line=line@entry=0x7f46d9e26058 , size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 , nmem=nmem@entry=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgrent_a.c:45 +4 0x00007f46d9dc2e6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f46d9e24460 , buf=buf@entry=0x7f46d9e26058 , size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 , nmem=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgr_a.c:30 +5 0x00007f46d9dc3733 in getgrnam (name=) at src/passwd/getgrent.c:37 +6 0x0000000000460b29 in utils_get_group_id (name=) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 +7 0x000000000044ee69 in thread_manage_health (data=) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/main.c:4115 +8 0x00007f46d9de1541 in start (p=) at src/thread/pthread_create.c:195 +9 0x00007f46d9dee661 in __clone () at src/thread/x86_64/clone.s:22 + +From another run: + +0 a_crash () at ./arch/x86_64/atomic_arch.h:108 +1 unmap_chunk (self=) at src/malloc/malloc.c:515 +2 free (p=) at src/malloc/malloc.c:526 +3 0x00007f5abc210849 in __getgrent_a (f=f@entry=0x7f5abc2733e0, gr=gr@entry=0x7f5abc271460 , line=line@entry=0x7f5abc273058 , size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 , nmem=nmem@entry=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgrent_a.c:45 +4 0x00007f5abc20fe6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f5abc271460 , buf=buf@entry=0x7f5abc273058 , size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 , nmem=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgr_a.c:30 +5 0x00007f5abc210733 in getgrnam (name=) at src/passwd/getgrent.c:37 +6 0x0000000000460b29 in utils_get_group_id (name=) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 +7 0x000000000042dee4 in notification_channel_socket_create () at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:238 +8 init_thread_state (state=0x7f5abaef5560, handle=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:375 +9 thread_notification (data=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:495 +10 0x00007f5abc22e541 in start (p=) at src/thread/pthread_create.c:195 +11 0x00007f5abc23b661 in __clone () at src/thread/x86_64/clone.s:22 + +The problem was easily reproducible (~6 crash on ~300 runs). A prototype fix +using mutex around the getgrnam yielded no crash in over 1000 runs. This +patch yielded the same results as the prototype fix. + +Unfortunately we cannot rely on a mutex in liblttng-ctl since we cannot +enforce the locking for the application using the lib. + +Use getgrnam_r instead. + +The previous implementation of utils_get_group_id returned the gid of +the root group (0) on error/not found. lttng_check_tracing_group needs +to know if an error/not found occured, returning the root group is not +enough. We now return the gid via the passed parameter. The caller is +responsible for either defaulting to the root group or propagating the +error. + +We also do not want to warn when used in liblttng-ctl context. We might +want to move the warning elsewhere in the future. For now, pass a bool +if we need to warn or not. + +Signed-off-by: Jonathan Rajotte +--- + src/bin/lttng-consumerd/health-consumerd.c | 10 ++- + src/bin/lttng-relayd/health-relayd.c | 20 ++++-- + src/bin/lttng-sessiond/main.c | 24 +++++-- + src/bin/lttng-sessiond/notification-thread.c | 10 ++- + src/common/utils.c | 75 +++++++++++++++++--- + src/common/utils.h | 4 +- + src/lib/lttng-ctl/lttng-ctl.c | 8 +-- + 7 files changed, 122 insertions(+), 29 deletions(-) + +diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c +index 1e2f31e4..6045401a 100644 +--- a/src/bin/lttng-consumerd/health-consumerd.c ++++ b/src/bin/lttng-consumerd/health-consumerd.c +@@ -184,8 +184,14 @@ void *thread_manage_health(void *data) + is_root = !getuid(); + if (is_root) { + /* lttng health client socket path permissions */ +- ret = chown(health_unix_sock_path, 0, +- utils_get_group_id(tracing_group_name)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(tracing_group_name, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group. */ ++ } ++ ++ ret = chown(health_unix_sock_path, 0, gid); + if (ret < 0) { + ERR("Unable to set group on %s", health_unix_sock_path); + PERROR("chown"); +diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c +index ba996621..962e88c4 100644 +--- a/src/bin/lttng-relayd/health-relayd.c ++++ b/src/bin/lttng-relayd/health-relayd.c +@@ -105,8 +105,14 @@ static int create_lttng_rundir_with_perm(const char *rundir) + int is_root = !getuid(); + + if (is_root) { +- ret = chown(rundir, 0, +- utils_get_group_id(tracing_group_name)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(tracing_group_name, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group.*/ ++ } ++ ++ ret = chown(rundir, 0, gid); + if (ret < 0) { + ERR("Unable to set group on %s", rundir); + PERROR("chown"); +@@ -256,8 +262,14 @@ void *thread_manage_health(void *data) + is_root = !getuid(); + if (is_root) { + /* lttng health client socket path permissions */ +- ret = chown(health_unix_sock_path, 0, +- utils_get_group_id(tracing_group_name)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(tracing_group_name, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group */ ++ } ++ ++ ret = chown(health_unix_sock_path, 0, gid); + if (ret < 0) { + ERR("Unable to set group on %s", health_unix_sock_path); + PERROR("chown"); +diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c +index fa6fa483..49307064 100644 +--- a/src/bin/lttng-sessiond/main.c ++++ b/src/bin/lttng-sessiond/main.c +@@ -4112,8 +4112,14 @@ static void *thread_manage_health(void *data) + + if (is_root) { + /* lttng health client socket path permissions */ +- ret = chown(config.health_unix_sock_path.value, 0, +- utils_get_group_id(config.tracing_group_name.value)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group */ ++ } ++ ++ ret = chown(config.health_unix_sock_path.value, 0, &gid); + if (ret < 0) { + ERR("Unable to set group on %s", config.health_unix_sock_path.value); + PERROR("chown"); +@@ -5238,7 +5244,10 @@ static int set_permissions(char *rundir) + int ret; + gid_t gid; + +- gid = utils_get_group_id(config.tracing_group_name.value); ++ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group */ ++ } + + /* Set lttng run dir */ + ret = chown(rundir, 0, gid); +@@ -5349,7 +5358,14 @@ static int set_consumer_sockets(struct consumer_data *consumer_data) + goto error; + } + if (is_root) { +- ret = chown(path, 0, utils_get_group_id(config.tracing_group_name.value)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group */ ++ } ++ ++ ret = chown(path, 0, gid); + if (ret < 0) { + ERR("Unable to set group on %s", path); + PERROR("chown"); +diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c +index 92ac597f..18a264d9 100644 +--- a/src/bin/lttng-sessiond/notification-thread.c ++++ b/src/bin/lttng-sessiond/notification-thread.c +@@ -235,8 +235,14 @@ int notification_channel_socket_create(void) + } + + if (getuid() == 0) { +- ret = chown(sock_path, 0, +- utils_get_group_id(config.tracing_group_name.value)); ++ gid_t gid; ++ ++ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); ++ if (ret) { ++ gid = 0; /* Default to root group. */ ++ } ++ ++ ret = chown(sock_path, 0, gid); + if (ret) { + ERR("Failed to set the notification channel socket's group"); + ret = -1; +diff --git a/src/common/utils.c b/src/common/utils.c +index c0bb031e..778bc00f 100644 +--- a/src/common/utils.c ++++ b/src/common/utils.c +@@ -1231,24 +1231,77 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len) + } + + /* +- * Return the group ID matching name, else 0 if it cannot be found. ++ * Return 0 on success and set *gid to the group_ID matching the passed name. ++ * Else -1 if it cannot be found or an error occurred. + */ + LTTNG_HIDDEN +-gid_t utils_get_group_id(const char *name) ++int utils_get_group_id(const char *name, bool warn, gid_t *gid) + { +- struct group *grp; ++ static volatile int warn_once; + +- grp = getgrnam(name); +- if (!grp) { +- static volatile int warn_once; ++ int ret; ++ long sys_len; ++ size_t len; ++ struct group grp; ++ struct group *result; ++ char *buffer = NULL; + +- if (!warn_once) { +- WARN("No tracing group detected"); +- warn_once = 1; ++ /* Get the system limit if it exists */ ++ sys_len = sysconf(_SC_GETGR_R_SIZE_MAX); ++ if (sys_len == -1) { ++ len = 1024; ++ } else { ++ len = (size_t) sys_len; ++ } ++ ++ buffer = malloc(len); ++ if (!buffer) { ++ PERROR("getgrnam_r malloc"); ++ ret = -1; ++ goto error; ++ } ++ ++ while ((ret = getgrnam_r(name, &grp, buffer, len, &result)) == ERANGE) ++ { ++ /* Buffer is not big enough, increase its size. */ ++ size_t new_len = 2 * len; ++ char *new_buffer = NULL; ++ if (new_len < len) { ++ ERR("getgrnam_r buffer size overflow"); ++ ret = -1; ++ goto error; ++ } ++ len = new_len; ++ new_buffer = realloc(buffer, len); ++ if (!new_buffer) { ++ PERROR("getgrnam_r realloc"); ++ ret = -1; ++ goto error; + } +- return 0; ++ buffer = new_buffer; ++ } ++ if (ret != 0) { ++ PERROR("getgrnam_r"); ++ ret = -1; ++ goto error; ++ } ++ ++ /* Group not found. */ ++ if (!result) { ++ ret = -1; ++ goto error; ++ } ++ ++ *gid = result->gr_gid; ++ ret = 0; ++ ++error: ++ free(buffer); ++ if (ret && warn && !warn_once) { ++ WARN("No tracing group detected"); ++ warn_once = 1; + } +- return grp->gr_gid; ++ return ret; + } + + /* +diff --git a/src/common/utils.h b/src/common/utils.h +index 18f19ef1..9c72431d 100644 +--- a/src/common/utils.h ++++ b/src/common/utils.h +@@ -22,6 +22,8 @@ + #include + #include + #include ++#include ++#include + + #define KIBI_LOG2 10 + #define MEBI_LOG2 20 +@@ -52,7 +54,7 @@ int utils_get_count_order_u64(uint64_t x); + char *utils_get_home_dir(void); + char *utils_get_user_home_dir(uid_t uid); + size_t utils_get_current_time_str(const char *format, char *dst, size_t len); +-gid_t utils_get_group_id(const char *name); ++int utils_get_group_id(const char *name, bool warn, gid_t *gid); + char *utils_generate_optstring(const struct option *long_options, + size_t opt_count); + int utils_create_lock_file(const char *filepath); +diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c +index 2d84aad9..561b0bcf 100644 +--- a/src/lib/lttng-ctl/lttng-ctl.c ++++ b/src/lib/lttng-ctl/lttng-ctl.c +@@ -208,15 +208,13 @@ end: + LTTNG_HIDDEN + int lttng_check_tracing_group(void) + { +- struct group *grp_tracing; /* no free(). See getgrnam(3) */ +- gid_t *grp_list; ++ gid_t *grp_list, tracing_gid; + int grp_list_size, grp_id, i; + int ret = -1; + const char *grp_name = tracing_group; + + /* Get GID of group 'tracing' */ +- grp_tracing = getgrnam(grp_name); +- if (!grp_tracing) { ++ if (utils_get_group_id(grp_name, false, &tracing_gid)) { + /* If grp_tracing is NULL, the group does not exist. */ + goto end; + } +@@ -241,7 +239,7 @@ int lttng_check_tracing_group(void) + } + + for (i = 0; i < grp_list_size; i++) { +- if (grp_list[i] == grp_tracing->gr_gid) { ++ if (grp_list[i] == tracing_gid) { + ret = 1; + break; + } +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest index 705030ee5..dbb18820a 100755 --- a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest @@ -3,4 +3,4 @@ # test plan to raise ERRORs; this is just noise. makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD" make -k -t all >/dev/null 2>&1 -exec make -s $makeargs check 2>/dev/null +exec make -k -s $makeargs check 2>/dev/null diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch index b1bb8e493..42cebf94a 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch +++ b/poky/meta/recipes-kernel/lttng/lttng-tools/x32.patch @@ -1,11 +1,31 @@ Fix build for x32 -Upstream-Status: Pending Signed-off-by: Christopher Larson ---- lttng-tools-2.6.0/src/bin/lttng/utils.c~ 2015-01-26 18:17:15.000000000 +0100 -+++ lttng-tools-2.6.0/src/bin/lttng/utils.c 2015-07-30 19:45:25.632045712 +0200 -@@ -130,7 +130,7 @@ +Fix build error of src/common/utils.c for x32. + +Upstream-Status: Submitted [https://github.com/lttng/lttng-tools/pull/150] + +Signed-off-by: Kai Kang + +diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c +index 0e96ef0c..5c79c8c7 100644 +--- a/src/bin/lttng/utils.c ++++ b/src/bin/lttng/utils.c +@@ -158,7 +158,7 @@ unsigned int fls_u32(uint32_t x) + #define HAS_FLS_U32 + #endif + +-#if defined(__x86_64) ++#if defined(__x86_64) && !defined(__ILP32__) + static inline + unsigned int fls_u64(uint64_t x) + { +diff --git a/src/common/utils.c b/src/common/utils.c +index 08139e5e..3c389981 100644 +--- a/src/common/utils.c ++++ b/src/common/utils.c +@@ -1223,7 +1223,7 @@ static inline unsigned int fls_u32(uint32_t x) #define HAS_FLS_U32 #endif diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb new file mode 100644 index 000000000..a3fabb20e --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb @@ -0,0 +1,167 @@ +SECTION = "devel" +SUMMARY = "Linux Trace Toolkit Control" +DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \ +to extract program execution details from the Linux operating system \ +and interpret them." + +LICENSE = "GPLv2 & LGPLv2.1" +LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \ + file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca" + +DEPENDS = "liburcu popt libxml2 util-linux" +RDEPENDS_${PN} = "libgcc" +RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps perl-module-overloading coreutils util-linux kmod" +RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" +RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils" +# babelstats.pl wants getopt-long +RDEPENDS_${PN}-ptest += "perl-module-getopt-long" + +PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ + am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ + PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ +" +PACKAGECONFIG ??= "lttng-ust" +PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native" +PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust" +PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod" +PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" +PACKAGECONFIG_remove_arc = "lttng-ust" + +SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ + file://x32.patch \ + file://run-ptest \ + file://lttng-sessiond.service \ + file://0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch \ + file://0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch \ + file://0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch \ + file://0004-Skip-when-testapp-is-not-present.patch\ + file://0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch \ + file://0006-Tests-check-for-lttng-modules-presence.patch \ + file://0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch \ + " + +SRC_URI[md5sum] = "e88c521b5da6bb48a8187af633336ecc" +SRC_URI[sha256sum] = "f05df52bbebf8ce88d1b29e9e98cfc957d2ed738a345118018237ebdb581537c" + +inherit autotools ptest pkgconfig useradd python3-dir manpages systemd + +SYSTEMD_SERVICE_${PN} = "lttng-sessiond.service" +SYSTEMD_AUTO_ENABLE = "disable" + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM_${PN} = "tracing" + +FILES_${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \ + ${PYTHON_SITEPACKAGES_DIR}/*" +FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a" +FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" + +# Since files are installed into ${libdir}/lttng/libexec we match +# the libexec insane test so skip it. +# Python module needs to keep _lttng.so +INSANE_SKIP_${PN} = "libexec dev-so" +INSANE_SKIP_${PN}-dbg = "libexec" + +do_install_append () { + # install systemd unit file + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_unitdir}/system +} + +do_install_ptest () { + for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/load-42*.lttng tests/regression/tools/save-load/configuration/load-42*.lttng ; do + install -D "${B}/$f" "${D}${PTEST_PATH}/$f" + done + + for f in config/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-3.0.xsd; do + install -D "${S}/$f" "${D}${PTEST_PATH}/$f" + done + + # Prevent 'make check' from recursing into non-test subdirectories. + sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile" + + # We don't need these + sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile" + + # We shouldn't need to build anything in tests/utils + sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \ + "${D}${PTEST_PATH}/tests/Makefile" + + # Copy the tests directory tree and the executables and + # Makefiles found within. + for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do + install -d "${D}${PTEST_PATH}/tests/$d" + find "${B}/tests/$d" -maxdepth 1 -executable -type f \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + + # Take all .py scripts for tests using the python bindings. + find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + + test -r "${B}/tests/$d/Makefile" && \ + install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile" + done + + for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do + for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do + cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f + case $f in + *.so) + install -d ${D}${PTEST_PATH}/tests/$d/ + ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f + # Remove any rpath/runpath to pass QA check. + chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f + ;; + esac + done + done + + # + # Use the versioned libs of liblttng-ust-dl. + # + ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py" + if [ -e $ustdl ]; then + sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl + fi + + install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/ + + # We shouldn't need to build anything in tests/regression/tools + sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \ + "${D}${PTEST_PATH}/tests/regression/Makefile" + + # Prevent attempts to update Makefiles during test runs, and + # silence "Making check in $SUBDIR" messages. + find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ + sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \ + -e '/echo "Making $$target in $$subdir"; \\/d' \ + -e 's/^srcdir = \(.*\)/srcdir = ./' \ + -e 's/^builddir = \(.*\)/builddir = ./' \ + -e 's/^all-am:.*/all-am:/' \ + {} + + + find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ + touch -r "${B}/Makefile" {} + + + # + # Need to stop generated binaries from rebuilding by removing their source dependencies + # + sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \ + -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \ + -e 's#\(^test.*SOURCES.=\)#disable\1#g' \ + -e 's#\(^test.*LDADD.=\)#disable\1#g' \ + -i ${D}${PTEST_PATH}/tests/unit/Makefile + + # Substitute links to installed binaries. + for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do + exedir="${D}${PTEST_PATH}/src/bin/${prog}" + install -d "$exedir" + case "$prog" in + lttng-consumerd) + ln -s "${libdir}/lttng/libexec/$prog" "$exedir" + ;; + *) + ln -s "${bindir}/$prog" "$exedir" + ;; + esac + done +} diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.9.11.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.9.11.bb deleted file mode 100644 index 5e3fc1aab..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.9.11.bb +++ /dev/null @@ -1,134 +0,0 @@ -SECTION = "devel" -SUMMARY = "Linux Trace Toolkit Control" -DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \ -to extract program execution details from the Linux operating system \ -and interpret them." - -LICENSE = "GPLv2 & LGPLv2.1" -LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \ - file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca" - -DEPENDS = "liburcu popt libxml2 util-linux" -RDEPENDS_${PN} = "libgcc" -RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps" -# babelstats.pl wants getopt-long -RDEPENDS_${PN}-ptest += "perl-module-getopt-long" - -PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ - am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ - PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ -" -PACKAGECONFIG ??= "lttng-ust" -PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native" -PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust" -PACKAGECONFIG[kmod] = "--enable-kmod, --disable-kmod, kmod" -PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" -PACKAGECONFIG_remove_libc-musl = "lttng-ust" -PACKAGECONFIG_remove_riscv64 = "lttng-ust" - -SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ - file://x32.patch \ - file://run-ptest \ - file://0001-Allow-multiple-attempts-to-connect-to-relayd.patch \ - file://lttng-sessiond.service \ - " - -SRC_URI[md5sum] = "f9c2b35810790f5bd802483eb14cb301" -SRC_URI[sha256sum] = "2c45144acf8dc6fcd655be7370a022e9c03c8b7419af489c9c2e786a335006db" - -inherit autotools ptest pkgconfig useradd python3-dir manpages systemd - -SYSTEMD_SERVICE_${PN} = "lttng-sessiond.service" -SYSTEMD_AUTO_ENABLE = "disable" - -USERADD_PACKAGES = "${PN}" -GROUPADD_PARAM_${PN} = "tracing" - -FILES_${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \ - ${PYTHON_SITEPACKAGES_DIR}/*" -FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a" -FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" - -# Since files are installed into ${libdir}/lttng/libexec we match -# the libexec insane test so skip it. -# Python module needs to keep _lttng.so -INSANE_SKIP_${PN} = "libexec dev-so" -INSANE_SKIP_${PN}-dbg = "libexec" - -do_install_append () { - # install systemd unit file - install -d ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_unitdir}/system -} - -do_install_ptest () { - for f in Makefile tests/Makefile tests/utils/utils.sh ; do - install -D "${B}/$f" "${D}${PTEST_PATH}/$f" - done - - for f in config/tap-driver.sh config/test-driver ; do - install -D "${S}/$f" "${D}${PTEST_PATH}/$f" - done - - # Prevent 'make check' from recursing into non-test subdirectories. - sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile" - - # We don't need these - sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile" - - # We shouldn't need to build anything in tests/utils - sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \ - "${D}${PTEST_PATH}/tests/Makefile" - - # Copy the tests directory tree and the executables and - # Makefiles found within. - for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do - install -d "${D}${PTEST_PATH}/tests/$d" - find "${B}/tests/$d" -maxdepth 1 -executable -type f \ - -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + - test -r "${B}/tests/$d/Makefile" && \ - install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile" - done - - # We shouldn't need to build anything in tests/regression/tools - sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \ - "${D}${PTEST_PATH}/tests/regression/Makefile" - - # Prevent attempts to update Makefiles during test runs, and - # silence "Making check in $SUBDIR" messages. - find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ - sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \ - -e '/echo "Making $$target in $$subdir"; \\/d' \ - -e 's/^srcdir = \(.*\)/srcdir = ./' \ - -e 's/^builddir = \(.*\)/builddir = ./' \ - -e 's/^all-am:.*/all-am:/' \ - {} + - - # These objects trigger [rpaths] QA checks; the test harness - # skips the associated tests if they're missing, so delete - # them. - objs="" - objs="$objs regression/ust/ust-dl/libbar.so" - objs="$objs regression/ust/ust-dl/libfoo.so" - for obj in $objs ; do - rm -f "${D}${PTEST_PATH}/tests/${obj}" - done - - find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ - touch -r "${B}/Makefile" {} + - - # Substitute links to installed binaries. - for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd ; do - exedir="${D}${PTEST_PATH}/src/bin/${prog}" - install -d "$exedir" - case "$prog" in - lttng-consumerd) - ln -s "${libdir}/lttng/libexec/$prog" "$exedir" - ;; - *) - ln -s "${bindir}/$prog" "$exedir" - ;; - esac - done -} diff --git a/poky/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch b/poky/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch new file mode 100644 index 000000000..5c4bd3672 --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch @@ -0,0 +1,109 @@ +From 5de7c318804a7b1edce8562d4891b4c74aac0677 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson +Date: Wed, 20 Mar 2019 11:07:35 -0400 +Subject: [PATCH] compat: work around broken _SC_NPROCESSORS_CONF on MUSL libc + +On MUSL libc the _SC_NPROCESSORS_CONF sysconf will report the number of +CPUs allocated to the task based on the affinity mask instead of the +total number of CPUs configured on the system. + +Upstream-Status: Accepted [1] [5de7c318804a7b1edce8562d4891b4c74aac0677] +[1] https://lists.lttng.org/pipermail/lttng-dev/2019-March/028616.html + +Signed-off-by: Michael Jeanson +Signed-off-by: Mathieu Desnoyers +--- + libringbuffer/smp.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + +diff --git a/libringbuffer/smp.c b/libringbuffer/smp.c +index 9e7114be..656a75da 100644 +--- a/libringbuffer/smp.c ++++ b/libringbuffer/smp.c +@@ -2,6 +2,7 @@ + * libringbuffer/smp.c + * + * Copyright (C) 2011-2012 Mathieu Desnoyers ++ * Copyright (C) 2019 Michael Jeanson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -26,6 +27,7 @@ + + int __num_possible_cpus; + ++#if (defined(__GLIBC__) || defined( __UCLIBC__)) + void _get_num_possible_cpus(void) + { + int result; +@@ -43,3 +45,67 @@ void _get_num_possible_cpus(void) + return; + __num_possible_cpus = result; + } ++ ++#else ++ ++/* ++ * The MUSL libc implementation of the _SC_NPROCESSORS_CONF sysconf does not ++ * return the number of configured CPUs in the system but relies on the cpu ++ * affinity mask of the current task. ++ * ++ * So instead we use a strategy similar to GLIBC's, counting the cpu ++ * directories in "/sys/devices/system/cpu" and fallback on the value from ++ * sysconf if it fails. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define __max(a,b) ((a)>(b)?(a):(b)) ++ ++void _get_num_possible_cpus(void) ++{ ++ int result, count = 0; ++ DIR *cpudir; ++ struct dirent *entry; ++ ++ cpudir = opendir("/sys/devices/system/cpu"); ++ if (cpudir == NULL) ++ goto end; ++ ++ /* ++ * Count the number of directories named "cpu" followed by and ++ * integer. This is the same strategy as glibc uses. ++ */ ++ while ((entry = readdir(cpudir))) { ++ if (entry->d_type == DT_DIR && ++ strncmp(entry->d_name, "cpu", 3) == 0) { ++ ++ char *endptr; ++ unsigned long cpu_num; ++ ++ cpu_num = strtoul(entry->d_name + 3, &endptr, 10); ++ if ((cpu_num < ULONG_MAX) && (endptr != entry->d_name + 3) ++ && (*endptr == '\0')) { ++ count++; ++ } ++ } ++ } ++ ++end: ++ /* ++ * Get the sysconf value as a fallback. Keep the highest number. ++ */ ++ result = __max(sysconf(_SC_NPROCESSORS_CONF), count); ++ ++ /* ++ * If both methods failed, don't store the value. ++ */ ++ if (result < 1) ++ return; ++ __num_possible_cpus = result; ++} ++#endif +-- +2.17.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb b/poky/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb index b5c43200d..d54610412 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb +++ b/poky/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb @@ -8,7 +8,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c963eb366b781252b0bf0fdf1624d9e9 \ file://snprintf/snprintf.c;endline=32;md5=d3d544959d8a3782b2e07451be0a903c \ file://snprintf/various.h;endline=31;md5=89f2509b6b4682c4fc95255eec4abe44" -inherit autotools lib_package manpages +PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ + am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ + PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ +" + +inherit autotools lib_package manpages python3native DEPENDS = "liburcu util-linux" RDEPENDS_${PN}-bin = "python3-core" @@ -22,13 +27,20 @@ PE = "2" SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \ file://lttng-ust-doc-examples-disable.patch \ + file://0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch \ " + SRC_URI[md5sum] = "ffcfa8c1ba9a52f002d240e936e9afa2" SRC_URI[sha256sum] = "9e8420f90d5f963f7aa32bc6d44adc1e491136f687c69ffb7a3075d33b40852b" CVE_PRODUCT = "ust" PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" +PACKAGECONFIG[python3-agent] = "--enable-python-agent ${PYTHON_OPTION}, --disable-python-agent, python3, python3" + +FILES_${PN} += " ${PYTHON_SITEPACKAGES_DIR}/*" +FILES_${PN}-staticdev += " ${PYTHON_SITEPACKAGES_DIR}/*.a" +FILES_${PN}-dev += " ${PYTHON_SITEPACKAGES_DIR}/*.la" do_install_append() { # Patch python tools to use Python 3; they should be source compatible, but -- cgit v1.2.1