[PATCH] md: merge raid5 and raid6 code
There is a lot of commonality between raid5.c and raid6main.c. This patches merges both into one module called raid456. This saves a lot of code, and paves the way for online raid5->raid6 migrations. There is still duplication, e.g. between handle_stripe5 and handle_stripe6. This will probably be cleaned up later. Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
16f17b39f3
Коммит
16a53ecc35
|
@ -104,8 +104,8 @@ config MD_RAID10
|
|||
|
||||
If unsure, say Y.
|
||||
|
||||
config MD_RAID5
|
||||
tristate "RAID-4/RAID-5 mode"
|
||||
config MD_RAID456
|
||||
tristate "RAID-4/RAID-5/RAID-6 mode"
|
||||
depends on BLK_DEV_MD
|
||||
---help---
|
||||
A RAID-5 set of N drives with a capacity of C MB per drive provides
|
||||
|
@ -116,14 +116,22 @@ config MD_RAID5
|
|||
while a RAID-5 set distributes the parity across the drives in one
|
||||
of the available parity distribution methods.
|
||||
|
||||
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.
|
||||
|
||||
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-4/RAID-5 set, say Y. To
|
||||
If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y. To
|
||||
compile this code as a module, choose M here: the module
|
||||
will be called raid5.
|
||||
will be called raid456.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
|
@ -154,28 +162,6 @@ config MD_RAID5_RESHAPE
|
|||
There should be enough spares already present to make the new
|
||||
array workable.
|
||||
|
||||
config MD_RAID6
|
||||
tristate "RAID-6 mode"
|
||||
depends on BLK_DEV_MD
|
||||
---help---
|
||||
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.
|
||||
|
||||
RAID-6 requires mdadm-1.5.0 or later, available at:
|
||||
|
||||
ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/
|
||||
|
||||
If you want to use such a RAID-6 set, say Y. To compile
|
||||
this code as a module, choose M here: the module will be
|
||||
called raid6.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config MD_MULTIPATH
|
||||
tristate "Multipath I/O support"
|
||||
depends on BLK_DEV_MD
|
||||
|
|
|
@ -8,7 +8,7 @@ dm-multipath-objs := dm-hw-handler.o dm-path-selector.o dm-mpath.o
|
|||
dm-snapshot-objs := dm-snap.o dm-exception-store.o
|
||||
dm-mirror-objs := dm-log.o dm-raid1.o
|
||||
md-mod-objs := md.o bitmap.o
|
||||
raid6-objs := raid6main.o raid6algos.o raid6recov.o raid6tables.o \
|
||||
raid456-objs := raid5.o raid6algos.o raid6recov.o raid6tables.o \
|
||||
raid6int1.o raid6int2.o raid6int4.o \
|
||||
raid6int8.o raid6int16.o raid6int32.o \
|
||||
raid6altivec1.o raid6altivec2.o raid6altivec4.o \
|
||||
|
@ -25,8 +25,7 @@ obj-$(CONFIG_MD_LINEAR) += linear.o
|
|||
obj-$(CONFIG_MD_RAID0) += raid0.o
|
||||
obj-$(CONFIG_MD_RAID1) += raid1.o
|
||||
obj-$(CONFIG_MD_RAID10) += raid10.o
|
||||
obj-$(CONFIG_MD_RAID5) += raid5.o xor.o
|
||||
obj-$(CONFIG_MD_RAID6) += raid6.o xor.o
|
||||
obj-$(CONFIG_MD_RAID456) += raid456.o xor.o
|
||||
obj-$(CONFIG_MD_MULTIPATH) += multipath.o
|
||||
obj-$(CONFIG_MD_FAULTY) += faulty.o
|
||||
obj-$(CONFIG_BLK_DEV_MD) += md-mod.o
|
||||
|
|
1059
drivers/md/raid5.c
1059
drivers/md/raid5.c
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -212,6 +212,7 @@ struct raid5_private_data {
|
|||
mddev_t *mddev;
|
||||
struct disk_info *spare;
|
||||
int chunk_size, level, algorithm;
|
||||
int max_degraded;
|
||||
int raid_disks, working_disks, failed_disks;
|
||||
int max_nr_stripes;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче