Patent ID: 8856202

Claim:
A method for storing data from a host comprising: receiving an indication of an initial state of a storage volume; receiving, in a mirroring unit operationally independent from the host, a plurality of blocks of the data, the plurality of blocks representing a change from a first state of the storage volume to a second state of the storage volume; storing, in a buffer of the mirroring unit, the plurality of blocks of the data, wherein each of the plurality of blocks of the data in the buffer is associated with a value indicating an order, wherein the associated value corresponds to a sequence in which the host stores the data to a second persistent storage unit; determining that a first persistent storage unit is available for a write operation, and in response, storing, by the mirroring unit operationally independent from the host, from the buffer of the mirroring unit to the first persistent storage unit, each of the plurality of blocks of the data; receiving an indication of a particular location in the sequence; and in response to receiving the indication of the particular location in the sequence: retrieving, from the first persistent storage unit, based on the associated values that correspond to the sequence, one or more distinguished blocks of the data of the plurality of blocks of the data, the distinguished blocks comprising less than all of the plurality of blocks of data; and creating, by applying the distinguished blocks to the initial state of the storage volume, a structure representing a third state of the storage volume, wherein the third state of the storage volume is a state the storage volume was in after the storage volume was in the first state but prior to the storage volume being in the second state.