On Tue, Dec 20, 2011 at 8:53 PM, bbgordonn <907...@bugs.launchpad.net> wrote: > Public bug reported: > > VMDK4 files can have a footer in the last block, which is the same > datastructure as the header but must be used instead if present. In this > case, the gd_offset in the usual header at the beginning of the file is the > special flag -1 (VMDK 1.1 spec, page 17, "GD_AT_END > "). qemu-img doesn't know about this flag so it goes on to try to read > extents with a bogus l1_table from the wrong location in the file. > > I have regression-tested this with various OVAs exported from > VSphere/ESXi 3 and 4. Current master and all previous QEMU versions were > unable to import any compressed VMDKs with a footer. It now works on all > the ones I have. > > bb45ded93115ad4303471c9a492579dc36716547 changed the order of gd_offset > and rgd_offset in the VMDK4Header struct. Page 8 of the VMDK 1.1 spec > from VMWare shows the structure as rgd_ then gd_, while QEMU now has gd_ > *before* rgd_offset. I was only able to get VMDK conversion to work by > switching the order back to that specified by VMWare and previously used > by QEMU. I don't know what VMDK this commit is referring to, so I can't > test to see if I've broken it. :( > > I will submit this patch to the mailing list if I get a chance, but I'm > also uploading it here so I don't lose it. > > ** Affects: qemu > Importance: Undecided > Status: New > > -- > You received this bug notification because you are a member of qemu- > devel-ml, which is subscribed to QEMU. > https://bugs.launchpad.net/bugs/907063
Thanks for reporting this. I have CCed Fam who worked on VMDK this summer. Please submit patches to the mailing list according to the guidelines here: http://wiki.qemu.org/Contribute/SubmitAPatch Stefan -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/907063 Title: Error reading VMDK4 with footer instead of header Status in QEMU: New Bug description: VMDK4 files can have a footer in the last block, which is the same datastructure as the header but must be used instead if present. In this case, the gd_offset in the usual header at the beginning of the file is the special flag -1 (VMDK 1.1 spec, page 17, "GD_AT_END "). qemu-img doesn't know about this flag so it goes on to try to read extents with a bogus l1_table from the wrong location in the file. I have regression-tested this with various OVAs exported from VSphere/ESXi 3 and 4. Current master and all previous QEMU versions were unable to import any compressed VMDKs with a footer. It now works on all the ones I have. bb45ded93115ad4303471c9a492579dc36716547 changed the order of gd_offset and rgd_offset in the VMDK4Header struct. Page 8 of the VMDK 1.1 spec from VMWare shows the structure as rgd_ then gd_, while QEMU now has gd_ *before* rgd_offset. I was only able to get VMDK conversion to work by switching the order back to that specified by VMWare and previously used by QEMU. I don't know what VMDK this commit is referring to, so I can't test to see if I've broken it. :( I will submit this patch to the mailing list if I get a chance, but I'm also uploading it here so I don't lose it. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/907063/+subscriptions