Patent ID: 8307258

Claim:
An apparatus to reconfigure an array of solid-state storage elements protected using parity data, the apparatus comprising: a storage element error module that determines that one or more storage elements are unavailable to store data, the storage element in an array of three or more storage elements, each storage element in the array comprising non-volatile solid-state storage, wherein data is written to a logical page of the array, a logical page of the array comprising a page on each of the storage elements in the array and wherein the array comprises N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data generated from the first ECC chunk, the ECC chunk comprising data and a first error correcting code (“ECC”) generated from the stored data, a portion of the first ECC chunk is stored on each of N number of storage elements; a reconfigure data read module that reads data from storage elements other than the unavailable storage elements, the available data comprising data from a logical page; a data regeneration module that, in response to the available data comprising first parity data, uses the first parity data to regenerate missing data from the first ECC chunk; a data reconfiguration module that generates second ECC from one or more of the available data, the missing data, and data received by a storage controller, the second ECC together with data used to create the second ECC comprise a second ECC chunk, and that generates second parity data from the second ECC chunk, the storage controller controlling data storage on the array of storage elements; and a new configuration storage module that stores a portion of the second ECC chunk and associated second parity data on (N+P)−Z number of storage elements, wherein 1≦Z≦P, Z comprises a number of unavailable storage elements, and the storage element error module, the reconfigure data read module, the data regeneration module, the data reconfiguration module, and the new configuration storage module comprise one or more of hardware and executable code, the executable code stored on a computer readable storage medium.