qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 02/35] WIP: coroutine: manually tag the fast-pat


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 02/35] WIP: coroutine: manually tag the fast-paths
Date: Tue, 11 Jul 2017 16:23:56 +0100
User-agent: Mutt/1.8.0 (2017-02-23)

On Wed, Jul 05, 2017 at 12:03:13AM +0200, Marc-André Lureau wrote:
> Some functions are both regular and coroutine. They may call coroutine
> functions in some cases, if it is known to be running in a coroutine.
> 
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
>  block.c                 |  2 ++
>  block/block-backend.c   |  2 ++
>  block/io.c              | 16 +++++++++++++++-
>  block/sheepdog.c        |  2 ++
>  block/throttle-groups.c | 10 ++++++++--
>  migration/rdma.c        |  2 ++
>  6 files changed, 31 insertions(+), 3 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 694396281b..b08c006da4 100644
> --- a/block.c
> +++ b/block.c
> @@ -443,7 +443,9 @@ int bdrv_create(BlockDriver *drv, const char* filename,
>  
>      if (qemu_in_coroutine()) {
>          /* Fast-path if already in coroutine context */
> +        co_role_acquire(_coroutine_fn);
>          bdrv_create_co_entry(&cco);
> +        co_role_release(_coroutine_fn);
>      } else {
>          co = qemu_coroutine_create(bdrv_create_co_entry, &cco);
>          qemu_coroutine_enter(co);

I guess the clever analysis for clang would be to detect that if
(qemu_in_coroutine()) means we have the _coroutine_fn role.  It's
similar to how Coverity sees an if (ptr) and knows whether the pointer
is NULL/non-NULL in the branches.

But this patch is okay too :-).

Attachment: signature.asc
Description: PGP signature


reply via email to

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