Skip to content

Updates for kernel tracing ring buffer

Mamatha Inamdar requested to merge mainamdar/centos-stream-9:RHEL-23763 into main

Description: Updates for kernel tracing ring buffer

JIRA: https://issues.redhat.com/browse/RHEL-23763

Build Info: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=60719054

Tested: Verified Brew build test kernel RPMs and confirmed issue is resovled

Signed-off-by: Mamatha Inamdar minamdar@redhat.com

commit b71645d6af10196c46cbe3732de2ea7d36b3ff6d Author: Zheng Yejian zhengyejian1@huawei.com Date: Sat Aug 5 11:38:15 2023 +0800

tracing: Fix cpu buffers unavailable due to 'record_disabled' missed

Trace ring buffer can no longer record anything after executing
following commands at the shell prompt:
  fff
  -bash: echo: write error: Bad file descriptor

The root cause is that:
  1. After `echo 0 > tracing_cpumask`, 'record_disabled' of cpu buffers
     in 'tr->array_buffer.buffer' became 1 (see tracing_set_cpumask());
  2. After `echo 1 > snapshot`, 'tr->array_buffer.buffer' is swapped
     with 'tr->max_buffer.buffer', then the 'record_disabled' became 0
     (see update_max_tr());
  3. After `echo fff > tracing_cpumask`, the 'record_disabled' become -1;
Then array_buffer and max_buffer are both unavailable due to value of
'record_disabled' is not 0.

To fix it, enable or disable both array_buffer and max_buffer at the same
time in tracing_set_cpumask().

Link: https://lkml.kernel.org/r/20230805033816.3284594-2-zhengyejian1@huawei.com

Cc: <mhiramat@kernel.org>
Cc: <vnagarnaik@google.com>
Cc: <shuah@kernel.org>
Fixes: 71babb2705e2 ("tracing: change CPU ring buffer state from tracing_cpumask")
Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>

Signed-off-by: Mamatha Inamdar minamdar@redhat.com

Merge request reports