Restoring data, without suspending access to the data for the entire time
that the data is being restored. Access is suspended only while a portion
of the data is restored, before access to all of the data is permitted. A
driver virtualizes any remaining unrestored data. To accomplish this, the
driver maintains a list of data yet to be restored. If a request to read
a portion of the data is then received, and the requested portion is on
the list, the driver restores the requested portion before permitting the
read request to be fulfilled. The restored portion is then removed from
the list of unrestored data. If a request to write a portion of the data
is received, the write is permitted, and the location just written to is
removed from the list without restoring.