All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benoît Canet" <benoit.canet@irqsave.net>
To: Fam Zheng <famz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Chrysostomos Nanakos <cnanakos@grnet.gr>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Liu Yuan <namei.unix@gmail.com>, Peter Lieven <pl@kamp.de>,
	qemu-devel@nongnu.org, Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	Josh Durgin <josh.durgin@inktank.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Subject: Re: [Qemu-devel] [PATCH v4 01/20] block: Add refcnt in BlockDriverAIOCB
Date: Thu, 4 Sep 2014 17:07:48 +0200	[thread overview]
Message-ID: <20140904150748.GB8094@irqsave.net> (raw)
In-Reply-To: <1409743435-21155-2-git-send-email-famz@redhat.com>

The Wednesday 03 Sep 2014 à 19:23:36 (+0800), Fam Zheng wrote :
> This will be useful in synchronous cancel emulation with
> bdrv_aio_cancel_async.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  block.c             | 12 +++++++++++-
>  include/block/aio.h |  2 ++
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/block.c b/block.c
> index cb670fd..78d68cb 100644
> --- a/block.c
> +++ b/block.c
> @@ -4885,13 +4885,23 @@ void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs,
>      acb->bs = bs;
>      acb->cb = cb;
>      acb->opaque = opaque;
> +    acb->refcnt = 1;
>      return acb;
>  }
>  
> +void qemu_aio_ref(void *p)
> +{
> +    BlockDriverAIOCB *acb = p;
> +    acb->refcnt++;
> +}


> +
>  void qemu_aio_release(void *p)

I would expect _release to change to _unref for symetry.

>  {
>      BlockDriverAIOCB *acb = p;
> -    g_slice_free1(acb->aiocb_info->aiocb_size, acb);
> +    assert(acb->refcnt > 0);
> +    if (--acb->refcnt == 0) {
> +        g_slice_free1(acb->aiocb_info->aiocb_size, acb);
> +    }
>  }
>  
>  /**************************************************************/
> diff --git a/include/block/aio.h b/include/block/aio.h
> index 4603c0f..2626fc7 100644
> --- a/include/block/aio.h
> +++ b/include/block/aio.h
> @@ -35,11 +35,13 @@ struct BlockDriverAIOCB {
>      BlockDriverState *bs;
>      BlockDriverCompletionFunc *cb;
>      void *opaque;
> +    int refcnt;
>  };
>  
>  void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs,
>                     BlockDriverCompletionFunc *cb, void *opaque);
>  void qemu_aio_release(void *p);
> +void qemu_aio_ref(void *p);
>  
>  typedef struct AioHandler AioHandler;
>  typedef void QEMUBHFunc(void *opaque);
> -- 
> 2.1.0.27.g96db324
> 

  reply	other threads:[~2014-09-04 15:08 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-03 11:23 [Qemu-devel] [PATCH v4 00/20] block: Asynchronous request cancellation Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 01/20] block: Add refcnt in BlockDriverAIOCB Fam Zheng
2014-09-04 15:07   ` Benoît Canet [this message]
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 02/20] block: Add bdrv_aio_cancel_async Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 03/20] block: Drop bdrv_em_co_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 04/20] block: Convert bdrv_em_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:28   ` Paolo Bonzini
2014-09-04  1:20     ` Fam Zheng
2014-09-04  5:45       ` Paolo Bonzini
2014-09-04 15:21   ` Benoît Canet
2014-09-05 10:55     ` Fam Zheng
2014-09-05 11:06       ` Benoît Canet
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 05/20] thread-pool: Convert thread_pool_aiocb_info.cancel to cancel_async Fam Zheng
2014-09-04 15:29   ` Benoît Canet
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 06/20] linux-aio: Convert laio_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 07/20] dma: Check iov pointer before unmap memory Fam Zheng
2014-09-03 11:38   ` Paolo Bonzini
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 08/20] dma: Convert dma_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 09/20] iscsi: Convert iscsi_aiocb_info.cancel " Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 10/20] archipelago: Drop archipelago_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 11/20] blkdebug: Convert blkdebug_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:42   ` Paolo Bonzini
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 12/20] blkverify: Drop blkverify_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 13/20] curl: Drop curl_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 14/20] qed: Drop qed_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 15/20] quorum: Convert quorum_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-04 15:40   ` Benoît Canet
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 16/20] rbd: Drop rbd_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 17/20] sheepdog: Convert sd_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 18/20] win32-aio: Drop win32_aiocb_info.cancel Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 19/20] ide: Convert trim_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-03 11:23 ` [Qemu-devel] [PATCH v4 20/20] block: Drop AIOCBInfo.cancel Fam Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140904150748.GB8094@irqsave.net \
    --to=benoit.canet@irqsave.net \
    --cc=cnanakos@grnet.gr \
    --cc=famz@redhat.com \
    --cc=josh.durgin@inktank.com \
    --cc=kwolf@redhat.com \
    --cc=morita.kazutaka@lab.ntt.co.jp \
    --cc=namei.unix@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --cc=ronniesahlberg@gmail.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.