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

### NB: this one is now provided by util-linux/volume_id/*
### 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
