1# SPDX-License-Identifier: GPL-2.0
2config ZRAM
3	tristate "Compressed RAM block device support"
4	depends on BLOCK && SYSFS && ZSMALLOC && CRYPTO
5	depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
6	help
7	  Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
8	  Pages written to these disks are compressed and stored in memory
9	  itself. These disks allow very fast I/O and compression provides
10	  good amounts of memory savings.
11
12	  It has several use cases, for example: /tmp storage, use as swap
13	  disks and maybe many more.
14
15	  See Documentation/admin-guide/blockdev/zram.rst for more information.
16
17choice
18	prompt "Default zram compressor"
19	default ZRAM_DEF_COMP_LZORLE
20	depends on ZRAM
21
22config ZRAM_DEF_COMP_LZORLE
23	bool "lzo-rle"
24	depends on CRYPTO_LZO
25
26config ZRAM_DEF_COMP_ZSTD
27	bool "zstd"
28	depends on CRYPTO_ZSTD
29
30config ZRAM_DEF_COMP_LZ4
31	bool "lz4"
32	depends on CRYPTO_LZ4
33
34config ZRAM_DEF_COMP_LZO
35	bool "lzo"
36	depends on CRYPTO_LZO
37
38config ZRAM_DEF_COMP_LZ4HC
39	bool "lz4hc"
40	depends on CRYPTO_LZ4HC
41
42config ZRAM_DEF_COMP_842
43	bool "842"
44	depends on CRYPTO_842
45
46endchoice
47
48config ZRAM_DEF_COMP
49	string
50	default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
51	default "zstd" if ZRAM_DEF_COMP_ZSTD
52	default "lz4" if ZRAM_DEF_COMP_LZ4
53	default "lzo" if ZRAM_DEF_COMP_LZO
54	default "lz4hc" if ZRAM_DEF_COMP_LZ4HC
55	default "842" if ZRAM_DEF_COMP_842
56
57config ZRAM_WRITEBACK
58       bool "Write back incompressible or idle page to backing device"
59       depends on ZRAM
60       help
61	 With incompressible page, there is no memory saving to keep it
62	 in memory. Instead, write it out to backing device.
63	 For this feature, admin should set up backing device via
64	 /sys/block/zramX/backing_dev.
65
66	 With /sys/block/zramX/{idle,writeback}, application could ask
67	 idle page's writeback to the backing device to save in memory.
68
69	 See Documentation/admin-guide/blockdev/zram.rst for more information.
70
71config ZRAM_MEMORY_TRACKING
72	bool "Track zRam block status"
73	depends on ZRAM && DEBUG_FS
74	help
75	  With this feature, admin can track the state of allocated blocks
76	  of zRAM. Admin could see the information via
77	  /sys/kernel/debug/zram/zramX/block_state.
78
79	  See Documentation/admin-guide/blockdev/zram.rst for more information.
80