#
# 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 y
	help
	  chattr changes the file attributes on a second extended file system.

### config E2FSCK
###	bool "e2fsck"
###	default y
###	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 y
	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 y
	help
	  lsattr lists the file attributes on a second extended file system.

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

### config E2LABEL
###	bool "e2label"
###	default y
###	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 y
###	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
