2021-07-19 15:03:25

by Chuck Lever

[permalink] [raw]
Subject: [PATCH 0/3] NFSD: Clean up tracepoint string handling

As discussed last week, here's what I've added to the for-next topic
branch at:

git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git

See:

https://lore.kernel.org/lkml/[email protected]/T/#u

---

Chuck Lever (2):
NFSD: Use new __string_len C macros for the nfs_dirent tracepoint
NFSD: Use new __string_len C macros for nfsd_clid_class

Steven Rostedt (VMware) (1):
tracing: Add trace_event helper macros __string_len() and __assign_str_len()


fs/nfsd/trace.h | 17 ++++++--------
include/trace/trace_events.h | 22 ++++++++++++++++++
samples/trace_events/trace-events-sample.h | 27 ++++++++++++++++++++++
3 files changed, 56 insertions(+), 10 deletions(-)

--
Chuck Lever


2021-07-19 15:03:26

by Chuck Lever

[permalink] [raw]
Subject: [PATCH 2/3] NFSD: Use new __string_len C macros for the nfs_dirent tracepoint

Clean up.

Signed-off-by: Chuck Lever <[email protected]>
---
fs/nfsd/trace.h | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index adaec43548d1..52a43acd546c 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -400,18 +400,16 @@ TRACE_EVENT(nfsd_dirent,
TP_STRUCT__entry(
__field(u32, fh_hash)
__field(u64, ino)
- __field(int, len)
- __dynamic_array(unsigned char, name, namlen)
+ __string_len(name, name, namlen)
),
TP_fast_assign(
__entry->fh_hash = fhp ? knfsd_fh_hash(&fhp->fh_handle) : 0;
__entry->ino = ino;
- __entry->len = namlen;
- memcpy(__get_str(name), name, namlen);
+ __assign_str_len(name, name, namlen)
),
- TP_printk("fh_hash=0x%08x ino=%llu name=%.*s",
- __entry->fh_hash, __entry->ino,
- __entry->len, __get_str(name))
+ TP_printk("fh_hash=0x%08x ino=%llu name=%s",
+ __entry->fh_hash, __entry->ino, __get_str(name)
+ )
)

#include "state.h"


2021-07-19 15:03:54

by Chuck Lever

[permalink] [raw]
Subject: [PATCH 3/3] NFSD: Use new __string_len C macros for nfsd_clid_class

Clean up.

Signed-off-by: Chuck Lever <[email protected]>
---
fs/nfsd/trace.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index 52a43acd546c..538520957a81 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -606,7 +606,7 @@ DECLARE_EVENT_CLASS(nfsd_clid_class,
__array(unsigned char, addr, sizeof(struct sockaddr_in6))
__field(unsigned long, flavor)
__array(unsigned char, verifier, NFS4_VERIFIER_SIZE)
- __dynamic_array(char, name, clp->cl_name.len + 1)
+ __string_len(name, name, clp->cl_name.len)
),
TP_fast_assign(
__entry->cl_boot = clp->cl_clientid.cl_boot;
@@ -616,8 +616,7 @@ DECLARE_EVENT_CLASS(nfsd_clid_class,
__entry->flavor = clp->cl_cred.cr_flavor;
memcpy(__entry->verifier, (void *)&clp->cl_verifier,
NFS4_VERIFIER_SIZE);
- memcpy(__get_str(name), clp->cl_name.data, clp->cl_name.len);
- __get_str(name)[clp->cl_name.len] = '\0';
+ __assign_str_len(name, clp->cl_name.data, clp->cl_name.len);
),
TP_printk("addr=%pISpc name='%s' verifier=0x%s flavor=%s client=%08x:%08x",
__entry->addr, __get_str(name),