config SQUASHFS
	tristate "SquashFS 4.0 - Squashed file system support"
	depends on BLOCK
	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 or xz 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.  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
	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_ZLIB
	bool "Include support for ZLIB compressed file systems"
	depends on SQUASHFS
	select ZLIB_INFLATE
	default y
	help
	  ZLIB compression is the standard compression used by Squashfs
	  file systems.  It offers a good trade-off between compression
	  achieved and the amount of CPU time and memory necessary to
	  compress and decompress.

	  If unsure, say Y.

config SQUASHFS_LZO
	bool "Include support for LZO compressed file systems"
	depends on SQUASHFS
	select LZO_DECOMPRESS
	help
	  Saying Y here includes support for reading Squashfs file systems
	  compressed with LZO compression.  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 compression.  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_4K_DEVBLK_SIZE
	bool "Use 4K device block size?"
	depends on SQUASHFS
	help
	  By default Squashfs sets the dev block size (sb_min_blocksize)
	  to 1K or the smallest block size supported by the block device
	  (if larger).  This, because blocks are packed together and
	  unaligned in Squashfs, should reduce latency.

	  This, however, gives poor performance on MTD NAND devices where
	  the optimal I/O size is 4K (even though the devices can support
	  smaller block sizes).

	  Using a 4K device block size may also improve overall I/O
	  performance for some file access patterns (e.g. sequential
	  accesses of files in filesystem order) on all media.

	  Setting this option will force Squashfs to use a 4K device block
	  size by default.

	  If unsure, say N.

config SQUASHFS_EMBEDDED
	bool "Additional option for memory-constrained systems"
	depends on SQUASHFS
	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.
