From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53214) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XAWOq-0008Of-Gd for qemu-devel@nongnu.org; Thu, 24 Jul 2014 23:42:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XAWOk-00082z-EZ for qemu-devel@nongnu.org; Thu, 24 Jul 2014 23:42:28 -0400 Received: from relay.parallels.com ([195.214.232.42]:41064) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XAWOk-00082l-6v for qemu-devel@nongnu.org; Thu, 24 Jul 2014 23:42:22 -0400 Message-ID: <53D1CFFA.30806@parallels.com> Date: Fri, 25 Jul 2014 07:33:14 +0400 From: "Denis V. Lunev" MIME-Version: 1.0 References: <1406035177-221890-1-git-send-email-den@openvz.org> <1406035177-221890-2-git-send-email-den@openvz.org> <20140724183439.GA24801@localhost.localdomain> In-Reply-To: <20140724183439.GA24801@localhost.localdomain> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/4] block/parallels: extend parallels format header with actual data values List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jeff Cody , "Denis V. Lunev" Cc: Kevin Wolf , qemu-devel@nongnu.org, Stefan Hajnoczi On 24/07/14 22:34, Jeff Cody wrote: > On Tue, Jul 22, 2014 at 05:19:34PM +0400, Denis V. Lunev wrote: >> Parallels image format has several additional fields inside: >> - nb_sectors is actually 64 bit wide. Upper 32bits are not used for >> images with signature "WithoutFreeSpace" and must be explicitely > s/explicitely/explicitly > >> zeroed according to Parallels. They will be used for images with >> signature "WithouFreSpacExt" >> - inuse is magic which means that the image is currently opened for >> read/write or was not closed correctly, the magic is 0x746f6e59 >> - data_off is the location of the first data block. It can be zero >> and in this case > I think you may have forgotten to finish this sentence :) ok > >> This patch adds these values to struct parallels_header and adds >> proper handling of nb_sectors for currently supported WithoutFreeSpace >> images. >> >> WithouFreSpacExt will be covered in the next patch. >> >> Signed-off-by: Denis V. Lunev >> CC: Kevin Wolf >> CC: Stefan Hajnoczi >> --- >> block/parallels.c | 8 +++++--- >> 1 file changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/block/parallels.c b/block/parallels.c >> index 1a5bd35..c44df87 100644 >> --- a/block/parallels.c >> +++ b/block/parallels.c >> @@ -41,8 +41,10 @@ struct parallels_header { >> uint32_t cylinders; >> uint32_t tracks; >> uint32_t catalog_entries; >> - uint32_t nb_sectors; >> - char padding[24]; >> + uint64_t nb_sectors; >> + uint32_t inuse; >> + uint32_t data_off; >> + char padding[12]; >> } QEMU_PACKED; >> >> typedef struct BDRVParallelsState { >> @@ -90,7 +92,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, >> goto fail; >> } >> >> - bs->total_sectors = le32_to_cpu(ph.nb_sectors); >> + bs->total_sectors = (uint32_t)le64_to_cpu(ph.nb_sectors); > I think an explicit bit mask on the upper 32 bits would fit better > here than a cast, especially since neither 'bs->total_sectors' nor > 'ph.nb_sectors' is a uint32_t. E.g.: > > bs->total_sectors = 0xffffffff & le64_to_cpu(ph.nb_sectors); > ok, will do