yes, i debugged, and the following fails. So the modification uuid is not
correctly set after conversion
static int vdiValidateHeader(PVDIHEADER pHeader)
{
...
if (RTUuidIsNull(getImageModificationUUID(pHeader)))
{
LogRel(("VDI: uuid of modificator is 0\n"));
fFailed = true;
}
}
--- On Wed, 10/7/09, Klaus Espenlaub <[email protected]> wrote:
From: Klaus Espenlaub <[email protected]>
Subject: Re: [vbox-dev] VDCopy() fix for VHD
To: "Huihong Luo" <[email protected]>
Cc: [email protected]
Date: Wednesday, October 7, 2009, 2:02 PM
Huihong Luo wrote:
> after the fix, VHD->VMDk seems to be working fine, but VHD->VDI still not
> working, the generated vdi disk throws invalid header error.
Don't think it's a good idea to apply the change before understanding what's
still going wrong in the VDI case. Should be pretty easy to figure out, by
running "VBoxManage internalcommands dumphdinfo /path/to/broken.vdi", and
setting a breakpoint on vdiValidateHeader. With a little bit of single stepping
one should immediately see what's causing trouble. The VDI code is very
paranoid.
Klaus
>
> --- On *Wed, 10/7/09, Huihong Luo /<[email protected]>/* wrote:
>
>
> From: Huihong Luo <[email protected]>
> Subject: [vbox-dev] VDCopy() fix for VHD
> To: [email protected]
> Date: Wednesday, October 7, 2009, 12:30 AM
>
> Can you guys add the following code to function VDCopy() in
> VBoxHDD.cpp? right before VDCreateBase() is called.
> It resets the geometry if cSectors > 63, VHD disk somehow has more
> than 63 sectors.
> /* vmlite, fix converting error from VHD */
> if (PCHSGeometryFrom.cHeads > 16 || PCHSGeometryFrom.cSectors > 63)
> {
> Assert(RT_MIN(cbSize / 512 / 16 / 63, 16383) -
> (unsigned int)RT_MIN(cbSize / 512 / 16 / 63, 16383) == 0);
> PCHSGeometryFrom.cCylinders = (unsigned int)RT_MIN(cbSize / 512
> / 16 / 63, 16383);
> PCHSGeometryFrom.cHeads = 16;
> PCHSGeometryFrom.cSectors = 63;
> }
> /* vmlite */
> rc = VDCreateBase(pDiskTo, pszBackend, pszFilename,
> cbSize,
> uImageFlags, szComment,
> &PCHSGeometryFrom, &LCHSGeometryFrom,
> NULL, uOpenFlagsFrom &
> ~VD_OPEN_FLAGS_READONLY, NULL, NULL);
> if (RT_SUCCESS(rc) && !RTUuidIsNull(&ImageUuid))
>
>pDiskTo->pLast->Backend->pfnSetUuid(pDiskTo->pLast->pvBackendData,
> &ImageUuid);
> if (RT_SUCCESS(rc) && !RTUuidIsNull(&ParentUuid))
>
>pDiskTo->pLast->Backend->pfnSetParentUuid(pDiskTo->pLast->pvBackendData,
> &ParentUuid);
> - Huihong
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> vbox-dev mailing list
> [email protected]
> <http://us.mc343.mail.yahoo.com/mc/[email protected]>
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> vbox-dev mailing list
> [email protected]
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev