config AUFS
	tristate "Another unionfs"
	help
	Aufs is a stackable unification filesystem such as Unionfs,
	which unifies several directories and provides a merged single
	directory.
	In the early days, aufs was entirely re-designed and
	re-implemented Unionfs Version 1.x series. After many original
	ideas, approaches and improvements, it becomes totally
	different from Unionfs while keeping the basic features.
	See Unionfs for the basic features.
if AUFS
comment "These options are for 2.6.27-3-generic"
choice
	prompt "Maximum number of branches"
	default AUFS_BRANCH_MAX_127
	help
	Specifies the maximum number of branches (or member directories) in a single aufs. The larger value consumes more system resources and has an impact to performance.
config AUFS_BRANCH_MAX_127
	bool "127"
	help
	Specifies the maximum number of branches (or member directories) in a single aufs. The larger value consumes more system resources and has an impact to performance.
config AUFS_BRANCH_MAX_511
	bool "511"
	help
	Specifies the maximum number of branches (or member directories) in a single aufs. The larger value consumes more system resources and has an impact to performance.
config AUFS_BRANCH_MAX_1023
	bool "1023"
	help
	Specifies the maximum number of branches (or member directories) in a single aufs. The larger value consumes more system resources and has an impact to performance.
config AUFS_BRANCH_MAX_32767
	bool "32767"
	help
	Specifies the maximum number of branches (or member directories) in a single aufs. The larger value consumes more system resources and has an impact to performance.
endchoice
config AUFS_STAT
	bool "Use <sysfs>/fs/aufs/stat"
	depends on SYSFS
	help
	Shows some statistic data via <sysfs>/fs/aufs/stat.
	See detail in aufs.5.
comment "SYSFS and AUFS_STAT are disabled"
	depends on SYSFS = n
config AUFS_HINOTIFY
	bool "Use inotify to detect actions on a branch"
	depends on INOTIFY
	help
	If you want to modify files on branches directly, eg. bypassing aufs,
	and want aufs to detect the changes of them fully, then enable this
	option and use 'udba=inotify' mount option.
	It will have a negative impact to the performance.
	See detail in aufs.5.
comment "INOTIFY and AUFS_HINOTIFY are disabled"
	depends on INOTIFY = n
config AUFS_EXPORT
	bool "NFS-exportable aufs"
	depends on (AUFS = y && EXPORTFS = y) || (AUFS = m && EXPORTFS)
	help
	If you want to export your mounted aufs, then enable this
	option. There are several requirements to export aufs.
	See detail in aufs.5.
comment "EXPORTFS and AUFS_EXPORT are disabled"
	depends on EXPORTFS = n
comment "AUFS_EXPORT is disabled since EXPORTFS is a module but AUFS"
	depends on EXPORTFS = m && AUFS = y
config AUFS_INO_T_64
	bool
	depends on 64BIT && !(ALPHA || S390)
	default y
config AUFS_ROBR
	bool "Aufs as an readonly branch of another aufs mount"
	help
	If you want make your aufs to be a part of another aufs, then
	enable this option. In other words, you can specify your aufs
	path in 'br:' mount option for another aufs, but cannot
	specify 'rw' as the branch permission.
	It will have a negative impact to the performance.
	See detail in aufs.5.
config AUFS_DLGT
	bool "Delegate the internal branch access the kernel thread"
	help
	If you want aufs to delegate
	the internal access to the branches which is made by aufs, to
	the kernel thread, in order to hide the access issued by your
	application from your LSM or something or make your
	application to be traced strictly by the task I/O accounting,
	then enable this option and use 'dlgt' mount option.
	It will have a negative impact to the performance.
	See detail in aufs.5.
config AUFS_HIN_OR_DLGT
	bool
	depends on AUFS_HINOTIFY || AUFS_DLGT
	default y
	help
	Automatic configuration for internal use.
config AUFS_SHWH
	bool "Show whiteouts"
	help
	If you want to make the whiteouts in aufs visible, then enable
	this option and specify 'shwh' mount option. Although it may
	sounds like philosophy or something, but in technically it
	simply shows the name of whiteout with keeping its behaviour.
config AUFS_RR_SQUASHFS
	bool "Make squashfs branch RR (real readonly) by default"
	default y
	help
	If you use squashfs or LZMA patched squashfs as an aufs branch
	and want to set '=rr' to it by default, then enable this
	configuration.
	'rr' stands for real readonly and it optimizes some aspects of
	'ro.'
	See detail in aufs.5.
config AUFS_SEC_PERM_PATCH
	bool "sec_perm-2.6.24.patch was applied or not"
	depends on AUFS = m
	depends on SECURITY
	help
	If you build aufs as a module and enabled CONFIG_SECURITY,
	then you need to apply the patch
	'CVS_TREE/aufs/patch/sec_perm-2.6.24.patch' to your kernel
	source, and enable this configuration.
	The sec_perm-2.6.24.patch exports a kernel function
	security_inode_permission() to modules.
comment "SECURITY and AUFS_SEC_PERM_PATCH are disabled"
	depends on SECURITY = n
config AUFS_SPLICE_PATCH
	bool "splice.patch for sendfile(2) and splice(2)"
	help
	If you use 'loopback mount' on a fs-image file, or use
	splice(2) or sendfile(2) systemcall in aufs, then you need to
	apply the patch 'CVS_TREE/aufs/patch/splice.patch' to your
	kernel source, and enable this configuration.
	The splice.patch makes the kernel function do_splice_to/from()
	global and exports them to modules.
config AUFS_PUT_FILP_PATCH
	bool "put_filp.patch for NFS branch"
	depends on AUFS = m
	depends on NFS_FS
	help
	If you build aufs as a module and use mounted NFS as an aufs
	branch filesystem, then you need to apply the patch
	'CVS_TREE/aufs/patch/put_filp.patch' to your kernel source,
	and enable this configuration.
	The put_filp.patch exports a kernel function put_filp() to
	modules.
comment "NFS_FS and AUFS_PUT_FILP_PATCH are disabled"
	depends on NFS_FS = n
config AUFS_LHASH_PATCH
	bool "lhash.patch for NFS branch"
	depends on NFS_FS
	help
	If you use mounted NFS as an aufs branch filesystem, then you
	need to apply the patch 'CVS_TREE/aufs/patch/lhash.patch' (or
	lhash-2.6.22.patch for linux-2.6.22 and later) to your kernel
	source, and enable this configuration.
	The patch file makes the kernel function __lookup_hash() global
	and exports it to modules.
comment "NFS_FS and AUFS_LHASH_PATCH are disabled"
	depends on NFS_FS = n
config AUFS_BR_NFS
	bool
	depends on NFS_FS
	default n if (!AUFS_LHASH_PATCH || !(AUFS = y || AUFS_PUT_FILP_PATCH))
	default y
	help
	Automatic configuration for internal use.
	When aufs supports NFS branch, enabled automatically.
config AUFS_BR_XFS
	bool
	depends on XFS_FS
	default y
	help
	Automatic configuration for internal use.
	When aufs supports XFS branch, enabled automatically.
config AUFS_FSYNC_SUPER_PATCH
	bool "fsync_super-2.6.xx.patch was applied or not"
	depends on AUFS = m
	help
	If you build aufs as a module and want to flush everything for
	branch filesystems which are not marked as 'rr' nor 'rr+wh' at
	umount or remount time, then you need to apply the patch
	'CVS_TREE/aufs/patch/fsync_super-2.6.16.patch' or
	'...-2.6.19.patch' to your kernel source, and enable this
	configuration.
	It may be helpful at shutdown time in case of your aufs is a
	root filesystem. But this behaviour will not guarantee the
	consistency of branch filesystems. To guarantee it, try the
	approach described in the aufs manual, and do not forget
	installing auplink script.
	The fsync_super-2.6.xx.patch does nothing but exports a kernel
	function fsync_super() to modules.
config AUFS_DENY_WRITE_ACCESS_PATCH
	bool "deny_write_access.patch was applied or not"
	depends on AUFS = m
	help
	A security enhancement to deny writing to a running executable
	which exists on an aufs branch filesystem and executed through
	aufs. If you applied
	'CVS_TREE/aufs/patch/deny_write_access.patch' to your kernel
	and you are compiling aufs as a module, then enable this
	option.
	The write_deny_access.patch does nothing but export the
	function.
config AUFS_WORKAROUND_FUSE
	bool "Special handling for FUSE-based filesystem"
	depends on FUSE_FS
	help
	A FUSE-based filesystem may not initialize its inode
	attributes and the FUSE developer thinks the inode attributes
	in a positive dentry which is returned by VFS lookup operation
	are not reliable.
	If you use a FUSE-based filesystem as an aufs branch, and it
	customizes the inode attribute on it without overriding
	fuse_lowlevel_ops.lookup, probably you need to enable this
	configuration.
	If you enable this configuration, aufs calls getattr operation
	in every lookup and revalidate operation for the FUSE-based
	filesystem branch.
	It will have a negative impact to the performance even if you do
	not use a FUSE-based filesystem branch.
config AUFS_HIN_OR_FUSE
	bool
	depends on AUFS_HINOTIFY || AUFS_WORKAROUND_FUSE
	default y
	help
	Automatic configuration for internal use.
config AUFS_DEBUG
	bool "Debug aufs"
	default y
	help
	Enable this to compile aufs internal debug code.
	It will have a negative impact to the performance.
config AUFS_MAGIC_SYSRQ
	bool
	depends on AUFS_DEBUG && MAGIC_SYSRQ
	default y
	help
	Automatic configuration for internal use.
	When aufs supports Magic SysRq, enabled automatically.
config AUFS_COMPAT
	bool "Compatibility with Unionfs (obsolete)"
	help
	This makes aufs compatible with unionfs-style mount options and some
	behaviours.
	The dirs= mount option and =nfsro branch permission flag are always
	interpreted as br: mount option and =ro flag respectively. The
	'debug', 'delete' and 'imap' mount options are ignored.
	If you disable this option, you will get,
	- aufs issues a warning about the ignored mount options
	- the default branch permission flag is set. RW for the first branch,
	  and RO for the rests.
	- the name of a internal file which represents the directory is
	  'opaque', becomes '.wh..wh..opq'
	- the 'diropq=w' mount option is set by default
config AUFS_UNIONFS22_PATCH
	bool "Unionfs-2.2 or later patch is applied or not (obsolete)"
	help
	Unionfs version 2.2 (and later) patch introduces some changes in VFS layer which has an impact to aufs. If you have applied such patch to your kernel, you need to enable this configuration even if you disabled CONFIG_UNIONFS.
config AUFS_UNIONFS23_PATCH
	bool "Unionfs-2.3 or later patch is applied or not (obsolete)"
	select AUFS_SPLICE_PATCH
	select AUFS_UNIONFS22_PATCH
	help
	Unionfs version 2.3 (and later) patch introduces some changes in VFS layer which has an impact to aufs. If you have applied such patch to your kernel, you need to enable this configuration even if you disabled CONFIG_UNIONFS.
endif
