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

From: Faiyaz Mohammed
Date: Tue Jun 01 2021 - 08:16:02 EST




On 6/1/2021 5:44 PM, Vlastimil Babka wrote:
> 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.
>

Yes, doing the same.
>> 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
>>
>