Patent ID: 7373366
Filing Date: 2008-05-13
Classification: G06F,Y10S

Abstract:
1. A method for taking snapshots of a data storage volume, the method comprising: maintaining a data structure for a provision in the data storage volume, the data structure comprising a first data field, a second data field, and a third data field; storing a sequence number in the first data field that identifies a snapshot lifetime in which the provision was written; storing a bitmap in the second data field identifying the portions of the provision that were written during the snapshot lifetime identified by the first data field; storing a pointer to a next data structure for another snapshot lifetime for the provision in the third data field; receiving a request to write to the provision during a current snapshot lifetime; in response to the request, determining based on the contents of the data structure if the provision was written to during a previous snapshot lifetime; in response to determining that the provision was written to during a previous snapshot lifetime, allocating a new provision in the data storage volume, performing the requested write in the new provision, updating the first data field of a data structure associated with the new provision to reflect that the new provision was written during the current snapshot lifetime, updating the second data field of the data structure associated with the new provision to reflect the write to the new provision, and updating the third data field of the data structure associated with the new provision to point to the data structure for the provision for the previous snapshot lifetime; and in response to determining that the provision was not written to during the lifetime of a previous snapshot, allocating a territory for the provision, performing the requested write in the territory, updating the first field of the data structure to reflect that the provision was written in the current snapshot lifetime, and updating the second data field of the data structure to reflect the write to the provision.