Patent ID: 7076606

Claim:
A method for storing data from a host in a fault-tolerant storage subsystem having an array of failure independent data storage units, comprising the steps of; dividing the data storage area on the data storage units into a logical mirror area and a logical stripe area; when storing data from a host in the mirror area, duplicating the data by keeping a duplicate copy of the data on a pair of storage units; and when storing host data in the stripe area, storing data as stripes of blocks, including data blocks and associated error-correction blocks, and further storing the host data in a data set in the stripe area; storing a log cache associated with said host data in the mirror area, wherein the log cache is duplicated in the mirror area, wherein the log cache comprises a write log having multiple time-sequential entries, each entry including a data block, the data block address in the data set, and a data block time stamp; in response to a request from a host that is logically external to the storage subsystem, to write data to the storage subsystem for storage therein: storing the host data in the log cache in the mirror area, wherein said host data is duplicated in the mirror area; acknowledging completion of the write to the host; copying said host data from the log cache in the mirror area to the data set in the stripe area by copying the host data in said log cache entry in the mirror area to said block address in the data set in the stripe area; wherein said request from the host includes said host data and a block address in the data set for storing the host data, such that the step of storing the host data in the log cache in response to said host request further includes the steps of entering the host data, said block address and a time stamp in an entry in the log cache; archiving said log cache entry in an archive; and purging said entry from the cache log.