Patent ID: 7761424

Claim:
A computer-implemented method for transferring data, comprising: under control of a kernel component, in response to determining that a source file is being opened, determining whether an indicators map is to be created for the source file, wherein the indicators map indicates which source blocks of the source file have been updated since last being transferred to a target file; in response to determining that an indicators map is to be created for the source file, determining whether the indicators map exists; in response to determining that the indicators map exists, determining whether the indicators map is to be trusted by comparing a last modified time and a last source file size stored in the indicators map and the last modified time and the last source file size of the source file; and in response to determining that the last modified time and the last source file size stored in the indicators map matches the last modified time and the last source file size of the source file, initializing the indicators map; in response to receiving a request for the indicators map from a draining agent, in response to determining that the indicators map is in use by the kernel component, copying the indicators map to a renamed indicators map while atomically resetting the indicators map; and in response to determining that the indicators map is not in use by the kernel component, failing the request from the draining agent; and under control of the draining agent, in response to determining that the renamed indicators map exists, using the renamed indicators map to copy source blocks from the source file to target blocks of the target file; and in response to determining that the renamed indicators map does not exist, requesting that the kernel component copy the indicators map to the renamed indicators map while atomically resetting the indicators map; and in response to determining that the request was failed, renaming the indicators map to cause the kernel component to create a new indicators map.