#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Linux Ext2 FS Progs"

config CONFIG_CHATTR
	bool "chattr"
	default n
	help
	  chattr changes the file attributes on a second extended file system.

config CONFIG_E2FSCK
	bool "e2fsck"
	default n
	help
	  e2fsck is used to check Linux second extended file systems (ext2fs).
	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also 
	  provided.

config CONFIG_FSCK
	bool "fsck"
	default n
	help
	  fsck is used to check and optionally repair one or more filesystems.
	  In actuality, fsck is simply a front-end for the various file system 
	  checkers (fsck.fstype) available under Linux.

config CONFIG_LSATTR
	bool "lsattr"
	default n
	help
	  lsattr lists the file attributes on a second extended file system.

config CONFIG_MKE2FS
	bool "mke2fs"
	default n
	help
	  mke2fs is used to create an ext2/ext3 filesystem.  The normal compat 
	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.

config CONFIG_TUNE2FS
	bool "tune2fs"
	default n
	help
	  tune2fs allows the system administrator to adjust various tunable 
	  filesystem parameters on Linux ext2/ext3 filesystems.

config CONFIG_E2LABEL
	bool "e2label"
	default n
	depends on CONFIG_TUNE2FS
	help
	  e2label will display or change the filesystem label on the ext2 
	  filesystem located on device.

config CONFIG_FINDFS
	bool "findfs"
	default n
	depends on CONFIG_TUNE2FS
	help
	  findfs will search the disks in the system looking for a filesystem 
	  which has a label matching label or a UUID equal to uuid.

endmenu
