2005-04-16 16:20:36 -06:00
|
|
|
#
|
|
|
|
# Block device driver configuration
|
|
|
|
#
|
|
|
|
|
[PATCH] BLOCK: Make it possible to disable the block layer [try #6]
Make it possible to disable the block layer. Not all embedded devices require
it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
the block layer to be present.
This patch does the following:
(*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
support.
(*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
an item that uses the block layer. This includes:
(*) Block I/O tracing.
(*) Disk partition code.
(*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.
(*) The SCSI layer. As far as I can tell, even SCSI chardevs use the
block layer to do scheduling. Some drivers that use SCSI facilities -
such as USB storage - end up disabled indirectly from this.
(*) Various block-based device drivers, such as IDE and the old CDROM
drivers.
(*) MTD blockdev handling and FTL.
(*) JFFS - which uses set_bdev_super(), something it could avoid doing by
taking a leaf out of JFFS2's book.
(*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
linux/elevator.h contingent on CONFIG_BLOCK being set. sector_div() is,
however, still used in places, and so is still available.
(*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
parts of linux/fs.h.
(*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.
(*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.
(*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
is not enabled.
(*) fs/no-block.c is created to hold out-of-line stubs and things that are
required when CONFIG_BLOCK is not set:
(*) Default blockdev file operations (to give error ENODEV on opening).
(*) Makes some /proc changes:
(*) /proc/devices does not list any blockdevs.
(*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.
(*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.
(*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
given command other than Q_SYNC or if a special device is specified.
(*) In init/do_mounts.c, no reference is made to the blockdev routines if
CONFIG_BLOCK is not defined. This does not prohibit NFS roots or JFFS2.
(*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
error ENOSYS by way of cond_syscall if so).
(*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
CONFIG_BLOCK is not set, since they can't then happen.
Signed-Off-By: David Howells <dhowells@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2006-09-30 12:45:40 -06:00
|
|
|
if BLOCK
|
|
|
|
|
2005-04-16 16:20:36 -06:00
|
|
|
menu "Multi-device support (RAID and LVM)"
|
|
|
|
|
|
|
|
config MD
|
|
|
|
bool "Multiple devices driver support (RAID and LVM)"
|
|
|
|
help
|
|
|
|
Support multiple physical spindles through a single logical device.
|
|
|
|
Required for RAID and logical volume management.
|
|
|
|
|
|
|
|
config BLK_DEV_MD
|
|
|
|
tristate "RAID support"
|
|
|
|
depends on MD
|
|
|
|
---help---
|
|
|
|
This driver lets you combine several hard disk partitions into one
|
|
|
|
logical block device. This can be used to simply append one
|
|
|
|
partition to another one or to combine several redundant hard disks
|
|
|
|
into a RAID1/4/5 device so as to provide protection against hard
|
|
|
|
disk failures. This is called "Software RAID" since the combining of
|
|
|
|
the partitions is done by the kernel. "Hardware RAID" means that the
|
|
|
|
combining is done by a dedicated controller; if you have such a
|
|
|
|
controller, you do not need to say Y here.
|
|
|
|
|
|
|
|
More information about Software RAID on Linux is contained in the
|
|
|
|
Software RAID mini-HOWTO, available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>. There you will also learn
|
|
|
|
where to get the supporting user space utilities raidtools.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
|
|
|
config MD_LINEAR
|
|
|
|
tristate "Linear (append) mode"
|
|
|
|
depends on BLK_DEV_MD
|
|
|
|
---help---
|
|
|
|
If you say Y here, then your multiple devices driver will be able to
|
|
|
|
use the so-called linear mode, i.e. it will combine the hard disk
|
|
|
|
partitions by simply appending one to the other.
|
|
|
|
|
|
|
|
To compile this as a module, choose M here: the module
|
|
|
|
will be called linear.
|
|
|
|
|
|
|
|
If unsure, say Y.
|
|
|
|
|
|
|
|
config MD_RAID0
|
|
|
|
tristate "RAID-0 (striping) mode"
|
|
|
|
depends on BLK_DEV_MD
|
|
|
|
---help---
|
|
|
|
If you say Y here, then your multiple devices driver will be able to
|
|
|
|
use the so-called raid0 mode, i.e. it will combine the hard disk
|
|
|
|
partitions into one logical device in such a fashion as to fill them
|
|
|
|
up evenly, one chunk here and one chunk there. This will increase
|
|
|
|
the throughput rate if the partitions reside on distinct disks.
|
|
|
|
|
|
|
|
Information about Software RAID on Linux is contained in the
|
|
|
|
Software-RAID mini-HOWTO, available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>. There you will also
|
|
|
|
learn where to get the supporting user space utilities raidtools.
|
|
|
|
|
|
|
|
To compile this as a module, choose M here: the module
|
|
|
|
will be called raid0.
|
|
|
|
|
|
|
|
If unsure, say Y.
|
|
|
|
|
|
|
|
config MD_RAID1
|
|
|
|
tristate "RAID-1 (mirroring) mode"
|
|
|
|
depends on BLK_DEV_MD
|
|
|
|
---help---
|
|
|
|
A RAID-1 set consists of several disk drives which are exact copies
|
|
|
|
of each other. In the event of a mirror failure, the RAID driver
|
|
|
|
will continue to use the operational mirrors in the set, providing
|
|
|
|
an error free MD (multiple device) to the higher levels of the
|
|
|
|
kernel. In a set with N drives, the available space is the capacity
|
|
|
|
of a single drive, and the set protects against a failure of (N - 1)
|
|
|
|
drives.
|
|
|
|
|
|
|
|
Information about Software RAID on Linux is contained in the
|
|
|
|
Software-RAID mini-HOWTO, available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>. There you will also
|
|
|
|
learn where to get the supporting user space utilities raidtools.
|
|
|
|
|
|
|
|
If you want to use such a RAID-1 set, say Y. To compile this code
|
|
|
|
as a module, choose M here: the module will be called raid1.
|
|
|
|
|
|
|
|
If unsure, say Y.
|
|
|
|
|
|
|
|
config MD_RAID10
|
|
|
|
tristate "RAID-10 (mirrored striping) mode (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_MD && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
RAID-10 provides a combination of striping (RAID-0) and
|
2006-06-26 01:27:50 -06:00
|
|
|
mirroring (RAID-1) with easier configuration and more flexible
|
2005-04-16 16:20:36 -06:00
|
|
|
layout.
|
|
|
|
Unlike RAID-0, but like RAID-1, RAID-10 requires all devices to
|
|
|
|
be the same size (or at least, only as much as the smallest device
|
|
|
|
will be used).
|
|
|
|
RAID-10 provides a variety of layouts that provide different levels
|
|
|
|
of redundancy and performance.
|
|
|
|
|
|
|
|
RAID-10 requires mdadm-1.7.0 or later, available at:
|
|
|
|
|
|
|
|
ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/
|
|
|
|
|
|
|
|
If unsure, say Y.
|
|
|
|
|
2006-06-26 01:27:38 -06:00
|
|
|
config MD_RAID456
|
|
|
|
tristate "RAID-4/RAID-5/RAID-6 mode"
|
2005-04-16 16:20:36 -06:00
|
|
|
depends on BLK_DEV_MD
|
|
|
|
---help---
|
|
|
|
A RAID-5 set of N drives with a capacity of C MB per drive provides
|
|
|
|
the capacity of C * (N - 1) MB, and protects against a failure
|
|
|
|
of a single drive. For a given sector (row) number, (N - 1) drives
|
|
|
|
contain data sectors, and one drive contains the parity protection.
|
|
|
|
For a RAID-4 set, the parity blocks are present on a single drive,
|
|
|
|
while a RAID-5 set distributes the parity across the drives in one
|
|
|
|
of the available parity distribution methods.
|
|
|
|
|
2006-06-26 01:27:38 -06:00
|
|
|
A RAID-6 set of N drives with a capacity of C MB per drive
|
|
|
|
provides the capacity of C * (N - 2) MB, and protects
|
|
|
|
against a failure of any two drives. For a given sector
|
|
|
|
(row) number, (N - 2) drives contain data sectors, and two
|
|
|
|
drives contains two independent redundancy syndromes. Like
|
|
|
|
RAID-5, RAID-6 distributes the syndromes across the drives
|
|
|
|
in one of the available parity distribution methods.
|
|
|
|
|
2005-04-16 16:20:36 -06:00
|
|
|
Information about Software RAID on Linux is contained in the
|
|
|
|
Software-RAID mini-HOWTO, available from
|
|
|
|
<http://www.tldp.org/docs.html#howto>. There you will also
|
|
|
|
learn where to get the supporting user space utilities raidtools.
|
|
|
|
|
2006-06-26 01:27:38 -06:00
|
|
|
If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y. To
|
2005-04-16 16:20:36 -06:00
|
|
|
compile this code as a module, choose M here: the module
|
2006-06-26 01:27:38 -06:00
|
|
|
will be called raid456.
|
2005-04-16 16:20:36 -06:00
|
|
|
|
|
|
|
If unsure, say Y.
|
|
|
|
|
2006-03-27 02:18:10 -07:00
|
|
|
config MD_RAID5_RESHAPE
|
2006-10-03 02:16:00 -06:00
|
|
|
bool "Support adding drives to a raid-5 array"
|
|
|
|
depends on MD_RAID456
|
|
|
|
default y
|
2006-03-27 02:18:10 -07:00
|
|
|
---help---
|
|
|
|
A RAID-5 set can be expanded by adding extra drives. This
|
|
|
|
requires "restriping" the array which means (almost) every
|
|
|
|
block must be written to a different place.
|
|
|
|
|
|
|
|
This option allows such restriping to be done while the array
|
2006-10-03 02:16:00 -06:00
|
|
|
is online.
|
2006-03-27 02:18:10 -07:00
|
|
|
|
2006-06-26 01:27:50 -06:00
|
|
|
You will need mdadm version 2.4.1 or later to use this
|
2006-04-10 23:52:48 -06:00
|
|
|
feature safely. During the early stage of reshape there is
|
|
|
|
a critical section where live data is being over-written. A
|
|
|
|
crash during this time needs extra care for recovery. The
|
|
|
|
newer mdadm takes a copy of the data in the critical section
|
|
|
|
and will restore it, if necessary, after a crash.
|
2006-03-27 02:18:10 -07:00
|
|
|
|
|
|
|
The mdadm usage is e.g.
|
|
|
|
mdadm --grow /dev/md1 --raid-disks=6
|
|
|
|
to grow '/dev/md1' to having 6 disks.
|
|
|
|
|
|
|
|
Note: The array can only be expanded, not contracted.
|
|
|
|
There should be enough spares already present to make the new
|
|
|
|
array workable.
|
|
|
|
|
2006-10-03 02:16:00 -06:00
|
|
|
If unsure, say Y.
|
|
|
|
|
2005-04-16 16:20:36 -06:00
|
|
|
config MD_MULTIPATH
|
|
|
|
tristate "Multipath I/O support"
|
|
|
|
depends on BLK_DEV_MD
|
|
|
|
help
|
|
|
|
Multipath-IO is the ability of certain devices to address the same
|
|
|
|
physical disk over multiple 'IO paths'. The code ensures that such
|
|
|
|
paths can be defined and handled at runtime, and ensures that a
|
|
|
|
transparent failover to the backup path(s) happens if a IO errors
|
|
|
|
arrives on the primary path.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
|
|
|
config MD_FAULTY
|
|
|
|
tristate "Faulty test module for MD"
|
|
|
|
depends on BLK_DEV_MD
|
|
|
|
help
|
|
|
|
The "faulty" module allows for a block device that occasionally returns
|
|
|
|
read or write errors. It is useful for testing.
|
|
|
|
|
|
|
|
In unsure, say N.
|
|
|
|
|
|
|
|
config BLK_DEV_DM
|
|
|
|
tristate "Device mapper support"
|
|
|
|
depends on MD
|
|
|
|
---help---
|
|
|
|
Device-mapper is a low level volume manager. It works by allowing
|
|
|
|
people to specify mappings for ranges of logical sectors. Various
|
|
|
|
mapping types are available, in addition people may write their own
|
|
|
|
modules containing custom mappings if they wish.
|
|
|
|
|
|
|
|
Higher level volume managers such as LVM2 use this driver.
|
|
|
|
|
|
|
|
To compile this as a module, choose M here: the module will be
|
|
|
|
called dm-mod.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
2006-10-03 02:15:35 -06:00
|
|
|
config DM_DEBUG
|
|
|
|
boolean "Device mapper debugging support"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
Enable this for messages that may help debug device-mapper problems.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
2005-04-16 16:20:36 -06:00
|
|
|
config DM_CRYPT
|
|
|
|
tristate "Crypt target support"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
select CRYPTO
|
2006-12-09 15:50:36 -07:00
|
|
|
select CRYPTO_CBC
|
2005-04-16 16:20:36 -06:00
|
|
|
---help---
|
|
|
|
This device-mapper target allows you to create a device that
|
|
|
|
transparently encrypts the data on it. You'll need to activate
|
|
|
|
the ciphers you're going to use in the cryptoapi configuration.
|
|
|
|
|
|
|
|
Information on how to use dm-crypt can be found on
|
|
|
|
|
|
|
|
<http://www.saout.de/misc/dm-crypt/>
|
|
|
|
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
|
|
be called dm-crypt.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
|
|
|
config DM_SNAPSHOT
|
|
|
|
tristate "Snapshot target (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
2006-06-26 01:27:50 -06:00
|
|
|
Allow volume managers to take writable snapshots of a device.
|
2005-04-16 16:20:36 -06:00
|
|
|
|
|
|
|
config DM_MIRROR
|
|
|
|
tristate "Mirror target (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
Allow volume managers to mirror logical volumes, also
|
|
|
|
needed for live data migration tools such as 'pvmove'.
|
|
|
|
|
|
|
|
config DM_ZERO
|
|
|
|
tristate "Zero target (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
A target that discards writes, and returns all zeroes for
|
|
|
|
reads. Useful in some recovery situations.
|
|
|
|
|
|
|
|
config DM_MULTIPATH
|
|
|
|
tristate "Multipath target (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
Allow volume managers to support multipath hardware.
|
|
|
|
|
|
|
|
config DM_MULTIPATH_EMC
|
|
|
|
tristate "EMC CX/AX multipath support (EXPERIMENTAL)"
|
|
|
|
depends on DM_MULTIPATH && BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
Multipath support for EMC CX/AX series hardware.
|
|
|
|
|
2007-05-09 03:33:06 -06:00
|
|
|
config DM_DELAY
|
|
|
|
tristate "I/O delaying target (EXPERIMENTAL)"
|
|
|
|
depends on BLK_DEV_DM && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
A target that delays reads and/or writes and can send
|
|
|
|
them to different devices. Useful for testing.
|
|
|
|
|
|
|
|
If unsure, say N.
|
|
|
|
|
2005-04-16 16:20:36 -06:00
|
|
|
endmenu
|
|
|
|
|
[PATCH] BLOCK: Make it possible to disable the block layer [try #6]
Make it possible to disable the block layer. Not all embedded devices require
it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
the block layer to be present.
This patch does the following:
(*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
support.
(*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
an item that uses the block layer. This includes:
(*) Block I/O tracing.
(*) Disk partition code.
(*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.
(*) The SCSI layer. As far as I can tell, even SCSI chardevs use the
block layer to do scheduling. Some drivers that use SCSI facilities -
such as USB storage - end up disabled indirectly from this.
(*) Various block-based device drivers, such as IDE and the old CDROM
drivers.
(*) MTD blockdev handling and FTL.
(*) JFFS - which uses set_bdev_super(), something it could avoid doing by
taking a leaf out of JFFS2's book.
(*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
linux/elevator.h contingent on CONFIG_BLOCK being set. sector_div() is,
however, still used in places, and so is still available.
(*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
parts of linux/fs.h.
(*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.
(*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.
(*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
is not enabled.
(*) fs/no-block.c is created to hold out-of-line stubs and things that are
required when CONFIG_BLOCK is not set:
(*) Default blockdev file operations (to give error ENODEV on opening).
(*) Makes some /proc changes:
(*) /proc/devices does not list any blockdevs.
(*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.
(*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.
(*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
given command other than Q_SYNC or if a special device is specified.
(*) In init/do_mounts.c, no reference is made to the blockdev routines if
CONFIG_BLOCK is not defined. This does not prohibit NFS roots or JFFS2.
(*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
error ENOSYS by way of cond_syscall if so).
(*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
CONFIG_BLOCK is not set, since they can't then happen.
Signed-Off-By: David Howells <dhowells@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2006-09-30 12:45:40 -06:00
|
|
|
endif
|