A method for generating a consistent point in time copy of data, the
method includes: selecting at least one selected data block to be copied
from a source volume to a target volume in response to a request to
generate a consistent point in time copy of multiple data blocks; waiting
until the source volume is ready to send the at least one selected data
block to a remote volume while queuing at least one data block modify
request; de-queuing the at least one queued modify requests while copying
the at least one selected data block from the source volume to the target
volume; wherein the copying includes utilizing a first copying mechanism
to copy a first selected data block if a request to modify the first
selected block is de-queued before the first selected data block is
copied to the target volume; else, the copying includes using a second
copying mechanism that is slower than the first copying mechanism.