Patent ID: 7254685

Claim:
A method of providing remote replication of data comprising the steps of: receiving a stream of data including independent streams of dependent writes; discerning dependent writes from independent writes; and causing writes from independent streams to be stored on a storage device in parallel until a dependent write in a stream needs to be stored on the storage device; wherein the step of discerning comprises the steps of: assigning a sequence number to each write, the sequence number indicating a time interval in which the write begins; and assigning a horizon number to each write, the horizon number indicating a time interval in which a first write that started at a particular sequence number ends; wherein the step of causing comprises the steps of: causing a write to be stored on a storage device and assigning the horizon number associated with the write as a replication number; causing another write to be stored on a storage device if the sequence number associated with the write is less than the replication number; waiting until all outstanding writes complete if the sequence number associated with the write is greater than the replication number.