[RFC PATCH 04/16] mm: Define function to create a dir for each online node

From: Juan Yescas

Date: Thu Jul 23 2026 - 03:59:35 EST


This change creates a directory for each online node
in the system.

Signed-off-by: Juan Yescas <jyescas@xxxxxxxxxx>
---
mm/page_alloc_hogger.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

diff --git a/mm/page_alloc_hogger.c b/mm/page_alloc_hogger.c
index 52ccc6e99eb5..880de1a6e9ea 100644
--- a/mm/page_alloc_hogger.c
+++ b/mm/page_alloc_hogger.c
@@ -89,6 +89,7 @@
#include <linux/gfp_types.h>
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/nodemask.h>
#include <linux/printk.h>
#include <linux/slab.h>

@@ -125,6 +126,27 @@ struct page_alloc {
struct kmem_cache *req_alloc_cache;
struct kmem_cache *page_alloc_cache;

+/**
+ * create_nodes_subdirs() - Creates a directory for each online node in the
+ * system. Once that the node directory is created, it creates a directory for
+ * each zone in the node.
+ */
+static inline int create_nodes_subdirs(struct dentry *mmdir)
+{
+ struct dentry *nodedir;
+ int node_idx;
+ char dirname[12];
+
+ for_each_online_node(node_idx) {
+ snprintf(dirname, sizeof(dirname), "node-%d", node_idx);
+ nodedir = debugfs_create_dir(dirname, mmdir);
+ if (IS_ERR(nodedir))
+ return PTR_ERR(nodedir);
+ }
+
+ return 0;
+}
+
static int __init page_alloc_hogger_debugfs_init(void)
{
int ret;
@@ -154,8 +176,14 @@ static int __init page_alloc_hogger_debugfs_init(void)
goto clean_page_alloc_cache;
}

+ ret = create_nodes_subdirs(mmdir);
+ if (ret)
+ goto clean_dir;
+
return 0;

+clean_dir:
+ debugfs_remove_recursive(mmdir);

clean_page_alloc_cache:
kmem_cache_destroy(page_alloc_cache);
@@ -166,6 +194,7 @@ static int __init page_alloc_hogger_debugfs_init(void)
error_exit:
return ret;
}
+
static void __exit page_alloc_hogger_debugfs_exit(void)
{
debugfs_remove_recursive(mmdir);
--
2.55.0.229.g6434b31f56-goog