From: Minchan Kim <minchan@kernel.org>
To: Rui Salvaterra <rsalvaterra@gmail.com>
Cc: ngupta@vflare.org, sergey.senozhatsky.work@gmail.com,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5] zram: break the strict dependency from lzo
Date: Thu, 19 Nov 2020 14:26:10 -0800 [thread overview]
Message-ID: <20201119222610.GD3113267@google.com> (raw)
In-Reply-To: <20201115101514.954-1-rsalvaterra@gmail.com>
On Sun, Nov 15, 2020 at 10:15:14AM +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>
> ---
> 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 believe this is the final version, but it does deserve some comment. Given the
> choice of having more preprocessor #if/#endif directives in C files or making
> the kconfig a bit more complex, I went for the latter. However, since kconfig
> choices can only be boolean, I had to devise a way to make a string selection
> based on the boolean choice, hence the ZRAM_DEF_COMP symbol.
> I also tried to make the ZRAM_AUTOSEL_ALGO definition a bit less painful to the
> eye, while still allowing for the compression algorithms to be selected as
> modules, as per Sergey's suggestion.
>
> drivers/block/zram/Kconfig | 49 ++++++++++++++++++++++++++++++++++-
> drivers/block/zram/zcomp.c | 2 ++
> drivers/block/zram/zram_drv.c | 2 +-
> 3 files changed, 51 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
> index fe7a4b7d30cf..cde089c30ffb 100644
> --- a/drivers/block/zram/Kconfig
> +++ b/drivers/block/zram/Kconfig
> @@ -2,7 +2,6 @@
> config ZRAM
> tristate "Compressed RAM block device support"
> depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
> - select CRYPTO_LZO
> help
> Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
> Pages written to these disks are compressed and stored in memory
> @@ -14,6 +13,54 @@ config ZRAM
>
> See Documentation/admin-guide/blockdev/zram.rst for more information.
>
> +choice
> + prompt "Default zram compression algorithm"
> + 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_AUTOSEL_ALGO
> + def_bool y
> + depends on ZRAM && \
> + !(CRYPTO_LZ4=m || CRYPTO_LZ4=y || \
> + CRYPTO_LZ4HC=m || CRYPTO_LZ4HC=y || \
> + CRYPTO_842=m || CRYPTO_842=y || \
> + CRYPTO_ZSTD=m || CRYPTO_ZSTD=y)
> + select CRYPTO_LZO
> +
Hi Rui,
What's the purpose of ZRAM_AUTOSEL_ALGO?
If you and Sergey already discussed, sorry about the missing it.
Below doesn't work for your goal?
diff --git a/drivers/block/zram/Kconfig b/drivers/block/zram/Kconfig
index fe7a4b7d30cf..7f3c50f5f87e 100644
--- a/drivers/block/zram/Kconfig
+++ b/drivers/block/zram/Kconfig
@@ -2,7 +2,6 @@
config ZRAM
tristate "Compressed RAM block device support"
depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
- select CRYPTO_LZO
help
Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
Pages written to these disks are compressed and stored in memory
@@ -14,6 +13,32 @@ config ZRAM
See Documentation/admin-guide/blockdev/zram.rst for more information.
+
+choice
+ prompt "zram default compressor"
+ default ZRAM_COMP_LZO_DEF
+ depends on ZRAM || CRYPTO_LZ4
+ help
+ a
+
+config ZRAM_COMP_LZO_DEF
+ bool "lzo"
+ select CRYPTO_LZO
+ help
+ b
+
+config ZRAM_COMP_LZ4_DEF
+ bool "lz4"
+ depends on CRYPTO_LZ4
+ help
+ c
+endchoice
+
+config ZRAM_DEF_COMP
+ string
+ default "lzo" if ZRAM_COMP_LZO_DEF
+ default "lz4" if ZRAM_COMP_LZ4_DEF
next prev parent reply other threads:[~2020-11-19 22:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-15 10:15 [PATCH v5] zram: break the strict dependency from lzo Rui Salvaterra
2020-11-19 22:26 ` Minchan Kim [this message]
2020-11-20 9:10 ` Rui Salvaterra
2020-11-20 21:40 ` Minchan Kim
2020-11-21 0:44 ` Rui Salvaterra
2020-11-22 9:40 ` Rui Salvaterra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201119222610.GD3113267@google.com \
--to=minchan@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ngupta@vflare.org \
--cc=rsalvaterra@gmail.com \
--cc=sergey.senozhatsky.work@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.