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

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