Patent ID: 8327185

Claim:
A method for storing data comprising: receiving a request to write data; in response the request, selecting, a grid location in a grid to write the data; writing the data to memory, wherein the data is temporarily stored in the memory; updating a data structure to indicate that the grid location is filled; determining, using the data structure, whether a data grid in the grid is filled, wherein the grid location is in the data grid; based on a determination that the data grid is filled: calculating parity values for the grid using the data, wherein the grid comprises a Row Q Parity Group, a Row P Parity Group, a Column Q Parity Group, a Column P Parity Group, and an Intersection Parity Group, wherein each of the parity values is associated with one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group, and wherein parity values associated with the Intersection Parity Group are calculated using the parity values from at least one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, and the Column P Parity Group; determining a physical address in persistent storage corresponding to the grid location; writing the data to a physical location in persistent storage corresponding to the physical address; and writing the parity values to the persistent storage.