Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16a53ecc authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds
Browse files

[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: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 16f17b39
Loading
Loading
Loading
Loading
+12 −26
Original line number Diff line number Diff line
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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
+1039 −122

File changed.

Preview size limit exceeded, changes collapsed.

drivers/md/raid6main.c

deleted100644 → 0
+0 −2427

File deleted.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -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;