Patent ID: 8386425

Claim:
A system for storing data and metadata from a local node to a remote node, the system comprising: the local node comprising a mirroring engine configured for: receiving a plurality of data and metadata sets from a mirroring client, each received data or metadata set comprising a data or metadata request from the mirroring client to store the data or metadata set to the remote node, the received data and metadata sets comprising at least one related group, each related group comprising one or more data sets and one metadata set that describes and is associated with each of the one or more data sets in the related group; storing received data and metadata sets to a data structure according to a time order the data and metadata sets are received; transmitting each data set to the remote node through a switching fabric that provides multiple connection paths between the local and remote nodes that results in out-of-order delivery (OOD) of data between the local and remote nodes; transmitting each metadata set, stored in the data structure, to the remote node through the switching fabric only after each data set in its related group is successfully stored to the remote node and only if the metadata set is the first set in the data structure; receiving a completion acknowledgement from the remote node indicating that a particular data or metadata set is successfully stored to the remote node; removing the particular data or metadata set from the data structure; receiving, from the mirroring client, completion queries for querying whether the data or metadata requests are completed; assigning a request identifier for each data and metadata request stored to the data structure; producing a request field for responding to completion queries from the mirroring client; and updating the request field based on the request identifier of the first request stored in the data structure.