# SPDX-License-Identifier: GPL-2.0
config ZRAM
	tristate "Compressed RAM block device support"
	depends on BLOCK && SYSFS && MMU
	depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
	select ZSMALLOC
	help
	  Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
	  Pages written to these disks are compressed and stored in memory
	  itself. These disks allow very fast I/O and compression provides
	  good amounts of memory savings.

	  It has several use cases, for example: /tmp storage, use as swap
	  disks and maybe many more.

	  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
       help
	 This lets zram entries (incompressible or idle pages) be written
	 back to a backing device, helping save memory.
	 For this feature, admin should set up backing device via
	 /sys/block/zramX/backing_dev.

	 With /sys/block/zramX/{idle,writeback}, application could ask
	 idle page's writeback to the backing device to save in memory.

	 See Documentation/admin-guide/blockdev/zram.rst for more information.

config ZRAM_TRACK_ENTRY_ACTIME
	bool "Track access time of zram entries"
	depends on ZRAM
	help
	  With this feature zram tracks access time of every stored
	  entry (page), which can be used for a more fine grained IDLE
	  pages writeback.

config ZRAM_MEMORY_TRACKING
	bool "Track zRam block status"
	depends on ZRAM && DEBUG_FS
	select ZRAM_TRACK_ENTRY_ACTIME
	help
	  With this feature, admin can track the state of allocated blocks
	  of zRAM. Admin could see the information via
	  /sys/kernel/debug/zram/zramX/block_state.

	  See Documentation/admin-guide/blockdev/zram.rst for more information.

config ZRAM_MULTI_COMP
	bool "Enable multiple compression streams"
	depends on ZRAM
	help
	  This will enable multi-compression streams, so that ZRAM can
	  re-compress pages using a potentially slower but more effective
	  compression algorithm. Note, that IDLE page recompression
	  requires ZRAM_TRACK_ENTRY_ACTIME.
