From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VF14k-0005HN-Nl for qemu-devel@nongnu.org; Thu, 29 Aug 2013 08:11:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VF14f-0000a8-Be for qemu-devel@nongnu.org; Thu, 29 Aug 2013 08:11:46 -0400 Received: from mail-ea0-x236.google.com ([2a00:1450:4013:c01::236]:43834) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VF14f-0000Zx-3u for qemu-devel@nongnu.org; Thu, 29 Aug 2013 08:11:41 -0400 Received: by mail-ea0-f182.google.com with SMTP id o10so199227eaj.13 for ; Thu, 29 Aug 2013 05:11:40 -0700 (PDT) Date: Thu, 29 Aug 2013 14:11:37 +0200 From: Stefan Hajnoczi Message-ID: <20130829121137.GA17744@stefanha-thinkpad.redhat.com> References: <1376070245-22557-1-git-send-email-charlie@ctshepherd.com> <1376070245-22557-4-git-send-email-charlie@ctshepherd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1376070245-22557-4-git-send-email-charlie@ctshepherd.com> Subject: Re: [Qemu-devel] [RFC v2 04/15] Convert .bdrv_open and .bdrv_file_open to coroutine_fn List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Charlie Shepherd Cc: kwolf@redhat.com, pbonzini@redhat.com, gabriel@kerneis.info, qemu-devel@nongnu.org On Fri, Aug 09, 2013 at 07:43:54PM +0200, Charlie Shepherd wrote: > Signed-off-by: Charlie Shepherd > --- > block.c | 8 ++++---- > block/blkdebug.c | 4 ++-- > block/blkverify.c | 4 ++-- > block/bochs.c | 4 ++-- > block/cloop.c | 4 ++-- > block/cow.c | 4 ++-- > block/curl.c | 12 ++++++------ > block/dmg.c | 4 ++-- > block/nbd.c | 6 +++--- > block/parallels.c | 4 ++-- > block/qcow.c | 4 ++-- > block/qcow2.c | 2 +- > block/qed.c | 4 ++-- > block/raw-posix.c | 20 ++++++++++---------- > block/raw.c | 4 ++-- > block/sheepdog.c | 10 +++++----- > block/ssh.c | 4 ++-- > block/vdi.c | 4 ++-- > block/vhdx.c | 4 ++-- > block/vmdk.c | 4 ++-- > block/vpc.c | 4 ++-- > block/vvfat.c | 6 +++--- > include/block/block_int.h | 4 ++-- > 23 files changed, 64 insertions(+), 64 deletions(-) > > diff --git a/block.c b/block.c > index 40f73ee..75a1e6b 100644 > --- a/block.c > +++ b/block.c > @@ -699,7 +699,7 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file, > /* bdrv_open() with directly using a protocol as drv. This layer is already > * opened, so assign it to bs (while file becomes a closed BlockDriverState) > * and return immediately. */ > - if (file != NULL && drv->bdrv_file_open) { > + if (file != NULL && drv->bdrv_co_file_open) { > bdrv_swap(file, bs); > return 0; > } > @@ -730,10 +730,10 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file, > bs->enable_write_cache = !!(flags & BDRV_O_CACHE_WB); > > /* Open the image, either directly or using a protocol */ > - if (drv->bdrv_file_open) { > + if (drv->bdrv_co_file_open) { > assert(file == NULL); > assert(drv->bdrv_parse_filename || filename != NULL); > - ret = drv->bdrv_file_open(bs, options, open_flags); > + ret = drv->bdrv_co_file_open(bs, options, open_flags); > } else { > if (file == NULL) { > qerror_report(ERROR_CLASS_GENERIC_ERROR, "Can't use '%s' as a " > @@ -744,7 +744,7 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file, > } > assert(file != NULL); > bs->file = file; > - ret = drv->bdrv_open(bs, options, open_flags); > + ret = drv->bdrv_co_open(bs, options, open_flags); > } > > if (ret < 0) { bdrv_open_common() needs to be coroutine_fn too. I'm pretty sure bdrv_open() is called outside coroutine context in some places. How do you guarantee that it is executed inside a coroutine (a synchronous wrapper would be necessary)? Stefan