fix(vmdk): ensure descriptor have enough free space (#6163)
This commit is contained in:
committed by
GitHub
parent
ee47a361b1
commit
915e4b66a3
@@ -12,6 +12,7 @@
|
|||||||
> Users must be able to say: “I had this issue, happy to know it's fixed”
|
> Users must be able to say: “I had this issue, happy to know it's fixed”
|
||||||
|
|
||||||
- [Plugins] Automatically configure plugins when a configuration file is imported (PR [#6171](https://github.com/vatesfr/xen-orchestra/pull/6171))
|
- [Plugins] Automatically configure plugins when a configuration file is imported (PR [#6171](https://github.com/vatesfr/xen-orchestra/pull/6171))
|
||||||
|
- [VMDK Export] Fix `VBOX_E_FILE_ERROR (0x80BB0004)` when importing in VirtualBox (PR [#6163](https://github.com/vatesfr/xen-orchestra/pull/6163))
|
||||||
|
|
||||||
### Packages to release
|
### Packages to release
|
||||||
|
|
||||||
@@ -31,5 +32,6 @@
|
|||||||
> In case of conflict, the highest (lowest in previous list) `$version` wins.
|
> In case of conflict, the highest (lowest in previous list) `$version` wins.
|
||||||
|
|
||||||
- xen-api minor
|
- xen-api minor
|
||||||
|
- xo-vmdk-to-vhd minor
|
||||||
- @xen-orchestra/proxy patch
|
- @xen-orchestra/proxy patch
|
||||||
- xo-server patch
|
- xo-server patch
|
||||||
|
|||||||
@@ -53,7 +53,17 @@ ddb.geometry.heads = "${geometry.heads}"
|
|||||||
ddb.geometry.cylinders = "${geometry.cylinders}"
|
ddb.geometry.cylinders = "${geometry.cylinders}"
|
||||||
`
|
`
|
||||||
const utf8Descriptor = Buffer.from(descriptor, 'utf8')
|
const utf8Descriptor = Buffer.from(descriptor, 'utf8')
|
||||||
const descriptorSizeSectors = Math.ceil(utf8Descriptor.length / SECTOR_SIZE)
|
|
||||||
|
// virtual box add some additional properties to the descriptor like:
|
||||||
|
// ddb.uuid.image="9afa1dd0-d966-4279-a762-b7fbb0136308"
|
||||||
|
// ddb.uuid.modification="cd9be63c-4953-44d0-8325-45635a9ca396"
|
||||||
|
// ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
|
||||||
|
// ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
|
||||||
|
//
|
||||||
|
// but does not ensure there is enough free room and overwrite the data (the grain directory), breaking the file
|
||||||
|
//
|
||||||
|
// adding 10 sectors of padding seems to be enough to work-around the issue
|
||||||
|
const descriptorSizeSectors = Math.ceil(utf8Descriptor.length / SECTOR_SIZE) + 10
|
||||||
const descriptorBuffer = Buffer.alloc(descriptorSizeSectors * SECTOR_SIZE)
|
const descriptorBuffer = Buffer.alloc(descriptorSizeSectors * SECTOR_SIZE)
|
||||||
utf8Descriptor.copy(descriptorBuffer)
|
utf8Descriptor.copy(descriptorBuffer)
|
||||||
const headerData = createStreamOptimizedHeader(diskCapacitySectors, descriptorSizeSectors)
|
const headerData = createStreamOptimizedHeader(diskCapacitySectors, descriptorSizeSectors)
|
||||||
|
|||||||
Reference in New Issue
Block a user