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

config ZRAM_BACKEND_LZ4
	bool "lz4 compression support"
	depends on ZRAM
	select LZ4_COMPRESS
	select LZ4_DECOMPRESS

config ZRAM_BACKEND_LZ4HC
	bool "lz4hc compression support"
	depends on ZRAM
	select LZ4HC_COMPRESS
	select LZ4_DECOMPRESS

config ZRAM_BACKEND_ZSTD
	bool "zstd compression support"
	depends on ZRAM
	select ZSTD_COMPRESS
	select ZSTD_DECOMPRESS

config ZRAM_BACKEND_DEFLATE
	bool "deflate compression support"
	depends on ZRAM
	select ZLIB_DEFLATE
	select ZLIB_INFLATE

config ZRAM_BACKEND_842
	bool "842 compression support"
	depends on ZRAM
	select 842_COMPRESS
	select 842_DECOMPRESS

config ZRAM_BACKEND_FORCE_LZO
	depends on ZRAM
	def_bool !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \
		!ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE && \
		!ZRAM_BACKEND_842

config ZRAM_BACKEND_LZO
	bool "lzo and lzo-rle compression support" if !ZRAM_BACKEND_FORCE_LZO
	depends on ZRAM
	default ZRAM_BACKEND_FORCE_LZO
	select LZO_COMPRESS
	select LZO_DECOMPRESS

choice
	prompt "Default zram compressor"
	default ZRAM_DEF_COMP_LZORLE
	depends on ZRAM

config ZRAM_DEF_COMP_LZORLE
	bool "lzo-rle"
	depends on ZRAM_BACKEND_LZO

config ZRAM_DEF_COMP_LZO
	bool "lzo"
	depends on ZRAM_BACKEND_LZO

config ZRAM_DEF_COMP_LZ4
	bool "lz4"
	depends on ZRAM_BACKEND_LZ4

config ZRAM_DEF_COMP_LZ4HC
	bool "lz4hc"
	depends on ZRAM_BACKEND_LZ4HC

config ZRAM_DEF_COMP_ZSTD
	bool "zstd"
	depends on ZRAM_BACKEND_ZSTD

config ZRAM_DEF_COMP_DEFLATE
	bool "deflate"
	depends on ZRAM_BACKEND_DEFLATE

config ZRAM_DEF_COMP_842
	bool "842"
	depends on ZRAM_BACKEND_842

endchoice

config ZRAM_DEF_COMP
	string
	default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
	default "lzo" if ZRAM_DEF_COMP_LZO
	default "lz4" if ZRAM_DEF_COMP_LZ4
	default "lz4hc" if ZRAM_DEF_COMP_LZ4HC
	default "zstd" if ZRAM_DEF_COMP_ZSTD
	default "deflate" if ZRAM_DEF_COMP_DEFLATE
	default "842" if ZRAM_DEF_COMP_842
	default "unset-value"

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.
