* [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir
@ 2025-04-17 13:11 Jeff Layton
2025-04-17 13:11 ` [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
` (8 more replies)
0 siblings, 9 replies; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton, Thomas Weißschuh
I had previously sent some patches to add debugfs files for the net
namespace refcount trackers, but Andrew convinced me to make this more
generic and better-integrated into the ref_tracker infrastructure.
This adds a new ref_tracker_dir_debugfs() call that subsystems can call
to finalize the name of their dir and register a debugfs file for it.
The last two patches add these calls for the netns and netdev
ref_trackers.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
Changes in v3:
- don't overwrite dir->name in ref_tracker_dir_debugfs
- define REF_TRACKER_NAMESZ and use it when setting name
- Link to v2: https://lore.kernel.org/r/20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org
Changes in v2:
- Add patch to do %pK -> %p conversion in ref_tracker.c
- Pass in output function to pr_ostream() instead of if statement
- Widen ref_tracker_dir.name to 64 bytes to accomodate unique names
- Eliminate error handling with debugfs manipulation
- Incorporate pointer value into netdev name
- Link to v1: https://lore.kernel.org/r/20250414-reftrack-dbgfs-v1-0-f03585832203@kernel.org
---
Jeff Layton (8):
ref_tracker: don't use %pK in pr_ostream() output
ref_tracker: add a top level debugfs directory for ref_tracker
ref_tracker: have callers pass output function to pr_ostream()
ref_tracker: allow pr_ostream() to print directly to a seq_file
ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir
ref_tracker: widen the ref_tracker_dir.name field
net: add ref_tracker_dir_debugfs() calls for netns refcount tracking
net: register debugfs file for net_device refcnt tracker
include/linux/ref_tracker.h | 17 ++++-
lib/ref_tracker.c | 151 +++++++++++++++++++++++++++++++++++++++-----
net/core/dev.c | 6 +-
net/core/net_namespace.c | 34 +++++++++-
4 files changed, 190 insertions(+), 18 deletions(-)
---
base-commit: 695caca9345a160ecd9645abab8e70cfe849e9ff
change-id: 20250413-reftrack-dbgfs-3767b303e2fa
Best regards,
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 13:25 ` Thomas Weißschuh
2025-04-17 13:11 ` [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Jeff Layton
` (7 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton, Thomas Weißschuh
As Thomas Weißschuh points out [1], it is now preferable to use %p
instead of hashed pointers with printk(), since raw pointers should no
longer be leaked into the kernel log. Change the ref_tracker
infrastructure to use %p instead of %pK in its formats.
[1]: https://lore.kernel.org/netdev/20250414-restricted-pointers-net-v1-0-12af0ce46cdd@linutronix.de/
Cc: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
lib/ref_tracker.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index cf5609b1ca79361763abe5a3a98484a3ee591ff2..de71439e12a3bab6456910986fa611dfbdd97980 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -96,7 +96,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
stats = ref_tracker_get_stats(dir, display_limit);
if (IS_ERR(stats)) {
- pr_ostream(s, "%s@%pK: couldn't get stats, error %pe\n",
+ pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n",
dir->name, dir, stats);
return;
}
@@ -107,13 +107,13 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
stack = stats->stacks[i].stack_handle;
if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4))
sbuf[0] = 0;
- pr_ostream(s, "%s@%pK has %d/%d users at\n%s\n", dir->name, dir,
+ pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir,
stats->stacks[i].count, stats->total, sbuf);
skipped -= stats->stacks[i].count;
}
if (skipped)
- pr_ostream(s, "%s@%pK skipped reports about %d/%d users.\n",
+ pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n",
dir->name, dir, skipped, stats->total);
kfree(sbuf);
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
2025-04-17 13:11 ` [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:24 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream() Jeff Layton
` (6 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
Add a new "ref_tracker" directory in debugfs. Each individual refcount
tracker can register files under there to display info about
currently-held references.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
lib/ref_tracker.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index de71439e12a3bab6456910986fa611dfbdd97980..a66cde325920780cfe7529ea9d827d0ee943318d 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -12,6 +12,8 @@
#define REF_TRACKER_STACK_ENTRIES 16
#define STACK_BUF_SIZE 1024
+static struct dentry *ref_tracker_debug_dir = (struct dentry *)-ENOENT;
+
struct ref_tracker {
struct list_head head; /* anchor into dir->list or dir->quarantine */
bool dead;
@@ -273,3 +275,17 @@ int ref_tracker_free(struct ref_tracker_dir *dir,
return 0;
}
EXPORT_SYMBOL_GPL(ref_tracker_free);
+
+#ifdef CONFIG_DEBUG_FS
+#include <linux/debugfs.h>
+
+static int __init ref_tracker_debugfs_init(void)
+{
+ ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL);
+ if (IS_ERR(ref_tracker_debug_dir))
+ pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %pe\n",
+ ref_tracker_debug_dir);
+ return 0;
+}
+late_initcall(ref_tracker_debugfs_init);
+#endif /* CONFIG_DEBUG_FS */
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream()
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
2025-04-17 13:11 ` [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
2025-04-17 13:11 ` [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:26 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Jeff Layton
` (5 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
In a later patch, we'll be adding a 3rd mechanism for outputting
ref_tracker info via seq_file. Instead of a conditional, have the caller
set a pointer to an output function in struct ostream. As part of this,
the log prefix must be explicitly passed in, as it's too late for the
pr_fmt macro.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
lib/ref_tracker.c | 53 ++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 38 insertions(+), 15 deletions(-)
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index a66cde325920780cfe7529ea9d827d0ee943318d..b6e0a87dd75eddef4d504419c0cf398ea65c19d8 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -64,22 +64,40 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit)
return stats;
}
+#define __ostream_printf __printf(2, 3)
+
struct ostream {
+ void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...);
+ char *prefix;
char *buf;
int size, used;
};
+static void __ostream_printf pr_ostream_log(struct ostream *stream, char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vprintk(fmt, args);
+ va_end(args);
+}
+
+static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *fmt, ...)
+{
+ int ret, len = stream->size - stream->used;
+ va_list args;
+
+ va_start(args, fmt);
+ ret = vsnprintf(stream->buf + stream->used, len, fmt, args);
+ va_end(args);
+ stream->used += min(ret, len);
+}
+
#define pr_ostream(stream, fmt, args...) \
({ \
struct ostream *_s = (stream); \
\
- if (!_s->buf) { \
- pr_err(fmt, ##args); \
- } else { \
- int ret, len = _s->size - _s->used; \
- ret = snprintf(_s->buf + _s->used, len, pr_fmt(fmt), ##args); \
- _s->used += min(ret, len); \
- } \
+ _s->func(_s, fmt, ##args); \
})
static void
@@ -98,8 +116,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
stats = ref_tracker_get_stats(dir, display_limit);
if (IS_ERR(stats)) {
- pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n",
- dir->name, dir, stats);
+ pr_ostream(s, "%s%s@%p: couldn't get stats, error %pe\n",
+ s->prefix, dir->name, dir, stats);
return;
}
@@ -109,14 +127,15 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
stack = stats->stacks[i].stack_handle;
if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4))
sbuf[0] = 0;
- pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir,
- stats->stacks[i].count, stats->total, sbuf);
+ pr_ostream(s, "%s%s@%p has %d/%d users at\n%s\n", s->prefix,
+ dir->name, dir, stats->stacks[i].count,
+ stats->total, sbuf);
skipped -= stats->stacks[i].count;
}
if (skipped)
- pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n",
- dir->name, dir, skipped, stats->total);
+ pr_ostream(s, "%s%s@%p skipped reports about %d/%d users.\n",
+ s->prefix, dir->name, dir, skipped, stats->total);
kfree(sbuf);
@@ -126,7 +145,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir,
unsigned int display_limit)
{
- struct ostream os = {};
+ struct ostream os = { .func = pr_ostream_log,
+ .prefix = "ref_tracker: " };
__ref_tracker_dir_pr_ostream(dir, display_limit, &os);
}
@@ -145,7 +165,10 @@ EXPORT_SYMBOL(ref_tracker_dir_print);
int ref_tracker_dir_snprint(struct ref_tracker_dir *dir, char *buf, size_t size)
{
- struct ostream os = { .buf = buf, .size = size };
+ struct ostream os = { .func = pr_ostream_buf,
+ .prefix = "ref_tracker: ",
+ .buf = buf,
+ .size = size };
unsigned long flags;
spin_lock_irqsave(&dir->lock, flags);
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (2 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream() Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:27 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Jeff Layton
` (4 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
Allow pr_ostream to also output directly to a seq_file without an
intermediate buffer.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
lib/ref_tracker.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index b6e0a87dd75eddef4d504419c0cf398ea65c19d8..4857bcb6d4bf557a0089f51328e75e8209e959e6 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -8,6 +8,7 @@
#include <linux/slab.h>
#include <linux/stacktrace.h>
#include <linux/stackdepot.h>
+#include <linux/seq_file.h>
#define REF_TRACKER_STACK_ENTRIES 16
#define STACK_BUF_SIZE 1024
@@ -70,6 +71,7 @@ struct ostream {
void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...);
char *prefix;
char *buf;
+ struct seq_file *seq;
int size, used;
};
@@ -93,6 +95,15 @@ static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *fmt, .
stream->used += min(ret, len);
}
+static void __ostream_printf pr_ostream_seq(struct ostream *stream, char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ seq_vprintf(stream->seq, fmt, args);
+ va_end(args);
+}
+
#define pr_ostream(stream, fmt, args...) \
({ \
struct ostream *_s = (stream); \
@@ -302,6 +313,20 @@ EXPORT_SYMBOL_GPL(ref_tracker_free);
#ifdef CONFIG_DEBUG_FS
#include <linux/debugfs.h>
+static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *seq)
+{
+ struct ostream os = { .func = pr_ostream_seq,
+ .prefix = "",
+ .seq = seq };
+ unsigned long flags;
+
+ spin_lock_irqsave(&dir->lock, flags);
+ __ref_tracker_dir_pr_ostream(dir, 16, &os);
+ spin_unlock_irqrestore(&dir->lock, flags);
+
+ return os.used;
+}
+
static int __init ref_tracker_debugfs_init(void)
{
ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL);
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (3 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:29 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field Jeff Layton
` (3 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
Currently, there is no convenient way to see the info that the
ref_tracking infrastructure collects. Add a new function that other
subsystems can optionally call to update the name field in the
ref_tracker_dir and register a corresponding seq_file for it in the
top-level ref_tracker directory.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
include/linux/ref_tracker.h | 13 +++++++++++
lib/ref_tracker.c | 57 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+)
diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h
index 8eac4f3d52547ccbaf9dcd09962ce80d26fbdff8..77a55a32c067216fa02ba349498f53bd289aee0c 100644
--- a/include/linux/ref_tracker.h
+++ b/include/linux/ref_tracker.h
@@ -5,6 +5,7 @@
#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/stackdepot.h>
+#include <linux/seq_file.h>
struct ref_tracker;
@@ -17,6 +18,9 @@ struct ref_tracker_dir {
bool dead;
struct list_head list; /* List of active trackers */
struct list_head quarantine; /* List of dead trackers */
+#ifdef CONFIG_DEBUG_FS
+ struct dentry *dentry;
+#endif
char name[32];
#endif
};
@@ -34,10 +38,15 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir,
dir->dead = false;
refcount_set(&dir->untracked, 1);
refcount_set(&dir->no_tracker, 1);
+#ifdef CONFIG_DEBUG_FS
+ dir->dentry = NULL;
+#endif
strscpy(dir->name, name, sizeof(dir->name));
stack_depot_init();
}
+void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name);
+
void ref_tracker_dir_exit(struct ref_tracker_dir *dir);
void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir,
@@ -62,6 +71,10 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir,
{
}
+static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name)
+{
+}
+
static inline void ref_tracker_dir_exit(struct ref_tracker_dir *dir)
{
}
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index 4857bcb6d4bf557a0089f51328e75e8209e959e6..d53105b959c122a85558cbe84551726f6429e08e 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -31,6 +31,14 @@ struct ref_tracker_dir_stats {
} stacks[];
};
+#ifdef CONFIG_DEBUG_FS
+static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir);
+#else
+static inline void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir)
+{
+}
+#endif
+
static struct ref_tracker_dir_stats *
ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit)
{
@@ -197,6 +205,7 @@ void ref_tracker_dir_exit(struct ref_tracker_dir *dir)
bool leak = false;
dir->dead = true;
+ ref_tracker_debugfs_remove(dir);
spin_lock_irqsave(&dir->lock, flags);
list_for_each_entry_safe(tracker, n, &dir->quarantine, head) {
list_del(&tracker->head);
@@ -327,6 +336,54 @@ static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_fil
return os.used;
}
+static int ref_tracker_debugfs_show(struct seq_file *f, void *v)
+{
+ struct ref_tracker_dir *dir = f->private;
+
+ return ref_tracker_dir_seq_print(dir, f);
+}
+
+static int ref_tracker_debugfs_open(struct inode *inode, struct file *filp)
+{
+ struct ref_tracker_dir *dir = inode->i_private;
+
+ return single_open(filp, ref_tracker_debugfs_show, dir);
+}
+
+static const struct file_operations ref_tracker_debugfs_fops = {
+ .owner = THIS_MODULE,
+ .open = ref_tracker_debugfs_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
+/**
+ * ref_tracker_dir_debugfs - create debugfs file for ref_tracker_dir
+ * @dir: ref_tracker_dir to finalize
+ * @name: updated name of the ref_tracker_dir
+ *
+ * In some cases, the name given to a ref_tracker_dir is based on incomplete information,
+ * and may not be unique. Call this to finalize the name of @dir, and create a debugfs
+ * file for it. If the name is not unique, a warning will be emitted but it is not fatal
+ * to the tracker.
+ */
+void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name)
+{
+ dir->dentry = debugfs_create_file(name, S_IFREG | 0400,
+ ref_tracker_debug_dir, dir,
+ &ref_tracker_debugfs_fops);
+ if (IS_ERR(dir->dentry))
+ pr_warn("ref_tracker: unable to create debugfs file for %s: %pe\n",
+ name, dir->dentry);
+}
+EXPORT_SYMBOL(ref_tracker_dir_debugfs);
+
+static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir)
+{
+ debugfs_remove(dir->dentry);
+}
+
static int __init ref_tracker_debugfs_init(void)
{
ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL);
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (4 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:29 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Jeff Layton
` (2 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
Currently it's 32 bytes, but with the need to move to unique names for
debugfs files, that won't be enough. Move to a 64 byte name field.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
include/linux/ref_tracker.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h
index 77a55a32c067216fa02ba349498f53bd289aee0c..e47e81fd048812251eca2820a8b1e89f5750de3a 100644
--- a/include/linux/ref_tracker.h
+++ b/include/linux/ref_tracker.h
@@ -7,6 +7,8 @@
#include <linux/stackdepot.h>
#include <linux/seq_file.h>
+#define REF_TRACKER_NAMESZ 64
+
struct ref_tracker;
struct ref_tracker_dir {
@@ -21,7 +23,7 @@ struct ref_tracker_dir {
#ifdef CONFIG_DEBUG_FS
struct dentry *dentry;
#endif
- char name[32];
+ char name[REF_TRACKER_NAMESZ];
#endif
};
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (5 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:30 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Jeff Layton
2025-04-17 19:32 ` [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Andrew Lunn
8 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
After assigning the inode number to the namespace, use it to create a
unique name for each netns refcount tracker and register the debugfs
files for them.
init_net is registered before the ref_tracker dir is created, so add a
late_initcall() to register its files.
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
net/core/net_namespace.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 4303f2a4926243e2c0ff0c0387383cd8e0658019..cc8c3543e79b2b6948fdbe4080639e3dfbabda15 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -761,12 +761,44 @@ struct net *get_net_ns_by_pid(pid_t pid)
}
EXPORT_SYMBOL_GPL(get_net_ns_by_pid);
+#ifdef CONFIG_NET_NS_REFCNT_TRACKER
+static void net_ns_net_debugfs(struct net *net)
+{
+ char name[REF_TRACKER_NAMESZ];
+ size_t len;
+
+ len = snprintf(name, sizeof(name), "netns-%u-refcnt", net->ns.inum);
+ if (len < sizeof(name))
+ ref_tracker_dir_debugfs(&net->refcnt_tracker, name);
+
+ len = snprintf(name, sizeof(name), "netns-%u-notrefcnt", net->ns.inum);
+ if (len < sizeof(name))
+ ref_tracker_dir_debugfs(&net->notrefcnt_tracker, name);
+}
+
+static int __init init_net_debugfs(void)
+{
+ net_ns_net_debugfs(&init_net);
+ return 0;
+}
+late_initcall(init_net_debugfs);
+#else
+static void net_ns_net_debugfs(struct net *net)
+{
+}
+#endif
+
static __net_init int net_ns_net_init(struct net *net)
{
+ int ret;
+
#ifdef CONFIG_NET_NS
net->ns.ops = &netns_operations;
#endif
- return ns_alloc_inum(&net->ns);
+ ret = ns_alloc_inum(&net->ns);
+ if (!ret)
+ net_ns_net_debugfs(net);
+ return ret;
}
static __net_exit void net_ns_net_exit(struct net *net)
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (6 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Jeff Layton
@ 2025-04-17 13:11 ` Jeff Layton
2025-04-17 19:31 ` Andrew Lunn
2025-04-17 21:17 ` Kuniyuki Iwashima
2025-04-17 19:32 ` [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Andrew Lunn
8 siblings, 2 replies; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 13:11 UTC (permalink / raw)
To: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman
Cc: Kuniyuki Iwashima, Qasim Ijaz, Nathan Chancellor, Andrew Lunn,
linux-kernel, netdev, Jeff Layton
As a nearly-final step in register_netdevice(), finalize the name in the
refcount tracker, and register a debugfs file for it.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
net/core/dev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 2f7f5fd9ffec7c0fc219eb6ba57d57a55134186e..19fa4f2caba28cadf55ed1655b69b6eb1170d799 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -10834,8 +10834,9 @@ static void netdev_free_phy_link_topology(struct net_device *dev)
*/
int register_netdevice(struct net_device *dev)
{
- int ret;
struct net *net = dev_net(dev);
+ char name[REF_TRACKER_NAMESZ];
+ int ret;
BUILD_BUG_ON(sizeof(netdev_features_t) * BITS_PER_BYTE <
NETDEV_FEATURE_COUNT);
@@ -10994,6 +10995,9 @@ int register_netdevice(struct net_device *dev)
dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL);
+ /* Register debugfs file for the refcount tracker */
+ if (snprintf(name, sizeof(name), "netdev-%s@%p", dev->name, dev) < sizeof(name))
+ ref_tracker_dir_debugfs(&dev->refcnt_tracker, name);
out:
return ret;
--
2.49.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output
2025-04-17 13:11 ` [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
@ 2025-04-17 13:25 ` Thomas Weißschuh
0 siblings, 0 replies; 21+ messages in thread
From: Thomas Weißschuh @ 2025-04-17 13:25 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, Andrew Lunn, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:04AM -0400, Jeff Layton wrote:
> As Thomas Weißschuh points out [1], it is now preferable to use %p
> instead of hashed pointers with printk(), since raw pointers should no
> longer be leaked into the kernel log. Change the ref_tracker
> infrastructure to use %p instead of %pK in its formats.
>
> [1]: https://lore.kernel.org/netdev/20250414-restricted-pointers-net-v1-0-12af0ce46cdd@linutronix.de/
>
> Cc: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Thanks,
Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
> lib/ref_tracker.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
> index cf5609b1ca79361763abe5a3a98484a3ee591ff2..de71439e12a3bab6456910986fa611dfbdd97980 100644
> --- a/lib/ref_tracker.c
> +++ b/lib/ref_tracker.c
> @@ -96,7 +96,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
>
> stats = ref_tracker_get_stats(dir, display_limit);
> if (IS_ERR(stats)) {
> - pr_ostream(s, "%s@%pK: couldn't get stats, error %pe\n",
> + pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n",
> dir->name, dir, stats);
> return;
> }
> @@ -107,13 +107,13 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
> stack = stats->stacks[i].stack_handle;
> if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4))
> sbuf[0] = 0;
> - pr_ostream(s, "%s@%pK has %d/%d users at\n%s\n", dir->name, dir,
> + pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir,
> stats->stacks[i].count, stats->total, sbuf);
> skipped -= stats->stacks[i].count;
> }
>
> if (skipped)
> - pr_ostream(s, "%s@%pK skipped reports about %d/%d users.\n",
> + pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n",
> dir->name, dir, skipped, stats->total);
>
> kfree(sbuf);
>
> --
> 2.49.0
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker
2025-04-17 13:11 ` [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Jeff Layton
@ 2025-04-17 19:24 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:24 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:05AM -0400, Jeff Layton wrote:
> Add a new "ref_tracker" directory in debugfs. Each individual refcount
> tracker can register files under there to display info about
> currently-held references.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream()
2025-04-17 13:11 ` [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream() Jeff Layton
@ 2025-04-17 19:26 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:26 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:06AM -0400, Jeff Layton wrote:
> In a later patch, we'll be adding a 3rd mechanism for outputting
> ref_tracker info via seq_file. Instead of a conditional, have the caller
> set a pointer to an output function in struct ostream. As part of this,
> the log prefix must be explicitly passed in, as it's too late for the
> pr_fmt macro.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file
2025-04-17 13:11 ` [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Jeff Layton
@ 2025-04-17 19:27 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:27 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:07AM -0400, Jeff Layton wrote:
> Allow pr_ostream to also output directly to a seq_file without an
> intermediate buffer.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir
2025-04-17 13:11 ` [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Jeff Layton
@ 2025-04-17 19:29 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:29 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:08AM -0400, Jeff Layton wrote:
> Currently, there is no convenient way to see the info that the
> ref_tracking infrastructure collects. Add a new function that other
> subsystems can optionally call to update the name field in the
> ref_tracker_dir and register a corresponding seq_file for it in the
> top-level ref_tracker directory.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field
2025-04-17 13:11 ` [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field Jeff Layton
@ 2025-04-17 19:29 ` Andrew Lunn
2025-04-17 21:27 ` Jeff Layton
0 siblings, 1 reply; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:29 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:09AM -0400, Jeff Layton wrote:
> Currently it's 32 bytes, but with the need to move to unique names for
> debugfs files, that won't be enough. Move to a 64 byte name field.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking
2025-04-17 13:11 ` [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Jeff Layton
@ 2025-04-17 19:30 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:30 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:10AM -0400, Jeff Layton wrote:
> After assigning the inode number to the namespace, use it to create a
> unique name for each netns refcount tracker and register the debugfs
> files for them.
>
> init_net is registered before the ref_tracker dir is created, so add a
> late_initcall() to register its files.
>
> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker
2025-04-17 13:11 ` [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Jeff Layton
@ 2025-04-17 19:31 ` Andrew Lunn
2025-04-17 21:17 ` Kuniyuki Iwashima
1 sibling, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:31 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 09:11:11AM -0400, Jeff Layton wrote:
> As a nearly-final step in register_netdevice(), finalize the name in the
> refcount tracker, and register a debugfs file for it.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
` (7 preceding siblings ...)
2025-04-17 13:11 ` [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Jeff Layton
@ 2025-04-17 19:32 ` Andrew Lunn
8 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 19:32 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev, Thomas Weißschuh
On Thu, Apr 17, 2025 at 09:11:03AM -0400, Jeff Layton wrote:
> I had previously sent some patches to add debugfs files for the net
> namespace refcount trackers, but Andrew convinced me to make this more
> generic and better-integrated into the ref_tracker infrastructure.
>
> This adds a new ref_tracker_dir_debugfs() call that subsystems can call
> to finalize the name of their dir and register a debugfs file for it.
> The last two patches add these calls for the netns and netdev
> ref_trackers.
Thanks for reworking this to make is more subsystem generic. I hope
the GPU people also find it useful.
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker
2025-04-17 13:11 ` [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Jeff Layton
2025-04-17 19:31 ` Andrew Lunn
@ 2025-04-17 21:17 ` Kuniyuki Iwashima
1 sibling, 0 replies; 21+ messages in thread
From: Kuniyuki Iwashima @ 2025-04-17 21:17 UTC (permalink / raw)
To: jlayton
Cc: akpm, andrew, davem, edumazet, horms, kuba, kuniyu, linux-kernel,
nathan, netdev, pabeni, qasdev00
From: Jeff Layton <jlayton@kernel.org>
Date: Thu, 17 Apr 2025 09:11:11 -0400
> As a nearly-final step in register_netdevice(), finalize the name in the
> refcount tracker, and register a debugfs file for it.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field
2025-04-17 19:29 ` Andrew Lunn
@ 2025-04-17 21:27 ` Jeff Layton
2025-04-17 21:54 ` Andrew Lunn
0 siblings, 1 reply; 21+ messages in thread
From: Jeff Layton @ 2025-04-17 21:27 UTC (permalink / raw)
To: Andrew Lunn
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, 2025-04-17 at 21:29 +0200, Andrew Lunn wrote:
> On Thu, Apr 17, 2025 at 09:11:09AM -0400, Jeff Layton wrote:
> > Currently it's 32 bytes, but with the need to move to unique names for
> > debugfs files, that won't be enough. Move to a 64 byte name field.
> >
> > Signed-off-by: Jeff Layton <jlayton@kernel.org>
>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
>
Thanks for the review!
It occurs to me that we don't technically need this patch, since
ref_tracker_dir_debugfs() doesn't overwrite dir->name in this version.
Perhaps we should drop this patch, or I could define the
REF_TRACKER_NAMESZ constant and just leave it at 32?
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field
2025-04-17 21:27 ` Jeff Layton
@ 2025-04-17 21:54 ` Andrew Lunn
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2025-04-17 21:54 UTC (permalink / raw)
To: Jeff Layton
Cc: Andrew Morton, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Kuniyuki Iwashima, Qasim Ijaz,
Nathan Chancellor, linux-kernel, netdev
On Thu, Apr 17, 2025 at 05:27:05PM -0400, Jeff Layton wrote:
> On Thu, 2025-04-17 at 21:29 +0200, Andrew Lunn wrote:
> > On Thu, Apr 17, 2025 at 09:11:09AM -0400, Jeff Layton wrote:
> > > Currently it's 32 bytes, but with the need to move to unique names for
> > > debugfs files, that won't be enough. Move to a 64 byte name field.
> > >
> > > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> >
> > Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> >
>
>
> Thanks for the review!
>
> It occurs to me that we don't technically need this patch, since
> ref_tracker_dir_debugfs() doesn't overwrite dir->name in this version.
I had not noticed that. I don't know if that is good or bad. Two
different names for the same thing. Nice thing is, this is debugfs, so
we are not setting an ABI. We can change this any time we want.
> Perhaps we should drop this patch, or I could define the
> REF_TRACKER_NAMESZ constant and just leave it at 32?
Having the constant might make future changes easier to make, avoid
having to find the hard coded 32.
Andrew
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2025-04-17 21:55 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-17 13:11 [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Jeff Layton
2025-04-17 13:11 ` [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Jeff Layton
2025-04-17 13:25 ` Thomas Weißschuh
2025-04-17 13:11 ` [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Jeff Layton
2025-04-17 19:24 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream() Jeff Layton
2025-04-17 19:26 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Jeff Layton
2025-04-17 19:27 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Jeff Layton
2025-04-17 19:29 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field Jeff Layton
2025-04-17 19:29 ` Andrew Lunn
2025-04-17 21:27 ` Jeff Layton
2025-04-17 21:54 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Jeff Layton
2025-04-17 19:30 ` Andrew Lunn
2025-04-17 13:11 ` [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Jeff Layton
2025-04-17 19:31 ` Andrew Lunn
2025-04-17 21:17 ` Kuniyuki Iwashima
2025-04-17 19:32 ` [PATCH v3 0/8] ref_tracker: add ability to register a debugfs file for a ref_tracker_dir Andrew Lunn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®