On Tue, Dec 4, 2012 at 10:52 PM, Jim Klimov <jimkli...@cos.ru> wrote:

> On 2012-12-03 18:23, Jim Klimov wrote:
>
>> On 2012-12-02 05:42, Jim Klimov wrote:
>>
>>>
>>> >> 4) Where are the redundancy algorithms specified? Is there any simple
> >>     tool that would recombine a given algo-N redundancy sector with
> >>     some other 4 sectors from a 6-sector stripe in order to try and
> >>     recalculate the sixth sector's contents? (Perhaps part of some
> >>     unit tests?)
>
>
I'm a bit late to the party, but from a previous list thread about
redundancy algorithms, I had found this:

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/vdev_raidz.c

Particularly the
functions "vdev_raidz_reconstruct_p", "vdev_raidz_reconstruct_q",
"vdev_raidz_reconstruct_pq"
(and possibly "vdev_raidz_reconstruct_general") seem like what you are
looking for.

As I understand it, the case where you have both redundancy blocks, but are
missing two data blocks, is the hardest (if you are missing only one data
block, you can either do straight xor with the first redundancy section, or
some LFSR shifting, xor, and then reverse LFSR shifting to use the second
redundancy section).

Wikipedia describes the math to restore from two missing data sections
here, under "computing parity": http://en.wikipedia.org/wiki/Raid6#RAID_6

I don't know any tools to do this for you from arbitrary input, sorry.

Tim
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to