Patent ID: 7246259

Claim:
A storage system, comprising: N storage elements, organized as (N−2) storage elements for storing data, a storage element for storing a P parity, and a storage element for storing a Q parity, said N storage elements storing at least one block comprising a group of M symbols from each of said N storage elements, N being an integer greater than 3 and M being an integer greater than 1; a storage controller for controlling a data transfer between said N storage elements and at least one host, said storage controller comprising: a host interface for coupling said storage controller to at least one host; a storage element interface for coupling said storage controller to said N storage elements; a buffer memory for temporarily storing a block of symbols associated with symbols from said data transfer, said block of symbols comprising M sets of N symbols, each of said M sets including at least one data symbol, a P parity symbol, and a Q parity symbol; and a parity system, for maintaining said P parity symbols, said Q parity symbols, and for regenerating missing symbols in said block of symbols from up to two failed storage elements of said N storage elements; wherein said parity system calculates each P parity symbol in said block using a first relationship including said P parity symbol and (N−2) data symbols from each one of (N−2) storage elements which stores data, such that each data symbol in said block is associated with only one P parity symbol, and no two first relationships in said block share a common symbol; and said parity system calculates each Q parity symbol in said block using a second relationship including said Q parity symbol, one of said P parity symbol, and (N−3) data symbols from all but one of said (N−2) storage elements which store data, such that no two second relationships in said block miss a same data symbol and no two second relationships in said block share a common symbol.