* @return changed block information as a bitmap data.
*/
public VmdkBitmap getChangedBlocksOfDisk
(VmdkInfo vmdkInfo, String baseChangeId)
{
final VirtualMachine vm = vmm_.getVirtualMachine();
final VirtualMachineSnapshot vmSnap = snapshot_;
if (baseChangeId == null) {
baseChangeId = "*";
}
logger_.info(vmdkInfo.toString());
logger_.info(baseChangeId); /* debug */
final long capacityInBytes = vmdkInfo.capacityInKB_ * 1024L;
/* block size is fixed to 1MB currently */
VmdkBitmap bmp = new VmdkBitmap(capacityInBytes, 1024 * 1024);
boolean isNotChangedAtAll = false;
try {
long offset = 0;
DiskChangeInfo dci = null;
do {
dci = vm.queryChangedDiskAreas
(vmSnap, vmdkInfo.key_, offset, baseChangeId);
if (offset == 0 && (dci.changedArea == null)) {
/*
ChangeId is not null and DiskChangeInfo.changedArea is null,