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

menu "Linux Ext2 FS Progs"

INSERT

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
