qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC v2 04/15] Convert .bdrv_open and .bdrv_file_open t


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [RFC v2 04/15] Convert .bdrv_open and .bdrv_file_open to coroutine_fn
Date: Thu, 29 Aug 2013 14:11:37 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Fri, Aug 09, 2013 at 07:43:54PM +0200, Charlie Shepherd wrote:
> Signed-off-by: Charlie Shepherd <address@hidden>
> ---
>  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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]