Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1683729 > unrolled thread

[for-next][PATCH 0/4] tracing: A few more changes for 4.13

Started bySteven Rostedt <rostedt@goodmis.org>
First post2017-07-09 13:50 +0200
Last post2017-07-09 13:50 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [for-next][PATCH 0/4] tracing: A few more changes for 4.13 Steven Rostedt <rostedt@goodmis.org> - 2017-07-09 13:50 +0200
    [for-next][PATCH 4/4] tracing: Attempt to record other information even if some fail Steven Rostedt <rostedt@goodmis.org> - 2017-07-09 13:50 +0200

#1683729 — [for-next][PATCH 0/4] tracing: A few more changes for 4.13

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-07-09 13:50 +0200
Subject[for-next][PATCH 0/4] tracing: A few more changes for 4.13
Message-ID<u1iSR-7ch-7@gated-at.bofh.it>
  git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
for-next

Head SHA1: 29b1a8ad7df4528b862a79e3d5fb0936f4d199c7


Joel Fernandes (3):
      tracing: Treat recording comm for idle task as a success
      tracing: Treat recording tgid for idle task as a success
      tracing: Attempt to record other information even if some fail

Michael Sartain (1):
      tracing: Add saved_tgids file to show cached pid to tgid mappings

----
 kernel/trace/trace.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 107 insertions(+), 10 deletions(-)

[toc] | [next] | [standalone]


#1683732 — [for-next][PATCH 4/4] tracing: Attempt to record other information even if some fail

FromSteven Rostedt <rostedt@goodmis.org>
Date2017-07-09 13:50 +0200
Subject[for-next][PATCH 4/4] tracing: Attempt to record other information even if some fail
Message-ID<u1iSS-7ch-29@gated-at.bofh.it>
In reply to#1683729
From: Joel Fernandes <joelaf@google.com>

In recent patches where we record comm and tgid at the same time, we skip
continuing to record if any fail. Fix that by trying to record as many things
as we can even if some couldn't be recorded. If any information isn't recorded,
then we don't set trace_taskinfo_save as before.

Link: http://lkml.kernel.org/r/20170706230023.17942-3-joelaf@google.com

Cc: kernel-team@android.com
Cc: Ingo Molnar <mingo@redhat.com>
Signed-off-by: Joel Fernandes <joelaf@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 kernel/trace/trace.c | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index aee11e3a394f..92af8fd1429b 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -2037,11 +2037,20 @@ static bool tracing_record_taskinfo_skip(int flags)
  */
 void tracing_record_taskinfo(struct task_struct *task, int flags)
 {
+	bool done;
+
 	if (tracing_record_taskinfo_skip(flags))
 		return;
-	if ((flags & TRACE_RECORD_CMDLINE) && !trace_save_cmdline(task))
-		return;
-	if ((flags & TRACE_RECORD_TGID) && !trace_save_tgid(task))
+
+	/*
+	 * Record as much task information as possible. If some fail, continue
+	 * to try to record the others.
+	 */
+	done = !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(task);
+	done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(task);
+
+	/* If recording any information failed, retry again soon. */
+	if (!done)
 		return;
 
 	__this_cpu_write(trace_taskinfo_save, false);
@@ -2058,15 +2067,22 @@ void tracing_record_taskinfo(struct task_struct *task, int flags)
 void tracing_record_taskinfo_sched_switch(struct task_struct *prev,
 					  struct task_struct *next, int flags)
 {
+	bool done;
+
 	if (tracing_record_taskinfo_skip(flags))
 		return;
 
-	if ((flags & TRACE_RECORD_CMDLINE) &&
-	    (!trace_save_cmdline(prev) || !trace_save_cmdline(next)))
-		return;
+	/*
+	 * Record as much task information as possible. If some fail, continue
+	 * to try to record the others.
+	 */
+	done  = !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(prev);
+	done &= !(flags & TRACE_RECORD_CMDLINE) || trace_save_cmdline(next);
+	done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(prev);
+	done &= !(flags & TRACE_RECORD_TGID) || trace_save_tgid(next);
 
-	if ((flags & TRACE_RECORD_TGID) &&
-	    (!trace_save_tgid(prev) || !trace_save_tgid(next)))
+	/* If recording any information failed, retry again soon. */
+	if (!done)
 		return;
 
 	__this_cpu_write(trace_taskinfo_save, false);
-- 
2.10.2

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web