• Sergey Senozhatsky's avatar
    zsmalloc: use unique zsmalloc caches names · 6040f650
    Sergey Senozhatsky authored
    Each zsmalloc pool maintains several named kmem-caches for zs_handle-s and
    zspage-s.  On a system with multiple zsmalloc pools and CONFIG_DEBUG_VM
    this triggers kmem_cache_sanity_check():
    
      kmem_cache of name 'zspage' already exists
      WARNING: at mm/slab_common.c:108 do_kmem_cache_create_usercopy+0xb5/0x310
      ...
    
      kmem_cache of name 'zs_handle' already exists
      WARNING: at mm/slab_common.c:108 do_kmem_cache_create_usercopy+0xb5/0x310
      ...
    
    We provide zram device name when init its zsmalloc pool, so we can use
    that same name for zsmalloc caches and, hence, create unique names that
    can easily be linked to zram device that has created them.
    
    So instead of having this
    
    cat /proc/slabinfo
    slabinfo - version: 2.1
    zspage                46     46    ...
    zs_handle            128    128    ...
    zspage             34270  34270    ...
    zs_handle          34816  34816    ...
    zspage                 0      0    ...
    zs_handle              0      0    ...
    
    We now have this
    
    cat /proc/slabinfo
    slabinfo - version: 2.1
    zspage-zram2          46     46    ...
    zs_handle-zram2      128    128    ...
    zspage-zram0       34270  34270    ...
    zs_handle-zram0    34816  34816    ...
    zspage-zram1           0      0    ...
    zs_handle-zram1        0      0    ...
    
    Link: https://lkml.kernel.org/r/20240906035103.2435557-1-senozhatsky@chromium.org
    Fixes: 2e40e163 ("zsmalloc: decouple handle and object")
    Signed-off-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    6040f650
zsmalloc.c 55.4 KB