Legal claims defining the scope of protection, as filed with the USPTO.
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.
2. The method of claim 1 , further comprising prior to performing the requested write: determining whether the requested write is for a complete chunk of the provision or only a portion of a chunk; and in response to determining that the write is for only a portion of a chunk, performing a read-modify-write operation to migrate previous contents of the chunk from a previous snapshot lifetime to the current snapshot lifetime.
3. The method of claim 2 , further comprising: receiving a request to read a portion of a provision; and in response to the read request, using the contents of the third data field to iterate through each of the data structures for the provision to locate the data structure having the highest sequence number and that has valid data for the portion to be read as indicated by the bitmap, and performing the requested read on the provision identified by the located data structure.
4. A computer storage media having computer-readable instructions stored thereon which, when executed, cause a computer to perform the method of claim 1 .
5. 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 for storing a sequence number that identifies a snapshot lifetime in which the provision was written, a second data field for storing a bitmap identifying the portions of the provision that were written during the snapshot lifetime identified by the first data field, and a third data field for storing a pointer to a next data structure for another snapshot lifetime for the provision; receiving a request to write to the provision; 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, performing the requested write in the new provision, and updating the first data field of the data structure associated with the new provision to reflect that the provision was written during a 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 a previous snapshot lifetime, allocating a territory for the new provision, performing the requested write in the allocated territory, updating the first field of the data structure corresponding to the allocated provision to reflect that the provision was written in the current snapshot lifetime, and updating the second data field of the data structure corresponding to the allocated provision to reflect the write to the new provision.
6. The method of claim 5 , further comprising prior to performing the requested write: determining whether the requested write is for a complete chunk of the provision or only a portion of a chunk; and in response to determining that the write is for only a portion of a chunk, performing a read-modify-write operation to migrate the contents of the chunk from a previous snapshot lifetime to the current snapshot lifetime.
7. The method of claim 6 , further comprising: receiving a request to read a portion of the provision; and in response to the request to read a portion of the provision, iterating through each of the data structures for the provision to locate the data structure having the highest sequence number and that has valid data for the portion to be read as indicated by the bitmap, and performing the requested read on the provision identified by the located data structure.
8. A computer storage media having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to perform the method of claim 5 .
Unknown
May 13, 2008
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.