Patent ID: 7617365

Claim:
A method of synchronizing data storage, comprising: determining whether at least one read or write command is pending for at least one destination physical target provisioned as at least one member of a mirrored virtual target; and avoiding deadlock by providing a synchronization command to write data from a source physical target to said at least one physical destination target only if no read or write command is pending at said at least one destination physical target; wherein said step of determining includes determining whether at least one read or write command is pending for said at least one destination physical target by providing a first request to a first egress port in communication with said source physical target and at least one second request to at least one second egress port in communication with said at least one destination physical target; receiving a first success response if no read or write commands are pending at said source physical target and a first failure response if a read or write command is pending at said source physical target; receiving a second success response if no read or write commands are pending at said at least one destination physical target and a second failure response if a read or write command is pending at said at least one destination physical target; updating a resource table to indicate that a read or write command is pending for said source physical target if said first success response is provided, and updating said resource table to indicate that a read or write command is pending for said at least one destination target if said second success response is provided; and further comprising: providing a first abort command to said first egress port if said first success response is received and said second failure response is received; updating said resource table to indicate that no read or write commands are pending for said source physical target in response to said first abort command; providing a second abort command to said at least one second egress port if said first failure response is received and said second success response is received; and updating said resource table to indicate that no read or write commands are pending for said at least one physical destination target in response to said second abort command.