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

menu "Linux Ext2 FS Progs"

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

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 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 LSATTR
	bool "lsattr"
	default n
	help
	  lsattr lists the file attributes on a second extended file system.

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 TUNE2FS
	bool "tune2fs"
	default n
	help
	  tune2fs allows the system administrator to adjust various tunable
	  filesystem parameters on Linux ext2/ext3 filesystems.

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

config FINDFS
	bool "findfs"
	default n
	depends on 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
