# SPDX-License-Identifier: GPL-2.0
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
	  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_WRITEBACK
       bool "Write back incompressible or idle page to backing device"
       depends on ZRAM
       default y
       help
	 With incompressible page, there is no memory saving to keep it
	 in memory. Instead, write it out to backing device.
	 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_MEMORY_TRACKING
	bool "Track zRam block status"
	depends on ZRAM && DEBUG_FS
	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_LRU_WRITEBACK
	bool
	depends on ZRAM_WRITEBACK
	default y
	help
	  This feature supports zram lru-based writeback (SQZR).

config ZRAM_LRU_WRITEBACK_LIMIT
	int "Limit zram lru writeback"
	default 5120
	depends on ZRAM_LRU_WRITEBACK

config ZRAM_SIZE_OVERRIDE
	int "zram size to set from kernel"
	range 1 8589934592
	default 3221225472