[lttng-dev] [PATCH lttng-tools 1/3] Fix: lttng-sessiond: cpu hotplug stream number mismatch

Jérémie Galarneau jeremie.galarneau at efficios.com
Mon May 22 15:30:11 UTC 2017


Merged in master, stable-2.10, stable-2.9, and stable-2.8.

Thanks!
Jérémie

On 11 May 2017 at 16:00, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
> The counter should be always increasing (kept in the channel), rather
> than local to the function. This causes cpu hotplug handling to
> disregard further streams that should be added to the consumer output
> on CPU hotplug.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
>  src/bin/lttng-sessiond/kernel.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c
> index aa51649..e478499 100644
> --- a/src/bin/lttng-sessiond/kernel.c
> +++ b/src/bin/lttng-sessiond/kernel.c
> @@ -644,17 +644,22 @@ error:
>   * Open stream of channel, register it to the kernel tracer and add it
>   * to the stream list of the channel.
>   *
> + * Note: given that the streams may appear in random order wrt CPU
> + * number (e.g. cpu hotplug), the index value of the stream number in
> + * the stream name is not necessarily linked to the CPU number.
> + *
>   * Return the number of created stream. Else, a negative value.
>   */
>  int kernel_open_channel_stream(struct ltt_kernel_channel *channel)
>  {
> -       int ret, count = 0;
> +       int ret;
>         struct ltt_kernel_stream *lks;
>
>         assert(channel);
>
>         while ((ret = kernctl_create_stream(channel->fd)) >= 0) {
> -               lks = trace_kernel_create_stream(channel->channel->name, count);
> +               lks = trace_kernel_create_stream(channel->channel->name,
> +                               channel->stream_count);
>                 if (lks == NULL) {
>                         ret = close(ret);
>                         if (ret) {
> @@ -673,13 +678,10 @@ int kernel_open_channel_stream(struct ltt_kernel_channel *channel)
>                 lks->tracefile_size = channel->channel->attr.tracefile_size;
>                 lks->tracefile_count = channel->channel->attr.tracefile_count;
>
> -               /* Add stream to channe stream list */
> +               /* Add stream to channel stream list */
>                 cds_list_add(&lks->list, &channel->stream_list.head);
>                 channel->stream_count++;
>
> -               /* Increment counter which represent CPU number. */
> -               count++;
> -
>                 DBG("Kernel stream %s created (fd: %d, state: %d)", lks->name, lks->fd,
>                                 lks->state);
>         }
> --
> 2.1.4
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list