Patent ID: 7562188

Claim:
An apparatus, including: one or more processors coupled to machine-accessible memory in a dual-parity redundant array of inexpensive disks (RAID) sub-system, the memory storing information that when accessed by the one or more processors results in the one or more processors sequencing write operations in the RAID sub-system and journaling in a dirty stripe journal in a non-volatile storage medium a portion of write data for a data strip in the RAID sub-system affected by a RAID write in progress, the journaling occurring before the RAID write is allowed to update the write data and associated parity information and Q information in the RAID sub-system, the dirty stripe journal including additional information to be compared by the apparatus with the data strip to determine following an unexpected RAID sub-system reset occurring during the RAID write in progress both (1) which of the parity information and Q information is validly usable to reconstruct an invalid strip in the RAID sub-system and (2) whether the RAID write is in progress, the write operations and the journaling being sequenced such that at least one parity strip in a target stripe is consistent with target stripe data during the write operations, such that the consistency of each one of the at least one parity strip is determinant following the unexpected RAID sub-system reset and such that the at least one parity strip and the target stripe data are recoverable following both a disk drive failure and a power failure occurring while the write operations are in progress; wherein the information stored in the machine-accessible memory when accessed by the one or more processors also results in the one or more processors: establishing an order of operations associated with disk drive updates to a data strip associated with the stripe using a data strip update value, to a first parity strip associated with the stripe using a first parity strip update value, and to a second Q parity strip associated with the stripe using a second Q parity strip update value in the RAID sub-system such that the update to the first parity strip is written before writing the update to the data strip and the update to the second Q parity strip is written after writing the update to the data strip, the stripe being reconstructable based upon the first parity strip and the second Q parity strip; and creating a journal entry in the non-volatile storage medium before writing the update to the first parity strip.