#
# 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
	select PLATFORM_LINUX
	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
