1# SPDX-License-Identifier: GPL-2.0-only
2config JFFS2_FS
3	tristate "Journalling Flash File System v2 (JFFS2) support"
4	select CRC32
5	depends on MTD
6	help
7	  JFFS2 is the second generation of the Journalling Flash File System
8	  for use on diskless embedded devices. It provides improved wear
9	  levelling, compression and support for hard links. You cannot use
10	  this on normal block devices, only on 'MTD' devices.
11
12	  Further information on the design and implementation of JFFS2 is
13	  available at <http://sources.redhat.com/jffs2/>.
14
15config JFFS2_FS_DEBUG
16	int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)"
17	depends on JFFS2_FS
18	default "0"
19	help
20	  This controls the amount of debugging messages produced by the JFFS2
21	  code. Set it to zero for use in production systems. For evaluation,
22	  testing and debugging, it's advisable to set it to one. This will
23	  enable a few assertions and will print debugging messages at the
24	  KERN_DEBUG loglevel, where they won't normally be visible. Level 2
25	  is unlikely to be useful - it enables extra debugging in certain
26	  areas which at one point needed debugging, but when the bugs were
27	  located and fixed, the detailed messages were relegated to level 2.
28
29	  If reporting bugs, please try to have available a full dump of the
30	  messages at debug level 1 while the misbehaviour was occurring.
31
32config JFFS2_FS_WRITEBUFFER
33	bool "JFFS2 write-buffering support"
34	depends on JFFS2_FS
35	default y
36	help
37	  This enables the write-buffering support in JFFS2.
38
39	  This functionality is required to support JFFS2 on the following
40	  types of flash devices:
41	    - NAND flash
42	    - NOR flash with transparent ECC
43	    - DataFlash
44
45config JFFS2_FS_WBUF_VERIFY
46	bool "Verify JFFS2 write-buffer reads"
47	depends on JFFS2_FS_WRITEBUFFER
48	default n
49	help
50	  This causes JFFS2 to read back every page written through the
51	  write-buffer, and check for errors.
52
53config JFFS2_SUMMARY
54	bool "JFFS2 summary support"
55	depends on JFFS2_FS
56	default n
57	help
58	  This feature makes it possible to use summary information
59	  for faster filesystem mount.
60
61	  The summary information can be inserted into a filesystem image
62	  by the utility 'sumtool'.
63
64	  If unsure, say 'N'.
65
66config JFFS2_FS_XATTR
67	bool "JFFS2 XATTR support"
68	depends on JFFS2_FS
69	default n
70	help
71	  Extended attributes are name:value pairs associated with inodes by
72	  the kernel or by users (see the attr(5) manual page for details).
73
74	  If unsure, say N.
75
76config JFFS2_FS_POSIX_ACL
77	bool "JFFS2 POSIX Access Control Lists"
78	depends on JFFS2_FS_XATTR
79	default y
80	select FS_POSIX_ACL
81	help
82	  Posix Access Control Lists (ACLs) support permissions for users and
83	  groups beyond the owner/group/world scheme.
84
85	  If you don't know what Access Control Lists are, say N
86
87config JFFS2_FS_SECURITY
88	bool "JFFS2 Security Labels"
89	depends on JFFS2_FS_XATTR
90	default y
91	help
92	  Security labels support alternative access control models
93	  implemented by security modules like SELinux.  This option
94	  enables an extended attribute handler for file security
95	  labels in the jffs2 filesystem.
96
97	  If you are not using a security module that requires using
98	  extended attributes for file security labels, say N.
99
100config JFFS2_COMPRESSION_OPTIONS
101	bool "Advanced compression options for JFFS2"
102	depends on JFFS2_FS
103	default n
104	help
105	  Enabling this option allows you to explicitly choose which
106	  compression modules, if any, are enabled in JFFS2. Removing
107	  compressors can mean you cannot read existing file systems,
108	  and enabling experimental compressors can mean that you
109	  write a file system which cannot be read by a standard kernel.
110
111	  If unsure, you should _definitely_ say 'N'.
112
113config JFFS2_ZLIB
114	bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS
115	select ZLIB_INFLATE
116	select ZLIB_DEFLATE
117	depends on JFFS2_FS
118	default y
119	help
120	  Zlib is designed to be a free, general-purpose, legally unencumbered,
121	  lossless data-compression library for use on virtually any computer
122	  hardware and operating system. See <http://www.gzip.org/zlib/> for
123	  further information.
124
125	  Say 'Y' if unsure.
126
127config JFFS2_LZO
128	bool "JFFS2 LZO compression support" if JFFS2_COMPRESSION_OPTIONS
129	select LZO_COMPRESS
130	select LZO_DECOMPRESS
131	depends on JFFS2_FS
132	default n
133	help
134	  minilzo-based compression. Generally works better than Zlib.
135
136	  This feature was added in July, 2007. Say 'N' if you need
137	  compatibility with older bootloaders or kernels.
138
139config JFFS2_RTIME
140	bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS
141	depends on JFFS2_FS
142	default y
143	help
144	  Rtime does manage to recompress already-compressed data. Say 'Y' if unsure.
145
146config JFFS2_RUBIN
147	bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS
148	depends on JFFS2_FS
149	default n
150	help
151	  RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure.
152
153choice
154	prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS
155	default JFFS2_CMODE_PRIORITY
156	depends on JFFS2_FS
157	help
158	  You can set here the default compression mode of JFFS2 from
159	  the available compression modes. Don't touch if unsure.
160
161config JFFS2_CMODE_NONE
162	bool "no compression"
163	help
164	  Uses no compression.
165
166config JFFS2_CMODE_PRIORITY
167	bool "priority"
168	help
169	  Tries the compressors in a predefined order and chooses the first
170	  successful one.
171
172config JFFS2_CMODE_SIZE
173	bool "size"
174	help
175	  Tries all compressors and chooses the one which has the smallest
176	  result.
177
178config JFFS2_CMODE_FAVOURLZO
179	bool "Favour LZO"
180	help
181	  Tries all compressors and chooses the one which has the smallest
182	  result but gives some preference to LZO (which has faster
183	  decompression) at the expense of size.
184
185endchoice
186