[PATCH] mm, slob: rename CONFIG_SLOB to CONFIG_SLOB_DEPRECATED

From: Vlastimil Babka
Date: Fri Nov 11 2022 - 05:04:55 EST


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 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@xxxxxxxxx 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.

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

Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx>
---
mm/Kconfig | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/mm/Kconfig b/mm/Kconfig
index 57e1d8c5b505..27c0d13314be 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -219,17 +219,28 @@ config SLUB
and has enhanced diagnostics. SLUB is the default choice for
a slab allocator.

-config SLOB
+config SLOB_DEPRECATED
depends on EXPERT
- bool "SLOB (Simple Allocator)"
+ bool "SLOB (Simple Allocator - DEPRECATED)"
depends on !PREEMPT_RT
help
+ Deprecated and scheduled for removal in a few cycles. SLUB
+ recommended as replacement. If you need SLOB to stay, please
+ contact linux-mm@xxxxxxxxx and people listed in the SLAB
+ ALLOCATOR section of MAINTAINERS file, and state your use
+ case.
+
SLOB replaces the stock allocator with a drastically simpler
allocator. SLOB is generally more space efficient but
does not perform as well on large systems.

endchoice

+config SLOB
+ bool
+ default y
+ depends on SLOB_DEPRECATED
+
config SLAB_MERGE_DEFAULT
bool "Allow slab caches to be merged"
default y
--
2.38.0