Fix systemtap tapsets (bz 831763) Fix qmp response race caused by spice server bug (bz 744015) Fix text mode screendumps (bz 819155) Don't renable ksm on update (bz 815156) Fix RPM install error on non-virt machines (bz 660629) Obsolete openbios to fix upgrade dependency issues (bz 694802)
49 lines
1.8 KiB
Diff
49 lines
1.8 KiB
Diff
From 69a9776f3e8a4ff5311f78cc63e52ea436dd9cbe Mon Sep 17 00:00:00 2001
|
|
From: Charles Arnold <carnold@suse.com>
|
|
Date: Wed, 9 Nov 2011 09:32:25 -0700
|
|
Subject: [PATCH] block: Fix vpc initialization of the Dynamic Disk Header
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The Data Offset field in the Dynamic Disk Header is an 8 byte field.
|
|
Although the specification (2006-10-11) gives an example of initializing
|
|
only the first 4 bytes, images generated by Microsoft on Windows initialize
|
|
all 8 bytes.
|
|
|
|
Failure to initialize all 8 bytes results in errors from utilities
|
|
like Citrix's vhd-util which checks specifically for the proper Data
|
|
Offset field initialization.
|
|
|
|
Signed-off-by: Charles Arnold <carnold@suse.com>
|
|
Reviewed-by: Andreas Färber <afaerber@suse.de>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit 78439f6af1caa3e8bdafc9fc2d62aeefa53ed63a)
|
|
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
block/vpc.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/block/vpc.c b/block/vpc.c
|
|
index 56865da..ac33e15 100644
|
|
--- a/block/vpc.c
|
|
+++ b/block/vpc.c
|
|
@@ -587,7 +587,11 @@ static int vpc_create(const char *filename, QEMUOptionParameter *options)
|
|
|
|
memcpy(dyndisk_header->magic, "cxsparse", 8);
|
|
|
|
- dyndisk_header->data_offset = be64_to_cpu(0xFFFFFFFF);
|
|
+ /*
|
|
+ * Note: The spec is actually wrong here for data_offset, it says
|
|
+ * 0xFFFFFFFF, but MS tools expect all 64 bits to be set.
|
|
+ */
|
|
+ dyndisk_header->data_offset = be64_to_cpu(0xFFFFFFFFFFFFFFFFULL);
|
|
dyndisk_header->table_offset = be64_to_cpu(3 * 512);
|
|
dyndisk_header->version = be32_to_cpu(0x00010000);
|
|
dyndisk_header->block_size = be32_to_cpu(block_size);
|
|
--
|
|
1.7.11.2
|
|
|