CPC G06F 3/061 (2013.01) [G06F 3/0659 (2013.01); G06F 3/0673 (2013.01)] | 17 Claims |
1. A method of enabling multi-version write pending support in shared global memory, comprising:
maintaining a track index table, the track index table having a plurality of entries, each entry of the track index table identifying a respective track of data of a source volume, and at least some of the entries identifying two or more slots of the shared global memory that are simultaneously bound to the track in the track index table and contain different versions the track of data of the source volume that were written to the slots of the shared global memory at different points in time;
receiving write operations on the tracks of data of the source volume; and
each time a write operation is received on the source volume:
determining from the track index table whether an entry of the track index table for the respective track of data of the source volume identifies a first slot of the shared global memory that is bound to the track;
in response to a determination that the entry of the track index table for the respective track of data of the source volume identifies the first slot of the shared global memory that is bound to the track, determining whether the first slot of the shared global memory contains data that is owed to a snapshot copy of the source volume; and
in response to a determination that the first slot of the shared global memory contains data that is owed to a snapshot copy of the source volume, allocating a second slot of the shared global memory for the write operation while keeping the data that is owed to the snapshot copy of the source volume in the first slot of the shared global memory;
the method further comprising:
determining from the track index table that an entry of the track index table for the respective track of data of the source volume does not identify any slot of the shared global memory that has a slot type of write pending, version write pending, or protected write pending that is bound to the track; and
in response to a determination that the entry of the track index table for the respective track of data of the source volume does not identify any slot of the shared global memory that has a slot type of write pending, version write pending, or protected write pending that is bound to the track, comparing a track level sequence number of the track of data associated with the write operation with a device level sequence number of the source volume.
|