linux/fs/exofs
Boaz Harrosh ce5d36aac2 ore: Support for raid 6
This simple patch adds support for raid6 to the ORE.
Most operations and calculations where already for the general
case. Only things left:
* call async_gen_syndrome() in the case of raid6
  (NOTE that the raid6 math is the one supported by the Linux Kernel
   see: crypto/async_tx/async_pq.c)
* call _ore_add_parity_unit() twice with only last call generating
  the redundancy pages.

* Fix couple BUGS in old code
  a. In reads when parity==2 it can happen that per_dev->length=0
     but per_dev->offset was set and adjusted by _ore_add_sg_seg().
     Don't let it be overwritten.
  b. The all 'cur_comp > starting_dev' thing to determine if:
       "per_dev->offset is in the current stripe number or the
       next one."
     Was a complete raid5/4 accident. When parity==2 this is not
     at all true usually. All we need to do is increment si->ob_offset
     once we pass by the first parity device.
     (This also greatly simplifies the code, amen)
  c. Calculation of si->dev rotation can overflow when parity==2.

* Then last enable raid6 in ore_verify_layout()

I want to deeply thank Daniel Gryniewicz who found first all the
bugs in the old raid code, and inspired these patches:
	Inspired-by Daniel Gryniewicz <dang@linuxbox.com>

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
2014-05-22 14:48:15 +03:00
..
BUGS exofs: Documentation 2009-03-31 19:44:38 +03:00
Kbuild exofs: Add SYSFS info for autologin/pNFS export 2012-05-21 12:24:01 +03:00
Kconfig ore: FIX breakage when MISC_FILESYSTEMS is not set 2012-01-06 16:48:14 +02:00
Kconfig.ore ore: Support for raid 6 2014-05-22 14:48:15 +03:00
common.h Fix common misspellings 2011-03-31 11:26:23 -03:00
dir.c [readdir] convert exofs 2013-06-29 12:56:34 +04:00
exofs.h exofs: Add SYSFS info for autologin/pNFS export 2012-05-21 12:24:01 +03:00
file.c fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
inode.c mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00
namei.c don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ore.c ore: Support for raid 6 2014-05-22 14:48:15 +03:00
ore_raid.c ore: Support for raid 6 2014-05-22 14:48:15 +03:00
ore_raid.h ore: Support for raid 6 2014-05-22 14:48:15 +03:00
super.c fs: Mark function as static in exofs/super.c 2014-04-03 11:36:42 +03:00
symlink.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
sys.c exofs: check for allocation failure in uri_store() 2012-08-12 21:54:44 +03:00