From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37484) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEgI0-0003rX-Qi for qemu-devel@nongnu.org; Thu, 20 Sep 2012 08:55:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEgHv-0006eS-Sy for qemu-devel@nongnu.org; Thu, 20 Sep 2012 08:55:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:2037) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEgHv-0006eO-Jx for qemu-devel@nongnu.org; Thu, 20 Sep 2012 08:55:27 -0400 Message-ID: <505B1234.8050303@redhat.com> Date: Thu, 20 Sep 2012 08:55:16 -0400 From: Jeff Cody MIME-Version: 1.0 References: <24009c103b415884ba4a0b885da59a0d523b6047.1347993885.git.jcody@redhat.com> <505AFCD2.9020805@redhat.com> In-Reply-To: <505AFCD2.9020805@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 03/19] block: Framework for reopening files safely Reply-To: jcody@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: stefanha@gmail.com, pbonzini@redhat.com, eblake@redhat.com, qemu-devel@nongnu.org, supriyak@linux.vnet.ibm.com On 09/20/2012 07:24 AM, Kevin Wolf wrote: > Am 18.09.2012 20:53, schrieb Jeff Cody: >> This is based on Supriya Kannery's bdrv_reopen() patch series. >> >> This provides a transactional method to reopen multiple >> images files safely. >> >> Image files are queue for reopen via bdrv_reopen_queue(), and the >> reopen occurs when bdrv_reopen_multiple() is called. Changes are >> staged in bdrv_reopen_prepare() and in the equivalent driver level >> functions. If any of the staged images fails a prepare, then all >> of the images left untouched, and the staged changes for each image >> abandoned. >> >> Block drivers are passed a reopen state structure, that contains: >> * BDS to reopen >> * flags for the reopen >> * opaque pointer for any driver-specific data that needs to be >> persistent from _prepare to _commit/_abort >> * reopen queue pointer, if the driver needs to queue additional >> BDS for a reopen >> >> Signed-off-by: Jeff Cody >=20 >> diff --git a/block.h b/block.h >> index 4d919c2..b1095d8 100644 >> --- a/block.h >> +++ b/block.h >> @@ -97,6 +97,15 @@ typedef enum { >> BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP >> } BlockQMPEventAction; >> =20 >> +typedef QSIMPLEQ_HEAD(BlockReopenQueue, BlockReopenQueueEntry) BlockR= eopenQueue; >> + >> +typedef struct BDRVReopenState { >> + BlockDriverState *bs; >> + int flags; >> + void *opaque; >> +} BDRVReopenState; >=20 > Doesn't compile, it should be typedefed only once: >=20 > In file included from monitor.h:8, > from qemu-timer.c:27: > block.h:106: Fehler: Redefinition des typedef =BBBDRVReopenState=AB > qemu-common.h:248: Anmerkung: Vorherige Deklaration von > =BBBDRVReopenState=AB war hier >=20 Looks like this has been relaxed in later versions of gcc - in 4.7.0 (wha= t I am using under F17), it compiled fine. I'll change this though, so that it compiles under previo= us versions of gcc (and check for any other such errors), and verify that under an older version of gcc. >> --- a/qemu-common.h >> +++ b/qemu-common.h >> @@ -245,6 +245,7 @@ typedef struct NICInfo NICInfo; >> typedef struct HCIInfo HCIInfo; >> typedef struct AudioState AudioState; >> typedef struct BlockDriverState BlockDriverState; >> +typedef struct BDRVReopenState BDRVReopenState; >> typedef struct DriveInfo DriveInfo; >> typedef struct DisplayState DisplayState; >> typedef struct DisplayChangeListener DisplayChangeListener; >=20 > Kevin >=20