Re: [PATCH v7] mm: slub: move sysfs slab alloc/free interfaces to debugfs
From: Greg KH <gregkh@linuxfoundation.org>
Date: 2021-05-25 07:53:30
Also in:
lkml
On Tue, May 25, 2021 at 01:08:05PM +0530, Faiyaz Mohammed wrote:
quoted hunk ↗ jump to hunk
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. Reported-by: kernel test robot <redacted> Reported-by: Dan Carpenter <redacted> Signed-off-by: Faiyaz Mohammed <redacted> --- changes in V7: - Drop the older alloc_calls and free_calls interface. changes in v6: - https://lore.kernel.org/linux-mm/1621341949-26762-1-git-send-email-faiyazm@codeaurora.org/ (local) changes in v5: - https://lore.kernel.org/linux-mm/1620296523-21922-1-git-send-email-faiyazm@codeaurora.org/ (local) changes in v4: - https://lore.kernel.org/linux-mm/1618583239-18124-1-git-send-email-faiyazm@codeaurora.org/ (local) changes in v3: - https://lore.kernel.org/linux-mm/1617712064-12264-1-git-send-email-faiyazm@codeaurora.org/ (local) changes in v2: - https://lore.kernel.org/linux-mm/3ac1d3e6-6207-96ad-16a1-0f5139d8b2b5@codeaurora.org/ (local) changes in v1: - https://lore.kernel.org/linux-mm/1610443287-23933-1-git-send-email-faiyazm@codeaurora.org/ (local) include/linux/slub_def.h | 8 ++ mm/slab_common.c | 9 ++ mm/slub.c | 353 ++++++++++++++++++++++++++++++++++------------- 3 files changed, 276 insertions(+), 94 deletions(-)diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index dcde82a..b413ebe 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h@@ -159,6 +159,14 @@ static inline void sysfs_slab_release(struct kmem_cache *s) } #endif +#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_SLUB_DEBUG) +#define SLAB_SUPPORTS_DEBUGFS +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 a4a5714..873dd79 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c@@ -455,6 +455,9 @@ static void slab_caches_to_rcu_destroy_workfn(struct work_struct *work) #else slab_kmem_cache_release(s); #endif +#ifdef SLAB_SUPPORTS_DEBUGFS + debugfs_slab_release(s); +#endif
Why do you need these #ifdef if your slub_dev.h file already provides an "empty" function for this?
quoted hunk ↗ jump to hunk
} }@@ -472,6 +475,9 @@ static int shutdown_cache(struct kmem_cache *s) #ifdef SLAB_SUPPORTS_SYSFS sysfs_slab_unlink(s); #endif +#ifdef SLAB_SUPPORTS_DEBUGFS + debugfs_slab_release(s); +#endif
Same here.
quoted hunk ↗ jump to hunk
list_add_tail(&s->list, &slab_caches_to_rcu_destroy); schedule_work(&slab_caches_to_rcu_destroy_work); } else {@@ -482,6 +488,9 @@ static int shutdown_cache(struct kmem_cache *s) #else slab_kmem_cache_release(s); #endif +#ifdef SLAB_SUPPORTS_DEBUGFS + debugfs_slab_release(s); +#endif
And here. What is wrong with your .h file that keeps the need for #ifdef in the .c file? I thought I've asked about this a number of times in the past, what am I missing? thanks, greg k-h