From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:44265) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROBB1-0004LD-Tl for qemu-devel@nongnu.org; Wed, 09 Nov 2011 11:39:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ROBAx-0003pE-KC for qemu-devel@nongnu.org; Wed, 09 Nov 2011 11:39:03 -0500 Received: from cantor2.suse.de ([195.135.220.15]:36322 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROBAx-0003p2-Bi for qemu-devel@nongnu.org; Wed, 09 Nov 2011 11:38:59 -0500 Message-ID: <4EBAAC9B.3000209@suse.de> Date: Wed, 09 Nov 2011 17:38:51 +0100 From: =?ISO-8859-1?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <4EB91FA20200009100076E0E@novprvoes0310.provo.novell.com> <4EBA4BEC.5040401@redhat.com> <4EBA3D0D0200009100076EF0@novprvoes0310.provo.novell.com> <4EBAA30D.1090209@redhat.com> <4EBA48A90200009100076EF6@novprvoes0310.provo.novell.com> In-Reply-To: <4EBA48A90200009100076EF6@novprvoes0310.provo.novell.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] block: Fix vpc initialization of the Dynamic Disk Header List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Charles Arnold , qemu-devel@nongnu.org Am 09.11.2011 17:32, schrieb Charles Arnold: >>>> On 11/9/2011 at 08:58 AM, in message <4EBAA30D.1090209@redhat.com>, = Kevin Wolf > wrote:=20 >> >> Right, I'm not arguing that your change is wrong. What I'm asking for = is >> just something like: >> >> - dyndisk_header->data_offset =3D be64_to_cpu(0xFFFFFFFF); >> + /* Note: The spec is actually wrong here, it says 0xFFFFFFFF, but >> MS tools expect all 64 bits to be set */ >> + dyndisk_header->data_offset =3D be64_to_cpu(0xFFFFFFFFFFFFFFFFULL= ); >> >> Kevin >=20 > Ok, I had the header comment on the brain, not a code comment.=20 > Here is the revised patch. >=20 > - Charles >=20 >=20 > The Data Offset field in the Dynamic Disk Header is an 8 byte field. > Although the specification (2006-10-11) gives an example of initializin= g > only the first 4 bytes, images generated by Microsoft on Windows initia= lize > all 8 bytes. >=20 > 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. >=20 > Signed-off-by: Charles Arnold Reviewed-by: Andreas F=E4rber Andreas >=20 > diff --git a/block/vpc.c b/block/vpc.c > index 416f489..179c6ae 100644 > --- a/block/vpc.c > +++ b/block/vpc.c > @@ -585,7 +585,11 @@ static int vpc_create(const char *filename, QEMUOp= tionParameter *options) >=20 > memcpy(dyndisk_header->magic, "cxsparse", 8); >=20 > - dyndisk_header->data_offset =3D 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 =3D be64_to_cpu(0xFFFFFFFFFFFFFFFFULL)= ; > dyndisk_header->table_offset =3D be64_to_cpu(3 * 512); > dyndisk_header->version =3D be32_to_cpu(0x00010000); > dyndisk_header->block_size =3D be32_to_cpu(block_size); --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg