All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7] zram: break the strict dependency from lzo
@ 2020-12-07 12:12 Rui Salvaterra
  2020-12-08 17:26 ` Minchan Kim
  0 siblings, 1 reply; 3+ messages in thread
From: Rui Salvaterra @ 2020-12-07 12:12 UTC (permalink / raw)
  To: minchan, ngupta, sergey.senozhatsky.work
  Cc: linux-block, linux-kernel, Rui Salvaterra

From the beginning, the zram block device always enabled CRYPTO_LZO, since
lzo-rle is hardcoded as the fallback compression algorithm. As a consequence, on
systems where another compression algorithm is chosen (e.g. CRYPTO_ZSTD), the
lzo kernel module becomes unused, while still having to be built/loaded.

This patch removes the hardcoded lzo-rle dependency and allows the user to
select the default compression algorithm for zram at build time. The previous
behaviour is kept, as the default algorithm is still lzo-rle.

Suggested-by: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Suggested-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
---
v7: rebase against 5.10-rc7 and fix unmet direct dependencies, as reported by
Stephen Rothwell on linux-next.
v6: simplify the kconfig as per Minchan's suggestion.
v5: incorporate Minchan's feedback. Allow the user to choose a default algorithm.
v4: incorporate Sergey's feedback and fix a small typo.
v3: fix the default selection when lzo isn't present. Rebase against 5.10-rc1.
v2: fix the dependency on CRYPTO.

I had to change CRYPTO_LZO from "select" to "depends on", since it had the
unfortunate effect of causing unmet direct dependencies on some kernel
configurations. This also means at least one supported compression algorithm
must be selected in order for the zram block device to appear on the menu,
which isn't the perfect solution I'd hoped for, but it works for me (and make
oldconfig doesn't break existing configurations).

 drivers/block/zram/Kconfig    | 42 ++++++++++++++++++++++++++++++++++-
 drivers/block/zram/zcomp.c    |  2 ++
 drivers/block/zram/zram_drv.c |  2 +-
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index fe7a4b7d30cf..668c6bf2554d 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -2,7 +2,7 @@
 config ZRAM
 	tristate "Compressed RAM block device support"
 	depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
-	select CRYPTO_LZO
+	depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
 	help
 	  Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
 	  Pages written to these disks are compressed and stored in memory
@@ -14,6 +14,46 @@ config ZRAM
 
 	  See Documentation/admin-guide/blockdev/zram.rst for more information.
 
+choice
+	prompt "Default zram compressor"
+	default ZRAM_DEF_COMP_LZORLE
+	depends on ZRAM
+
+config ZRAM_DEF_COMP_LZORLE
+	bool "lzo-rle"
+	depends on CRYPTO_LZO
+
+config ZRAM_DEF_COMP_ZSTD
+	bool "zstd"
+	depends on CRYPTO_ZSTD
+
+config ZRAM_DEF_COMP_LZ4
+	bool "lz4"
+	depends on CRYPTO_LZ4
+
+config ZRAM_DEF_COMP_LZO
+	bool "lzo"
+	depends on CRYPTO_LZO
+
+config ZRAM_DEF_COMP_LZ4HC
+	bool "lz4hc"
+	depends on CRYPTO_LZ4HC
+
+config ZRAM_DEF_COMP_842
+	bool "842"
+	depends on CRYPTO_842
+
+endchoice
+
+config ZRAM_DEF_COMP
+	string
+	default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
+	default "zstd" if ZRAM_DEF_COMP_ZSTD
+	default "lz4" if ZRAM_DEF_COMP_LZ4
+	default "lzo" if ZRAM_DEF_COMP_LZO
+	default "lz4hc" if ZRAM_DEF_COMP_LZ4HC
+	default "842" if ZRAM_DEF_COMP_842
+
 config ZRAM_WRITEBACK
        bool "Write back incompressible or idle page to backing device"
        depends on ZRAM
diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c
index 33e3b76c4fa9..052aa3f65514 100644
--- a/drivers/block/zram/zcomp.c
+++ b/drivers/block/zram/zcomp.c
@@ -15,8 +15,10 @@
 #include "zcomp.h"
 
 static const char * const backends[] = {
+#if IS_ENABLED(CONFIG_CRYPTO_LZO)
 	"lzo",
 	"lzo-rle",
+#endif
 #if IS_ENABLED(CONFIG_CRYPTO_LZ4)
 	"lz4",
 #endif
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 1b697208d661..9ddccb968c68 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -42,7 +42,7 @@ static DEFINE_IDR(zram_index_idr);
 static DEFINE_MUTEX(zram_index_mutex);
 
 static int zram_major;
-static const char *default_compressor = "lzo-rle";
+static const char *default_compressor = CONFIG_ZRAM_DEF_COMP;
 
 /* Module params (documentation at end) */
 static unsigned int num_devices = 1;
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v7] zram: break the strict dependency from lzo
  2020-12-07 12:12 [PATCH v7] zram: break the strict dependency from lzo Rui Salvaterra
@ 2020-12-08 17:26 ` Minchan Kim
  2020-12-08 17:28   ` Minchan Kim
  0 siblings, 1 reply; 3+ messages in thread
From: Minchan Kim @ 2020-12-08 17:26 UTC (permalink / raw)
  To: Rui Salvaterra; +Cc: ngupta, sergey.senozhatsky.work, linux-block, linux-kernel

On Mon, Dec 07, 2020 at 12:12:45PM +0000, Rui Salvaterra wrote:
> From the beginning, the zram block device always enabled CRYPTO_LZO, since
> lzo-rle is hardcoded as the fallback compression algorithm. As a consequence, on
> systems where another compression algorithm is chosen (e.g. CRYPTO_ZSTD), the
> lzo kernel module becomes unused, while still having to be built/loaded.
> 
> This patch removes the hardcoded lzo-rle dependency and allows the user to
> select the default compression algorithm for zram at build time. The previous
> behaviour is kept, as the default algorithm is still lzo-rle.
> 
> Suggested-by: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
> Suggested-by: Minchan Kim <minchan@kernel.org>
> Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
Acked-by: Minchan Kim <minchan@kernel.org>

Thanks, Rui.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v7] zram: break the strict dependency from lzo
  2020-12-08 17:26 ` Minchan Kim
@ 2020-12-08 17:28   ` Minchan Kim
  0 siblings, 0 replies; 3+ messages in thread
From: Minchan Kim @ 2020-12-08 17:28 UTC (permalink / raw)
  To: Rui Salvaterra, Andrew Morton
  Cc: ngupta, sergey.senozhatsky.work, linux-block, linux-kernel

On Tue, Dec 08, 2020 at 09:26:55AM -0800, Minchan Kim wrote:
> On Mon, Dec 07, 2020 at 12:12:45PM +0000, Rui Salvaterra wrote:
> > From the beginning, the zram block device always enabled CRYPTO_LZO, since
> > lzo-rle is hardcoded as the fallback compression algorithm. As a consequence, on
> > systems where another compression algorithm is chosen (e.g. CRYPTO_ZSTD), the
> > lzo kernel module becomes unused, while still having to be built/loaded.
> > 
> > This patch removes the hardcoded lzo-rle dependency and allows the user to
> > select the default compression algorithm for zram at build time. The previous
> > behaviour is kept, as the default algorithm is still lzo-rle.
> > 
> > Suggested-by: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
> > Suggested-by: Minchan Kim <minchan@kernel.org>
> > Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
> Acked-by: Minchan Kim <minchan@kernel.org>

Ccing Andrew

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-12-08 17:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-07 12:12 [PATCH v7] zram: break the strict dependency from lzo Rui Salvaterra
2020-12-08 17:26 ` Minchan Kim
2020-12-08 17:28   ` Minchan Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.