[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251216035518.4037331-17-viro@zeniv.linux.org.uk>
Date: Tue, 16 Dec 2025 03:54:35 +0000
From: Al Viro <viro@...iv.linux.org.uk>
To: linux-fsdevel@...r.kernel.org
Cc: torvalds@...ux-foundation.org,
brauner@...nel.org,
jack@...e.cz,
mjguzik@...il.com,
paul@...l-moore.com,
axboe@...nel.dk,
audit@...r.kernel.org,
io-uring@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [RFC PATCH v3 16/59] fs: hide names_cache behind runtime const machinery
From: Mateusz Guzik <mjguzik@...il.com>
s/names_cachep/names_cache/ for consistency with dentry cache.
Signed-off-by: Mateusz Guzik <mjguzik@...il.com>
Signed-off-by: Al Viro <viro@...iv.linux.org.uk>
---
fs/namei.c | 16 ++++++++++------
include/asm-generic/vmlinux.lds.h | 3 ++-
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/fs/namei.c b/fs/namei.c
index 9053aeee05d5..15e14802cabb 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -41,6 +41,8 @@
#include <linux/init_task.h>
#include <linux/uaccess.h>
+#include <asm/runtime-const.h>
+
#include "internal.h"
#include "mount.h"
@@ -124,23 +126,25 @@
*/
/* SLAB cache for struct filename instances */
-static struct kmem_cache *names_cachep __ro_after_init;
+static struct kmem_cache *__names_cache __ro_after_init;
+#define names_cache runtime_const_ptr(__names_cache)
void __init filename_init(void)
{
- names_cachep = kmem_cache_create_usercopy("names_cache", sizeof(struct filename), 0,
- SLAB_HWCACHE_ALIGN|SLAB_PANIC, offsetof(struct filename, iname),
- EMBEDDED_NAME_MAX, NULL);
+ __names_cache = kmem_cache_create_usercopy("names_cache", sizeof(struct filename), 0,
+ SLAB_HWCACHE_ALIGN|SLAB_PANIC, offsetof(struct filename, iname),
+ EMBEDDED_NAME_MAX, NULL);
+ runtime_const_init(ptr, __names_cache);
}
static inline struct filename *alloc_filename(void)
{
- return kmem_cache_alloc(names_cachep, GFP_KERNEL);
+ return kmem_cache_alloc(names_cache, GFP_KERNEL);
}
static inline void free_filename(struct filename *p)
{
- kmem_cache_free(names_cachep, p);
+ kmem_cache_free(names_cache, p);
}
static inline void initname(struct filename *name)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 8ca130af301f..eeb070f330bd 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -972,7 +972,8 @@
#define RUNTIME_CONST_VARIABLES \
RUNTIME_CONST(shift, d_hash_shift) \
RUNTIME_CONST(ptr, dentry_hashtable) \
- RUNTIME_CONST(ptr, __dentry_cache)
+ RUNTIME_CONST(ptr, __dentry_cache) \
+ RUNTIME_CONST(ptr, __names_cache)
/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */
#define KUNIT_TABLE() \
--
2.47.3
Powered by blists - more mailing lists