# SPDX-License-Identifier: GPL-2.0-only
config JFFS2_FS
	tristate "Journalling Flash File System v2 (JFFS2) support"
	select CRC32
	depends on MTD
	help
	  JFFS2 is the second generation of the Journalling Flash File System
	  for use on diskless embedded devices. It provides improved wear
	  levelling, compression and support for hard links. You cannot use
	  this on normal block devices, only on 'MTD' devices.

	  Further information on the design and implementation of JFFS2 is
	  available at <http://sources.redhat.com/jffs2/>.

config JFFS2_FS_DEBUG
	int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)"
	depends on JFFS2_FS
	default "0"
	help
	  This controls the amount of debugging messages produced by the JFFS2
	  code. Set it to zero for use in production systems. For evaluation,
	  testing and debugging, it's advisable to set it to one. This will
	  enable a few assertions and will print debugging messages at the
	  KERN_DEBUG loglevel, where they won't normally be visible. Level 2
	  is unlikely to be useful - it enables extra debugging in certain
	  areas which at one point needed debugging, but when the bugs were
	  located and fixed, the detailed messages were relegated to level 2.

	  If reporting bugs, please try to have available a full dump of the
	  messages at debug level 1 while the misbehaviour was occurring.

config JFFS2_FS_WRITEBUFFER
	bool "JFFS2 write-buffering support"
	depends on JFFS2_FS
	default y
	help
	  This enables the write-buffering support in JFFS2.

	  This functionality is required to support JFFS2 on the following
	  types of flash devices:
	    - NAND flash
	    - NOR flash with transparent ECC
	    - DataFlash

config JFFS2_FS_WBUF_VERIFY
	bool "Verify JFFS2 write-buffer reads"
	depends on JFFS2_FS_WRITEBUFFER
	default n
	help
	  This causes JFFS2 to read back every page written through the
	  write-buffer, and check for errors.

config JFFS2_SUMMARY
	bool "JFFS2 summary support"
	depends on JFFS2_FS
	default n
	help
	  This feature makes it possible to use summary information
	  for faster filesystem mount.

	  The summary information can be inserted into a filesystem image
	  by the utility 'sumtool'.

	  If unsure, say 'N'.

config JFFS2_FS_XATTR
	bool "JFFS2 XATTR support"
	depends on JFFS2_FS
	default n
	help
	  Extended attributes are name:value pairs associated with inodes by
	  the kernel or by users (see the attr(5) manual page for details).

	  If unsure, say N.

config JFFS2_FS_POSIX_ACL
	bool "JFFS2 POSIX Access Control Lists"
	depends on JFFS2_FS_XATTR
	default y
	select FS_POSIX_ACL
	help
	  Posix Access Control Lists (ACLs) support permissions for users and
	  groups beyond the owner/group/world scheme.

	  If you don't know what Access Control Lists are, say N

config JFFS2_FS_SECURITY
	bool "JFFS2 Security Labels"
	depends on JFFS2_FS_XATTR
	default y
	help
	  Security labels support alternative access control models
	  implemented by security modules like SELinux.  This option
	  enables an extended attribute handler for file security
	  labels in the jffs2 filesystem.

	  If you are not using a security module that requires using
	  extended attributes for file security labels, say N.

config JFFS2_COMPRESSION_OPTIONS
	bool "Advanced compression options for JFFS2"
	depends on JFFS2_FS
	default n
	help
	  Enabling this option allows you to explicitly choose which
	  compression modules, if any, are enabled in JFFS2. Removing
	  compressors can mean you cannot read existing file systems,
	  and enabling experimental compressors can mean that you
	  write a file system which cannot be read by a standard kernel.

	  If unsure, you should _definitely_ say 'N'.

config JFFS2_ZLIB
	bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS
	select ZLIB_INFLATE
	select ZLIB_DEFLATE
	depends on JFFS2_FS
	default y
	help
	  Zlib is designed to be a free, general-purpose, legally unencumbered,
	  lossless data-compression library for use on virtually any computer
	  hardware and operating system. See <http://www.gzip.org/zlib/> for
	  further information.

	  Say 'Y' if unsure.

config JFFS2_LZO
	bool "JFFS2 LZO compression support" if JFFS2_COMPRESSION_OPTIONS
	select LZO_COMPRESS
	select LZO_DECOMPRESS
	depends on JFFS2_FS
	default n
	help
	  minilzo-based compression. Generally works better than Zlib.

	  This feature was added in July, 2007. Say 'N' if you need
	  compatibility with older bootloaders or kernels.

config JFFS2_RTIME
	bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS
	depends on JFFS2_FS
	default y
	help
	  Rtime does manage to recompress already-compressed data. Say 'Y' if unsure.

config JFFS2_RUBIN
	bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS
	depends on JFFS2_FS
	default n
	help
	  RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure.

choice
	prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS
	default JFFS2_CMODE_PRIORITY
	depends on JFFS2_FS
	help
	  You can set here the default compression mode of JFFS2 from
	  the available compression modes. Don't touch if unsure.

config JFFS2_CMODE_NONE
	bool "no compression"
	help
	  Uses no compression.

config JFFS2_CMODE_PRIORITY
	bool "priority"
	help
	  Tries the compressors in a predefined order and chooses the first
	  successful one.

config JFFS2_CMODE_SIZE
	bool "size"
	help
	  Tries all compressors and chooses the one which has the smallest
	  result.

config JFFS2_CMODE_FAVOURLZO
	bool "Favour LZO"
	help
	  Tries all compressors and chooses the one which has the smallest
	  result but gives some preference to LZO (which has faster
	  decompression) at the expense of size.

endchoice