#
# 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 n  # off: it is too limited compared to upstream version
	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
