#
# 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
