1# SPDX-License-Identifier: GPL-2.0
2config ZRAM
3	tristate "Compressed RAM block device support"
4	depends on BLOCK && SYSFS && MMU
5	depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842
6	select ZSMALLOC
7	help
8	  Creates virtual block devices called /dev/zramX (X = 0, 1, ...).
9	  Pages written to these disks are compressed and stored in memory
10	  itself. These disks allow very fast I/O and compression provides
11	  good amounts of memory savings.
12
13	  It has several use cases, for example: /tmp storage, use as swap
14	  disks and maybe many more.
15
16	  See Documentation/admin-guide/blockdev/zram.rst for more information.
17
18choice
19	prompt "Default zram compressor"
20	default ZRAM_DEF_COMP_LZORLE
21	depends on ZRAM
22
23config ZRAM_DEF_COMP_LZORLE
24	bool "lzo-rle"
25	depends on CRYPTO_LZO
26
27config ZRAM_DEF_COMP_ZSTD
28	bool "zstd"
29	depends on CRYPTO_ZSTD
30
31config ZRAM_DEF_COMP_LZ4
32	bool "lz4"
33	depends on CRYPTO_LZ4
34
35config ZRAM_DEF_COMP_LZO
36	bool "lzo"
37	depends on CRYPTO_LZO
38
39config ZRAM_DEF_COMP_LZ4HC
40	bool "lz4hc"
41	depends on CRYPTO_LZ4HC
42
43config ZRAM_DEF_COMP_842
44	bool "842"
45	depends on CRYPTO_842
46
47endchoice
48
49config ZRAM_DEF_COMP
50	string
51	default "lzo-rle" if ZRAM_DEF_COMP_LZORLE
52	default "zstd" if ZRAM_DEF_COMP_ZSTD
53	default "lz4" if ZRAM_DEF_COMP_LZ4
54	default "lzo" if ZRAM_DEF_COMP_LZO
55	default "lz4hc" if ZRAM_DEF_COMP_LZ4HC
56	default "842" if ZRAM_DEF_COMP_842
57
58config ZRAM_WRITEBACK
59       bool "Write back incompressible or idle page to backing device"
60       depends on ZRAM
61       help
62	 This lets zram entries (incompressible or idle pages) be written
63	 back to a backing device, helping save memory.
64	 For this feature, admin should set up backing device via
65	 /sys/block/zramX/backing_dev.
66
67	 With /sys/block/zramX/{idle,writeback}, application could ask
68	 idle page's writeback to the backing device to save in memory.
69
70	 See Documentation/admin-guide/blockdev/zram.rst for more information.
71
72config ZRAM_TRACK_ENTRY_ACTIME
73	bool "Track access time of zram entries"
74	depends on ZRAM
75	help
76	  With this feature zram tracks access time of every stored
77	  entry (page), which can be used for a more fine grained IDLE
78	  pages writeback.
79
80config ZRAM_MEMORY_TRACKING
81	bool "Track zRam block status"
82	depends on ZRAM && DEBUG_FS
83	select ZRAM_TRACK_ENTRY_ACTIME
84	help
85	  With this feature, admin can track the state of allocated blocks
86	  of zRAM. Admin could see the information via
87	  /sys/kernel/debug/zram/zramX/block_state.
88
89	  See Documentation/admin-guide/blockdev/zram.rst for more information.
90
91config ZRAM_MULTI_COMP
92	bool "Enable multiple compression streams"
93	depends on ZRAM
94	help
95	  This will enable multi-compression streams, so that ZRAM can
96	  re-compress pages using a potentially slower but more effective
97	  compression algorithm. Note, that IDLE page recompression
98	  requires ZRAM_TRACK_ENTRY_ACTIME.
99