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

From: Vlastimil Babka
Date: Tue Jun 01 2021 - 08:14:14 EST


On 6/1/21 1:08 PM, kernel test robot wrote:
> Hi Faiyaz,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [also build test ERROR on v5.13-rc4]
> [cannot apply to hnaz-linux-mm/master next-20210601]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/0day-ci/linux/commits/Faiyaz-Mohammed/mm-slub-move-sysfs-slab-alloc-free-interfaces-to-debugfs/20210601-180903
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git c2131f7e73c9e9365613e323d65c7b9e5b910f56
> config: i386-tinyconfig (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
> reproduce (this is a W=1 build):
> # https://github.com/0day-ci/linux/commit/9540acc4691d680b7124d8daa1a2eb98a97ee19a
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review Faiyaz-Mohammed/mm-slub-move-sysfs-slab-alloc-free-interfaces-to-debugfs/20210601-180903
> git checkout 9540acc4691d680b7124d8daa1a2eb98a97ee19a
> # save the attached .config to linux build tree
> make W=1 ARCH=i386
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All errors (new ones prefixed by >>):
>
> mm/slab_common.c: In function 'slab_caches_to_rcu_destroy_workfn':
>>> mm/slab_common.c:452:3: error: implicit declaration of function 'debugfs_slab_release' [-Werror=implicit-function-declaration]
> 452 | debugfs_slab_release(s);
> | ^~~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors

Oh, right, CONFIG_SLOB.
How about moving the ifdef-ed declaration from slub-def.h to mm/slab.h and
discarding the slab-def.h empty one. That will take care of SLOB too.

> vim +/debugfs_slab_release +452 mm/slab_common.c
>
> 427
> 428 static void slab_caches_to_rcu_destroy_workfn(struct work_struct *work)
> 429 {
> 430 LIST_HEAD(to_destroy);
> 431 struct kmem_cache *s, *s2;
> 432
> 433 /*
> 434 * On destruction, SLAB_TYPESAFE_BY_RCU kmem_caches are put on the
> 435 * @slab_caches_to_rcu_destroy list. The slab pages are freed
> 436 * through RCU and the associated kmem_cache are dereferenced
> 437 * while freeing the pages, so the kmem_caches should be freed only
> 438 * after the pending RCU operations are finished. As rcu_barrier()
> 439 * is a pretty slow operation, we batch all pending destructions
> 440 * asynchronously.
> 441 */
> 442 mutex_lock(&slab_mutex);
> 443 list_splice_init(&slab_caches_to_rcu_destroy, &to_destroy);
> 444 mutex_unlock(&slab_mutex);
> 445
> 446 if (list_empty(&to_destroy))
> 447 return;
> 448
> 449 rcu_barrier();
> 450
> 451 list_for_each_entry_safe(s, s2, &to_destroy, list) {
> > 452 debugfs_slab_release(s);
> 453 kfence_shutdown_cache(s);
> 454 #ifdef SLAB_SUPPORTS_SYSFS
> 455 sysfs_slab_release(s);
> 456 #else
> 457 slab_kmem_cache_release(s);
> 458 #endif
> 459 }
> 460 }
> 461
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
>