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_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.
