Patent ID: 7558981

Claim:
A method for mirroring data between controllers in a storage system, comprising: with respect to a first controller operating as a primary controller: receiving first customer data from a host; creating a number of frames including at least a first frame, wherein the first frame includes at least some of the first customer data, wherein said creating the first frame includes generating metadata associated with the first customer data included in the first frame and including the metadata in the first frame; placing the at least some of the first customer data included in the first frame in a write cache in the first controller; sending the number of frames including the first frame to a second controller, wherein the first controller is operating as a primary controller with respect to the first customer data and the second controller is operating as a secondary controller with respect to the first customer data; with respect to the second controller: maintaining a count value; receiving the first frame; for each frame of data received from the first controller, incrementing the count value; and assigning a current count value to each frame included in the number of frames; determining a location in memory associated with the second controller for the metadata associated with the first customer data, wherein the location is based on an offset indexing a portion of said memory for maintaining the customer data to a portion of the memory for maintaining the metadata associated with the customer data; placing at least some of the metadata associated with the first customer data in the determined location in memory associated with the second controller; in response to a failure of the first controller, performing a failover operation, wherein the second controller: determines that at least some metadata for at least two different frames mirrored to the second controller matches; determining which of the frames with matching metadata is oldest from the count value for the frames with matching metadata; and discarding the oldest of the matching frames.