# SPDX-License-Identifier: GPL-2.0
config ZRAM
	tristate "Compressed RAM block device support"
	depends on BLOCK && SYSFS && MMU
	depends on HAVE_ZSMALLOC
	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.
