VirtualBox

Changeset 26995 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Mar 3, 2010 3:27:09 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
58303
Message:

VHD: Fix images with other block sizes than 2MB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/VHDHDDCore.cpp

    r25972 r26995  
    733733    pImage->cbDataBlockBitmap = pImage->cSectorsPerDataBlock / 8;
    734734    pImage->cDataBlockBitmapSectors = pImage->cbDataBlockBitmap / VHD_SECTOR_SIZE;
     735    /* Round up to full sector size */
     736    if (pImage->cbDataBlockBitmap % VHD_SECTOR_SIZE > 0)
     737        pImage->cDataBlockBitmapSectors++;
    735738    LogFlowFunc(("cbDataBlockBitmap=%u\n", pImage->cbDataBlockBitmap));
     739    LogFlowFunc(("cDataBlockBitmapSectors=%u\n", pImage->cDataBlockBitmapSectors));
    736740
    737741    pImage->pu8Bitmap = vhdBlockBitmapAllocate(pImage);
     
    12811285            }
    12821286
    1283             size_t  cbNewBlock = (pImage->cbDataBlock + pImage->cbDataBlockBitmap) * sizeof(uint8_t);
     1287            size_t  cbNewBlock = pImage->cbDataBlock + (pImage->cDataBlockBitmapSectors * VHD_SECTOR_SIZE);
    12841288            uint8_t *pNewBlock = (uint8_t *)RTMemAllocZ(cbNewBlock);
    12851289
     
    17301734    pImage->cbDataBlockBitmap       = pImage->cSectorsPerDataBlock / 8;
    17311735    pImage->cDataBlockBitmapSectors = pImage->cbDataBlockBitmap / VHD_SECTOR_SIZE;
     1736    /* Align to sector boundary */
     1737    if (pImage->cbDataBlockBitmap % VHD_SECTOR_SIZE > 0)
     1738        pImage->cDataBlockBitmapSectors++;
    17321739    pImage->pu8Bitmap               = vhdBlockBitmapAllocate(pImage);
    17331740    if (!pImage->pu8Bitmap)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette