A method, apparatus, and computer instructions for managing versioning
data for memory segments. Responsive to a request from a requester to
allocate a memory segment, the memory segment is allocated. A versioning
data structure is created for the memory segment. The versioning data
structure is used to store changes in data for the memory segment, and
the memory segment includes a pointer to the versioning data structure.
When a change in the data is detected for the memory segment, wherein the
change in the data forms the delta data. Responsive to detecting the
change in the data for the memory segment, the delta data is stored in
the versioning data structure, wherein the versioning data structure is
used to return the data in the memory segment to a prior state.