Patent ID: 8346719

Claim:
A method of replicating data in a storage network having at least two nodes, comprising: assigning nodes of the network to be owners of data blocks to issue write memory block commands, each data block being owned by one node; performing a local write of a first data block to an owner node for the first data block, including performing a first process at the owner node and performing a second process at the non-owner nodes in the network: wherein the first process at the owner node includes: issuing a write_lock request for the first data block to all nodes in the network; copying old data for the first data block to a memory location, and issuing a write command to non-owner nodes in the network to write new data for the first data block; waiting for the acknowledgment from each non-owner node indicating that the non-owner node has written the new data for the first data block; writing the new data for the first data block to the owner node, and incrementing a version associated with the first data block; issuing a write_unlock request for the first data block to all nodes on the network; and performing a write_unlock for the first data block on the owner node; and wherein the second process at non-owner nodes includes: receiving the write_lock request for the first data block from the owner node for the first data block; performing a write_lock for the first data block, and copying old data for the first data block into memory; writing the new data for the first data block, and incrementing a version number associated with the first data block; sending the acknowledgment to the owner node; and performing a write_unlock for the first data block.