config SQUASHFS
	tristate "SquashFS 4.0 - Squashed file system support"
	depends on BLOCK
	select ZLIB_INFLATE
	help
	  Saying Y here includes support for SquashFS 4.0 (a Compressed
	  Read-Only File System).  Squashfs is a highly compressed read-only
	  filesystem for Linux.  It uses zlib/lzo compression to compress both
	  files, inodes and directories.  Inodes in the system are very small
	  and all blocks are packed to minimise data overhead. Block sizes
	  greater than 4K are supported up to a maximum of 1 Mbytes (default
	  block size 128K).  SquashFS 4.0 supports 64 bit filesystems and files
	  (larger than 4GB), full uid/gid information, hard links and
	  timestamps.

	  Squashfs is intended for general read-only filesystem use, for
	  archival use (i.e. in cases where a .tar.gz file may be used), and in
	  embedded systems where low overhead is needed.  Further information
	  and tools are available from http://squashfs.sourceforge.net.

	  If you want to compile this as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want),
	  say M here and read <file:Documentation/modules.txt>.  The module
	  will be called squashfs.  Note that the root file system (the one
	  containing the directory /) cannot be compiled as a module.

	  If unsure, say N.

config SQUASHFS_XATTR
	bool "Squashfs XATTR support"
	depends on SQUASHFS
	default n
	help
	  Saying Y here includes support for extended attributes (xattrs).
	  Xattrs are name:value pairs associated with inodes by
	  the kernel or by users (see the attr(5) manual page).

	  If unsure, say N.

config SQUASHFS_LZO
	bool "Include support for LZO compressed file systems"
	depends on SQUASHFS
	default n
	select LZO_DECOMPRESS
	help
	  Saying Y here includes support for reading Squashfs file systems
	  compressed with LZO compresssion.  LZO compression is mainly
	  aimed at embedded systems with slower CPUs where the overheads
	  of zlib are too high.

	  LZO is not the standard compression used in Squashfs and so most
	  file systems will be readable without selecting this option.

	  If unsure, say N.

config SQUASHFS_XZ
	bool "Include support for XZ compressed file systems"
	depends on SQUASHFS
	select XZ_DEC
	help
	  Saying Y here includes support for reading Squashfs file systems
	  compressed with XZ compresssion.  XZ gives better compression than
	  the default zlib compression, at the expense of greater CPU and
	  memory overhead.

	  XZ is not the standard compression used in Squashfs and so most
	  file systems will be readable without selecting this option.

	  If unsure, say N.

config SQUASHFS_EMBEDDED
	bool "Additional option for memory-constrained systems"
	depends on SQUASHFS
	default n
	help
	  Saying Y here allows you to specify cache size.

	  If unsure, say N.

config SQUASHFS_FRAGMENT_CACHE_SIZE
	int "Number of fragments cached" if SQUASHFS_EMBEDDED
	depends on SQUASHFS
	default "3"
	help
	  By default SquashFS caches the last 3 fragments read from
	  the filesystem.  Increasing this amount may mean SquashFS
	  has to re-read fragments less often from disk, at the expense
	  of extra system memory.  Decreasing this amount will mean
	  SquashFS uses less memory at the expense of extra reads from disk.

	  Note there must be at least one cached fragment.  Anything
	  much more than three will probably not make much difference.
