From 934de5f2eac35f34954166cdb47af3593451658a Mon Sep 17 00:00:00 2001 From: Daniel Bristot de Oliveira Date: Fri, 1 Jul 2016 20:44:34 -0300 Subject: tracing: Use outer () on __get_str() definition __get_str(str)'s definition includes a (char *) operator overloading that is not protected with outer (). This patch adds () around __get_str()'s definition, enabling some code cleanup. Link: http://lkml.kernel.org/r/20ac1a10c2ec4ccd23e4a8ef34101fb6e4157d37.1467407618.git.bristot@redhat.com Cc: Trond Myklebust Cc: Anna Schumaker Cc: Ingo Molnar Suggested-by: Steven Rostedt Reviewed-by: Steven Rostedt Signed-off-by: Daniel Bristot de Oliveira Signed-off-by: Steven Rostedt --- include/trace/perf.h | 2 +- include/trace/trace_events.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include/trace') diff --git a/include/trace/perf.h b/include/trace/perf.h index 88de5c205e86..04fe68bbe767 100644 --- a/include/trace/perf.h +++ b/include/trace/perf.h @@ -15,7 +15,7 @@ ((__entry->__data_loc_##field >> 16) & 0xffff) #undef __get_str -#define __get_str(field) (char *)__get_dynamic_array(field) +#define __get_str(field) ((char *)__get_dynamic_array(field)) #undef __get_bitmask #define __get_bitmask(field) (char *)__get_dynamic_array(field) diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h index 80679a9fae65..467e12f780d8 100644 --- a/include/trace/trace_events.h +++ b/include/trace/trace_events.h @@ -256,7 +256,7 @@ TRACE_MAKE_SYSTEM_STR(); ((__entry->__data_loc_##field >> 16) & 0xffff) #undef __get_str -#define __get_str(field) (char *)__get_dynamic_array(field) +#define __get_str(field) ((char *)__get_dynamic_array(field)) #undef __get_bitmask #define __get_bitmask(field) \ -- cgit v1.2.3 From 752d596b394c62f081393bbf53dff2a2c244632e Mon Sep 17 00:00:00 2001 From: Daniel Bristot de Oliveira Date: Fri, 1 Jul 2016 20:44:36 -0300 Subject: tracing: Use __get_str() when manipulating strings Use __get_str(str) rather than __get_dynamic_array(str) when deadling with strings. It is just a code cleanup, no changes on tracepoint ABI. Link: http://lkml.kernel.org/r/ea260df91817411cca2a1f3db2abd88860094788.1467407618.git.bristot@redhat.com Cc: Trond Myklebust Cc: Anna Schumaker Cc: Ingo Molnar Cc: linux-nfs@vger.kernel.org Suggested-by: Steven Rostedt Reviewed-by: Steven Rostedt Signed-off-by: Daniel Bristot de Oliveira Signed-off-by: Steven Rostedt --- fs/nfs/nfs4trace.h | 4 ++-- fs/nfs/nfstrace.h | 4 ++-- include/trace/events/printk.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'include/trace') diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h index 9c150b153782..cfb8f7ce5cf6 100644 --- a/fs/nfs/nfs4trace.h +++ b/fs/nfs/nfs4trace.h @@ -1235,8 +1235,8 @@ DECLARE_EVENT_CLASS(nfs4_idmap_event, len = 0; __entry->error = error < 0 ? error : 0; __entry->id = id; - memcpy(__get_dynamic_array(name), name, len); - ((char *)__get_dynamic_array(name))[len] = 0; + memcpy(__get_str(name), name, len); + __get_str(name)[len] = 0; ), TP_printk( diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h index 0b9e5cc9a747..31c7763b94d5 100644 --- a/fs/nfs/nfstrace.h +++ b/fs/nfs/nfstrace.h @@ -707,9 +707,9 @@ TRACE_EVENT(nfs_sillyrename_unlink, __entry->dev = dir->i_sb->s_dev; __entry->dir = NFS_FILEID(dir); __entry->error = error; - memcpy(__get_dynamic_array(name), + memcpy(__get_str(name), data->args.name.name, len); - ((char *)__get_dynamic_array(name))[len] = 0; + __get_str(name)[len] = 0; ), TP_printk( diff --git a/include/trace/events/printk.h b/include/trace/events/printk.h index c008bc99f9fa..542a7558154a 100644 --- a/include/trace/events/printk.h +++ b/include/trace/events/printk.h @@ -16,8 +16,8 @@ TRACE_EVENT(console, ), TP_fast_assign( - memcpy(__get_dynamic_array(msg), text, len); - ((char *)__get_dynamic_array(msg))[len] = 0; + memcpy(__get_str(msg), text, len); + __get_str(msg)[len] = 0; ), TP_printk("%s", __get_str(msg)) -- cgit v1.2.3 From 78aebca2c955c1c5aeb48e12645e13fe3c3461f2 Mon Sep 17 00:00:00 2001 From: Daniel Bristot de Oliveira Date: Fri, 1 Jul 2016 20:44:37 -0300 Subject: printk, tracing: Avoiding unneeded blank lines Printk messages often finish with '\n' to cause a new line. But as each tracepoint is already printed in a new line, printk messages that finish with '\n' ends up adding a blank line to the trace output. For example: kworker/0:1-86 [000] d... 46.006949: console: [ 46.006946] usb 1-3: USB disconnect, device number 3 kworker/2:2-374 [002] d... 48.699342: console: [ 48.699339] usb 1-3: new high-speed USB device number 4 using ehci-pci kworker/2:2-374 [002] d... 49.041450: console: [ 49.041448] usb 1-3: New USB device found, idVendor=5986, idProduct=0 To avoid unneeded blank lines, this patch checks if the printk message finishes with '\n', if so, it cut is off the '\n' to avoid blank lines. In a patched kernel, the same messages are printed without extra blank lines. For example: kworker/0:4-185 [000] d... 23.641738: console: [ 23.641736] usb 1-3: USB disconnect, device number 3 kworker/0:4-185 [000] d... 24.918703: console: [ 24.918700] usb 1-3: new high-speed USB device number 4 using ehci-pci kworker/0:4-185 [000] d... 25.228308: console: [ 25.228306] usb 1-3: New USB device found, idVendor=5986, idProduct=02d5 Link: http://lkml.kernel.org/r/c350fb2521baaf681a1b4d67981ca0e900108e8e.1467407618.git.bristot@redhat.com Cc: Trond Myklebust Cc: Anna Schumaker Cc: Ingo Molnar Reviewed-by: Steven Rostedt Signed-off-by: Daniel Bristot de Oliveira Signed-off-by: Steven Rostedt --- include/trace/events/printk.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include/trace') diff --git a/include/trace/events/printk.h b/include/trace/events/printk.h index 542a7558154a..f350170059c6 100644 --- a/include/trace/events/printk.h +++ b/include/trace/events/printk.h @@ -16,6 +16,14 @@ TRACE_EVENT(console, ), TP_fast_assign( + /* + * Each trace entry is printed in a new line. + * If the msg finishes with '\n', cut it off + * to avoid blank lines in the trace. + */ + if ((len > 0) && (text[len-1] == '\n')) + len -= 1; + memcpy(__get_str(msg), text, len); __get_str(msg)[len] = 0; ), -- cgit v1.2.3