Patent ID: 7734591

Claim:
A storage system, comprising: a destination storage device configured to store a copy of data from a source storage device; a snapshot storage device configured to store a snapshot version of the data from the source storage device; a process configured to initiate a copy operation of the source storage device, wherein the copy operation is configured to copy each block of the source storage device to the destination storage device, and wherein the copy operation is performed in segments, and wherein each segment is a range of data bytes of the source storage device; the storage system configured to receive a write request to modify a requested range of data bytes of the source storage device while the copy operation of the source storage device is in progress, wherein the write request to modify the requested range of data bytes is a write request range; the storage system further configured to determine that the write request range falls within the range of data bytes of the source storage device being copied while the copy operation is in progress; in response to determining that the write request range falls within the range of data bytes of the source storage device being copied while the copy operation is in progress, the storage system further configured to determine if a particular range of the range of data bytes of the source storage device to be modified by the write request range has already been written to the snapshot storage device; in response to determining that the particular range of the range of data bytes of the source storage device to be modified by the write request range has already been written to the snapshot storage device, the copy operation further configured to copy one or more bytes of the particular range of the range of data bytes from the snapshot storage device to the destination storage device, the process further configured to write the write request to the source storage device; and in response to determining that the particular range of the range of data bytes of the source storage device to be modified by the write request range has not already been written to the snapshot storage device, the process further configured to copy the particular range of the range of data bytes of the source storage device to the snapshot storage device, the process further configured to write the write request to the source storage device.