On Fri, Feb 21, 2014 at 09:15:41AM -0500, Jeff Cody wrote: > On Fri, Feb 21, 2014 at 01:06:43PM +0100, Alexander Graf wrote: > > > > On 08.11.2013, at 11:12, Stefan Hajnoczi <[email protected]> wrote: > > > /* Header for the region table block */ > > > +#define VHDX_REGION_SIGNATURE 0x69676572 /* "regi" in ASCII */ > > > typedef struct QEMU_PACKED VHDXRegionTableHeader { > > > uint32_t signature; /* "regi" in ASCII */ > > > uint32_t checksum; /* CRC-32C hash of the 64KB table > > > */ > > > @@ -238,6 +247,7 @@ typedef uint64_t VHDXBatEntry; > > > #define VHDX_METADATA_MAX_ENTRIES 2047 /* not including the header */ > > > #define VHDX_METADATA_TABLE_MAX_SIZE \ > > > (VHDX_METADATA_ENTRY_SIZE * (VHDX_METADATA_MAX_ENTRIES+1)) > > > +#define VHDX_METADATA_SIGNATURE 0x617461646174656D /* "metadata" in > > > ASCII */ > > > > This is missing a "ULL" tag. There are a few places where compilation of > > vhdx spawns warnings on 32bit hosts - I haven't checked all of them. > > > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c: In function > > 'vhdx_open': > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c:957: warning: > > integer constant is too large for 'long' type > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c: In function > > 'vhdx_block_translate': > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c:1027: warning: > > integer constant is too large for 'long' type > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c: In function > > 'vhdx_create_new_metadata': > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c:1455: warning: > > integer constant is too large for 'long' type > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c: In function > > 'vhdx_create': > > 02/21 12:22:14 ERROR| utils:0144| [stderr] block/vhdx.c:1812: warning: > > integer constant is too large for 'long' type > >
Ouch. > Thanks Alex. I'll put together a 32-bit vm to build with and verify > everything, and then post patches to fix. You can save time by configuring with -m32. Make sure you have 32-bit libs installed on the build machine. That way you can test 32-bit builds on a 64-bit host without setting up a new machine. Stefan
