diff mbox

blockdev: no need to drain in qmp_block_commit

Message ID 1432822903-25821-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini May 28, 2015, 2:21 p.m. UTC
Draining is not necessary, I/O can happen as soon as the
commit coroutine yields.  Draining can be necessary before
reopening the file for read/write, or while modifying the
backing file chain, but that is done separately in
bdrv_reopen_multiple or bdrv_close; this particular
bdrv_drain_all does nothing for that.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 blockdev.c | 3 ---
 1 file changed, 3 deletions(-)

Comments

Fam Zheng May 29, 2015, 1:44 a.m. UTC | #1
----- Original Message -----
> Draining is not necessary, I/O can happen as soon as the
> commit coroutine yields.  Draining can be necessary before
> reopening the file for read/write, or while modifying the
> backing file chain, but that is done separately in
> bdrv_reopen_multiple or bdrv_close; this particular
> bdrv_drain_all does nothing for that.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  blockdev.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/blockdev.c b/blockdev.c
> index d506a70..aee0395 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -2355,9 +2355,6 @@ void qmp_block_commit(const char *device,
>      aio_context = bdrv_get_aio_context(bs);
>      aio_context_acquire(aio_context);
>  
> -    /* drain all i/o before commits */
> -    bdrv_drain_all();
> -

Reviewed-by: Fam Zheng <famz@redhat.com>

>      if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_COMMIT_SOURCE, errp)) {
>          goto out;
>      }
> --
> 2.4.1
> 
> 
>
Stefan Hajnoczi May 29, 2015, 12:43 p.m. UTC | #2
On Thu, May 28, 2015 at 04:21:43PM +0200, Paolo Bonzini wrote:
> Draining is not necessary, I/O can happen as soon as the
> commit coroutine yields.  Draining can be necessary before
> reopening the file for read/write, or while modifying the
> backing file chain, but that is done separately in
> bdrv_reopen_multiple or bdrv_close; this particular
> bdrv_drain_all does nothing for that.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  blockdev.c | 3 ---
>  1 file changed, 3 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Jeff Cody June 16, 2015, 4:07 a.m. UTC | #3
On Thu, May 28, 2015 at 04:21:43PM +0200, Paolo Bonzini wrote:
> Draining is not necessary, I/O can happen as soon as the
> commit coroutine yields.  Draining can be necessary before
> reopening the file for read/write, or while modifying the
> backing file chain, but that is done separately in
> bdrv_reopen_multiple or bdrv_close; this particular
> bdrv_drain_all does nothing for that.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  blockdev.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/blockdev.c b/blockdev.c
> index d506a70..aee0395 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -2355,9 +2355,6 @@ void qmp_block_commit(const char *device,
>      aio_context = bdrv_get_aio_context(bs);
>      aio_context_acquire(aio_context);
>  
> -    /* drain all i/o before commits */
> -    bdrv_drain_all();
> -
>      if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_COMMIT_SOURCE, errp)) {
>          goto out;
>      }
> -- 
> 2.4.1
>

Thanks, applied to my block tree:
https://github.com/codyprime/qemu-kvm-jtc/commits/block

-Jeff
diff mbox

Patch

diff --git a/blockdev.c b/blockdev.c
index d506a70..aee0395 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -2355,9 +2355,6 @@  void qmp_block_commit(const char *device,
     aio_context = bdrv_get_aio_context(bs);
     aio_context_acquire(aio_context);
 
-    /* drain all i/o before commits */
-    bdrv_drain_all();
-
     if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_COMMIT_SOURCE, errp)) {
         goto out;
     }