All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Liu Yuan <namei.unix@gmail.com>,
	Peter Lieven <pl@kamp.de>, Benoit Canet <benoit@irqsave.net>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v6 00/22] block: Asynchronous request cancellation
Date: Thu, 11 Sep 2014 09:45:56 +0200	[thread overview]
Message-ID: <54115334.80200@redhat.com> (raw)
In-Reply-To: <1410414088-4419-1-git-send-email-famz@redhat.com>

Il 11/09/2014 07:41, Fam Zheng ha scritto:
> v6: Drop bdrv_em_aiocb_info.cancel in patch 5. (Paolo)
> 
> v5: Fix IDE callback. (Paolo)
>     Fix blkdebug. (Paolo)
>     Drop the DMA fix which is independent of this series. (Paolo)
>     Incorperate Yuan's patch on quorum_aio_cancel. (Benoît)
>     Commit message wording fix. (Benoît)
>     Rename qemu_aio_release to qemu_aio_unref. (Benoît)
> 
> v4: Drop AIOCBInfo.cancel.
> 
> This series adds a new block layer API:
> 
>   void bdrv_aio_cancel_async(BlockDriverAIOCB *acb);
> 
> And use it to emulate bdrv_aio_cancel.
> 
> The function is similar to bdrv_aio_cancel in that it cancels an AIO request,
> but different that it doesn't block until the request is completely cancelled
> or done.
> 
> More importantly, the completion callback, BlockDriverAIOCB.cb, is guaranteed
> to be called, so that the cb can take care of resource releasing and status
> reporting to guest, etc.
> 
> In the following work, scsi emulation code will be shifted to use the async
> cancelling.
> 
> One major benefit would be that when guest tries to cancel a request, where the
> request cannot be cancelled easily, (due to throttled BlockDriverState, a lost
> connection, or a large request queue), we don't need to block the whole vm with
> a busy loop, which is how bdrv_aio_cancel is implemented now.
> 
> A test case that is easy to reproduce is, throttle a scsi-disk to a very low
> limit, for example 50 bps, then stress the guest block device with dd or fio.
> 
> Currently, the vm will quickly hang when it loses patience and send a tmf
> command to cancel the request, at which point we will busy wait in
> bdrv_aio_cancel, until the request is slowly spit out from throttled_reqs.
> 
> Later, we will change scsi device code to make this asynchronous, on top of
> bdrv_aio_cancel_async.
> 
> Fam
> 
> 
> Fam Zheng (21):
>   ide/ahci: Check for -ECANCELED in aio callbacks
>   block: Add refcnt in BlockDriverAIOCB
>   block: Add bdrv_aio_cancel_async
>   block: Drop bdrv_em_co_aiocb_info.cancel
>   block: Drop bdrv_em_aiocb_info.cancel
>   thread-pool: Convert thread_pool_aiocb_info.cancel to cancel_async
>   linux-aio: Convert laio_aiocb_info.cancel to .cancel_async
>   dma: Convert dma_aiocb_info.cancel to .cancel_async
>   iscsi: Convert iscsi_aiocb_info.cancel to .cancel_async
>   archipelago: Drop archipelago_aiocb_info.cancel
>   blkdebug: Drop blkdebug_aiocb_info.cancel
>   blkverify: Drop blkverify_aiocb_info.cancel
>   curl: Drop curl_aiocb_info.cancel
>   qed: Drop qed_aiocb_info.cancel
>   quorum: Convert quorum_aiocb_info.cancel to .cancel_async
>   rbd: Drop rbd_aiocb_info.cancel
>   sheepdog: Convert sd_aiocb_info.cancel to .cancel_async
>   win32-aio: Drop win32_aiocb_info.cancel
>   ide: Convert trim_aiocb_info.cancel to .cancel_async
>   block: Drop AIOCBInfo.cancel
>   block: Rename qemu_aio_release -> qemu_aio_unref
> 
> Liu Yuan (1):
>   quorum: fix quorum_aio_cancel()
> 
>  block.c                  | 72 ++++++++++++++++++++++++------------------------
>  block/archipelago.c      | 19 ++-----------
>  block/blkdebug.c         | 17 ++----------
>  block/blkverify.c        | 21 +-------------
>  block/curl.c             | 16 ++++-------
>  block/iscsi.c            | 23 ++++------------
>  block/linux-aio.c        | 34 +++++++----------------
>  block/qed.c              | 23 +---------------
>  block/quorum.c           | 11 ++++----
>  block/rbd.c              | 25 ++---------------
>  block/sheepdog.c         | 54 ++++++++++++++++--------------------
>  block/win32-aio.c        | 18 ++----------
>  dma-helpers.c            | 20 +++-----------
>  hw/ide/ahci.c            |  3 ++
>  hw/ide/core.c            | 26 +++++++++++------
>  include/block/aio.h      |  7 +++--
>  include/block/block.h    |  1 +
>  tests/test-thread-pool.c | 34 +++++++++++++++++------
>  thread-pool.c            | 36 +++++++++++-------------
>  19 files changed, 167 insertions(+), 293 deletions(-)
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

... and nice diffstat too! :)

Paolo

  parent reply	other threads:[~2014-09-11  7:46 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-11  5:41 [Qemu-devel] [PATCH v6 00/22] block: Asynchronous request cancellation Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 01/22] ide/ahci: Check for -ECANCELED in aio callbacks Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 02/22] block: Add refcnt in BlockDriverAIOCB Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 03/22] block: Add bdrv_aio_cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 04/22] block: Drop bdrv_em_co_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 05/22] block: Drop bdrv_em_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 06/22] thread-pool: Convert thread_pool_aiocb_info.cancel to cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 07/22] linux-aio: Convert laio_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 08/22] dma: Convert dma_aiocb_info.cancel " Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 09/22] iscsi: Convert iscsi_aiocb_info.cancel " Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 10/22] archipelago: Drop archipelago_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 11/22] blkdebug: Drop blkdebug_aiocb_info.cancel Fam Zheng
2014-09-15 16:41   ` Stefan Hajnoczi
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 12/22] blkverify: Drop blkverify_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 13/22] curl: Drop curl_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 14/22] qed: Drop qed_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 15/22] quorum: fix quorum_aio_cancel() Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 16/22] quorum: Convert quorum_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 17/22] rbd: Drop rbd_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 18/22] sheepdog: Convert sd_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 19/22] win32-aio: Drop win32_aiocb_info.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 20/22] ide: Convert trim_aiocb_info.cancel to .cancel_async Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 21/22] block: Drop AIOCBInfo.cancel Fam Zheng
2014-09-11  5:41 ` [Qemu-devel] [PATCH v6 22/22] block: Rename qemu_aio_release -> qemu_aio_unref Fam Zheng
2014-09-11  7:45 ` Paolo Bonzini [this message]
2014-09-15 16:44 ` [Qemu-devel] [PATCH v6 00/22] block: Asynchronous request cancellation Stefan Hajnoczi

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=54115334.80200@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=benoit@irqsave.net \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=namei.unix@gmail.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --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.