Commit 149b6fa2 authored by Vlastimil Babka's avatar Vlastimil Babka

mm, slob: rename CONFIG_SLOB to CONFIG_SLOB_DEPRECATED

As explained in [1], we would like to remove SLOB if possible.

- There are no known users that need its somewhat lower memory footprint
  so much that they cannot handle SLUB (after some modifications by the
  previous patches) instead.

- It is an extra maintenance burden, and a number of features are
  incompatible with it.

- It blocks the API improvement of allowing kfree() on objects allocated
  via kmem_cache_alloc().

As the first step, rename the CONFIG_SLOB option in the slab allocator
configuration choice to CONFIG_SLOB_DEPRECATED. Add CONFIG_SLOB
depending on CONFIG_SLOB_DEPRECATED as an internal option to avoid code
churn. This will cause existing .config files and defconfigs with
CONFIG_SLOB=y to silently switch to the default (and recommended
replacement) SLUB, while still allowing SLOB to be configured by anyone
that notices and needs it. But those should contact the slab maintainers
and linux-mm@kvack.org as explained in the updated help. With no valid
objections, the plan is to update the existing defconfigs to SLUB and
remove SLOB in a few cycles.

To make SLUB more suitable replacement for SLOB, a CONFIG_SLUB_TINY
option was introduced to limit SLUB's memory overhead.
There is a number of defconfigs specifying CONFIG_SLOB=y. As part of
this patch, update them to select CONFIG_SLUB and CONFIG_SLUB_TINY.

[1] https://lore.kernel.org/all/b35c3f82-f67b-2103-7d82-7a7ba7521439@suse.cz/

Cc: Russell King <linux@armlinux.org.uk>
Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Cc: Stafford Horne <shorne@gmail.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Conor Dooley <conor@kernel.org>
Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP1
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> # riscv k210
Acked-by: Arnd Bergmann <arnd@arndb.de> # arm
Acked-by: default avatarRoman Gushchin <roman.gushchin@linux.dev>
Acked-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
parent be784ba8
...@@ -14,7 +14,8 @@ CONFIG_ARCH_EDB7211=y ...@@ -14,7 +14,8 @@ CONFIG_ARCH_EDB7211=y
CONFIG_ARCH_P720T=y CONFIG_ARCH_P720T=y
CONFIG_AEABI=y CONFIG_AEABI=y
# CONFIG_COREDUMP is not set # CONFIG_COREDUMP is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -13,7 +13,8 @@ CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1" ...@@ -13,7 +13,8 @@ CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1"
CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE=y
CONFIG_PM=y CONFIG_PM=y
# CONFIG_SWAP is not set # CONFIG_SWAP is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -25,7 +25,8 @@ CONFIG_ARM_CLPS711X_CPUIDLE=y ...@@ -25,7 +25,8 @@ CONFIG_ARM_CLPS711X_CPUIDLE=y
CONFIG_JUMP_LABEL=y CONFIG_JUMP_LABEL=y
CONFIG_PARTITION_ADVANCED=y CONFIG_PARTITION_ADVANCED=y
# CONFIG_COREDUMP is not set # CONFIG_COREDUMP is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_BLOCK=y CONFIG_MTD_BLOCK=y
......
...@@ -42,7 +42,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y ...@@ -42,7 +42,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_PARTITION_ADVANCED=y CONFIG_PARTITION_ADVANCED=y
CONFIG_BINFMT_MISC=y CONFIG_BINFMT_MISC=y
# CONFIG_SWAP is not set # CONFIG_SWAP is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
......
...@@ -49,7 +49,8 @@ CONFIG_PARTITION_ADVANCED=y ...@@ -49,7 +49,8 @@ CONFIG_PARTITION_ADVANCED=y
CONFIG_LDM_PARTITION=y CONFIG_LDM_PARTITION=y
CONFIG_CMDLINE_PARTITION=y CONFIG_CMDLINE_PARTITION=y
CONFIG_BINFMT_MISC=y CONFIG_BINFMT_MISC=y
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
......
...@@ -19,7 +19,8 @@ CONFIG_FPE_NWFPE=y ...@@ -19,7 +19,8 @@ CONFIG_FPE_NWFPE=y
CONFIG_MODULES=y CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_UNLOAD=y
# CONFIG_SWAP is not set # CONFIG_SWAP is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
......
...@@ -26,7 +26,8 @@ CONFIG_MODULE_UNLOAD=y ...@@ -26,7 +26,8 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_BLOCK is not set # CONFIG_BLOCK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
CONFIG_NET=y CONFIG_NET=y
......
...@@ -10,7 +10,8 @@ CONFIG_EXPERT=y ...@@ -10,7 +10,8 @@ CONFIG_EXPERT=y
# CONFIG_AIO is not set # CONFIG_AIO is not set
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BLOCK is not set # CONFIG_BLOCK is not set
CONFIG_OPENRISC_BUILTIN_DTB="or1ksim" CONFIG_OPENRISC_BUILTIN_DTB="or1ksim"
......
...@@ -16,7 +16,8 @@ CONFIG_EXPERT=y ...@@ -16,7 +16,8 @@ CONFIG_EXPERT=y
# CONFIG_AIO is not set # CONFIG_AIO is not set
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BLOCK is not set # CONFIG_BLOCK is not set
CONFIG_OPENRISC_BUILTIN_DTB="simple_smp" CONFIG_OPENRISC_BUILTIN_DTB="simple_smp"
......
...@@ -25,7 +25,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y ...@@ -25,7 +25,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y CONFIG_EMBEDDED=y
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_MMU is not set # CONFIG_MMU is not set
CONFIG_SOC_CANAAN=y CONFIG_SOC_CANAAN=y
CONFIG_NONPORTABLE=y CONFIG_NONPORTABLE=y
......
...@@ -17,7 +17,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y ...@@ -17,7 +17,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y CONFIG_EMBEDDED=y
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_MMU is not set # CONFIG_MMU is not set
CONFIG_SOC_CANAAN=y CONFIG_SOC_CANAAN=y
CONFIG_NONPORTABLE=y CONFIG_NONPORTABLE=y
......
...@@ -22,7 +22,8 @@ CONFIG_EXPERT=y ...@@ -22,7 +22,8 @@ CONFIG_EXPERT=y
# CONFIG_KALLSYMS is not set # CONFIG_KALLSYMS is not set
# CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_VM_EVENT_COUNTERS is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_MMU is not set # CONFIG_MMU is not set
CONFIG_SOC_VIRT=y CONFIG_SOC_VIRT=y
CONFIG_NONPORTABLE=y CONFIG_NONPORTABLE=y
......
...@@ -10,7 +10,8 @@ CONFIG_USER_NS=y ...@@ -10,7 +10,8 @@ CONFIG_USER_NS=y
CONFIG_PID_NS=y CONFIG_PID_NS=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
# CONFIG_AIO is not set # CONFIG_AIO is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
......
...@@ -11,7 +11,8 @@ CONFIG_USER_NS=y ...@@ -11,7 +11,8 @@ CONFIG_USER_NS=y
CONFIG_PID_NS=y CONFIG_PID_NS=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_MODULES=y CONFIG_MODULES=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
......
...@@ -21,7 +21,8 @@ CONFIG_BLK_DEV_INITRD=y ...@@ -21,7 +21,8 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
# CONFIG_ELF_CORE is not set # CONFIG_ELF_CORE is not set
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_MODULES=y CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_UNLOAD=y
......
...@@ -9,7 +9,8 @@ CONFIG_LOG_BUF_SHIFT=14 ...@@ -9,7 +9,8 @@ CONFIG_LOG_BUF_SHIFT=14
# CONFIG_FUTEX is not set # CONFIG_FUTEX is not set
# CONFIG_EPOLL is not set # CONFIG_EPOLL is not set
# CONFIG_SHMEM is not set # CONFIG_SHMEM is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
CONFIG_CPU_SUBTYPE_SH7706=y CONFIG_CPU_SUBTYPE_SH7706=y
CONFIG_MEMORY_START=0x0c000000 CONFIG_MEMORY_START=0x0c000000
......
...@@ -20,7 +20,8 @@ CONFIG_USER_NS=y ...@@ -20,7 +20,8 @@ CONFIG_USER_NS=y
CONFIG_PID_NS=y CONFIG_PID_NS=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_KPROBES=y CONFIG_KPROBES=y
CONFIG_MODULES=y CONFIG_MODULES=y
......
...@@ -7,5 +7,6 @@ CONFIG_KERNEL_XZ=y ...@@ -7,5 +7,6 @@ CONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set # CONFIG_KERNEL_LZ4 is not set
# CONFIG_SLAB is not set # CONFIG_SLAB is not set
# CONFIG_SLUB is not set # CONFIG_SLOB_DEPRECATED is not set
CONFIG_SLOB=y CONFIG_SLUB=y
CONFIG_SLUB_TINY=y
...@@ -219,17 +219,30 @@ config SLUB ...@@ -219,17 +219,30 @@ config SLUB
and has enhanced diagnostics. SLUB is the default choice for and has enhanced diagnostics. SLUB is the default choice for
a slab allocator. a slab allocator.
config SLOB config SLOB_DEPRECATED
depends on EXPERT depends on EXPERT
bool "SLOB (Simple Allocator)" bool "SLOB (Simple Allocator - DEPRECATED)"
depends on !PREEMPT_RT depends on !PREEMPT_RT
help help
Deprecated and scheduled for removal in a few cycles. SLUB
recommended as replacement. CONFIG_SLUB_TINY can be considered
on systems with 16MB or less RAM.
If you need SLOB to stay, please contact linux-mm@kvack.org and
people listed in the SLAB ALLOCATOR section of MAINTAINERS file,
with your use case.
SLOB replaces the stock allocator with a drastically simpler SLOB replaces the stock allocator with a drastically simpler
allocator. SLOB is generally more space efficient but allocator. SLOB is generally more space efficient but
does not perform as well on large systems. does not perform as well on large systems.
endchoice endchoice
config SLOB
bool
default y
depends on SLOB_DEPRECATED
config SLUB_TINY config SLUB_TINY
bool "Configure SLUB for minimal memory footprint" bool "Configure SLUB for minimal memory footprint"
depends on SLUB && EXPERT depends on SLUB && EXPERT
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment