Patent ID: 8433979

Claim:
A system for storing data in a storage array, the system comprising: a storage array comprising a plurality of storage devices; and an array controller configured for: receiving write data; arranging the write data in r rows and n columns of pages; encoding the write data using a plurality of horizontal and vertical erasure correcting codes on the pages such that a first row contains t 1 parity pages with t 1 ≧1, a second row contains t 2 parity pages with t 2 ≧t 1 , a third row contains t 3 parity pages with t 3 ≧t 2 , and so on, up to an rth row which contains t r parity pages with t r ≧t r−1 and n>t r >t 1 wherein the encoding allows recovery from up to t r erasures in any one of the r rows, up to t r−1 erasures in any one of the remaining r−1 rows, up to t r−2 erasures in any one of the remaining r−2 rows, and so on, such that the encoding allows recovery from up to t 1 erasures in the last remaining row, and output from the encoding includes encoded write data; and writing the encoded write data as a write stripe across n storage devices in a storage array.