Thread (8 messages) 8 messages, 4 authors, 2021-05-18

Re: [PATCH v5] mm: slub: move sysfs slab alloc/free interfaces to debugfs

From: Greg KH <hidden>
Date: 2021-05-18 13:33:50
Also in: lkml

On Tue, May 18, 2021 at 06:24:48PM +0530, Faiyaz Mohammed wrote:

On 5/7/2021 5:18 PM, Greg KH wrote:
quoted
On Thu, May 06, 2021 at 03:52:03PM +0530, Faiyaz Mohammed wrote:
quoted
alloc_calls and free_calls implementation in sysfs have two issues,
one is PAGE_SIZE limitiation of sysfs and other is it does not adhere
to "one value per file" rule.

To overcome this issues, move the alloc_calls and free_calls implemeation
to debugfs.

Rename the alloc_calls/free_calls to alloc_traces/free_traces,
to be inline with what it does.

Signed-off-by: Faiyaz Mohammed <redacted>
---
 include/linux/slub_def.h |  10 ++
 mm/slab_common.c         |   9 ++
 mm/slub.c                | 362 ++++++++++++++++++++++++++++++++++++-----------
 3 files changed, 299 insertions(+), 82 deletions(-)
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index dcde82a..f8c268d 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -110,6 +110,9 @@ struct kmem_cache {
 #ifdef CONFIG_SYSFS
 	struct kobject kobj;	/* For sysfs */
 #endif
+#ifdef CONFIG_SLUB_DEBUG
+	struct dentry *slab_cache_dentry;
+#endif
 #ifdef CONFIG_SLAB_FREELIST_HARDENED
 	unsigned long random;
 #endif
@@ -159,6 +162,13 @@ static inline void sysfs_slab_release(struct kmem_cache *s)
 }
 #endif
 
+#ifdef CONFIG_DEBUG_FS
+void debugfs_slab_release(struct kmem_cache *);
+#else
+static inline void debugfs_slab_release(struct kmem_cache *s)
+{
+}
+#endif
 void object_err(struct kmem_cache *s, struct page *page,
 		u8 *object, char *reason);
 
diff --git a/mm/slab_common.c b/mm/slab_common.c
index f8833d3..f3afe6b 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -445,6 +445,9 @@ static void slab_caches_to_rcu_destroy_workfn(struct work_struct *work)
 #else
 		slab_kmem_cache_release(s);
 #endif
+#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_SLUB)
+		debugfs_slab_release(s);
+#endif
If you write your .h files correctly, no need for #ifdef in a .c file.

Please fix up.
fixed in new patch and used the single #ifded because
debugfs_slab_release declaration is there in slub_def.h and slab_common
is used for both slab and slub.
Like SLAB_SUPPORTS_SYSFS, SLAB_SUPPORT_DEBUGFS will be not defined if
slab config is used.
No, you should have have any #ifdef at all, as I point out in that
review.

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help