[v2,5/6] block: Don't wait for requests in bdrv_drain*_end()

Message ID 20171206105309.3468-6-kwolf@redhat.com
State New
Headers show
Series
  • block: Fix BlockDriver callbacks in bdrv_drain_all_begin()
Related show

Commit Message

Kevin Wolf Dec. 6, 2017, 10:53 a.m.
The device is drained, so there is no point in waiting for requests at
the end of the drained section. Remove the bdrv_drain_recurse() calls
there.

The bdrv_drain_recurse() calls were introduced in commit 481cad48e5e
in order to call the the .bdrv_co_drain_end() driver callback. This is
now done by a separate bdrv_drain_invoke() call.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/io.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Paolo Bonzini Dec. 6, 2017, 11:06 a.m. | #1
On 06/12/2017 11:53, Kevin Wolf wrote:
> The device is drained, so there is no point in waiting for requests at
> the end of the drained section. Remove the bdrv_drain_recurse() calls
> there.
> 
> The bdrv_drain_recurse() calls were introduced in commit 481cad48e5e
> in order to call the the .bdrv_co_drain_end() driver callback. This is
> now done by a separate bdrv_drain_invoke() call.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block/io.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/block/io.c b/block/io.c
> index 390d463c71..5fdb92a15e 100644
> --- a/block/io.c
> +++ b/block/io.c
> @@ -299,7 +299,6 @@ void bdrv_drained_end(BlockDriverState *bs)
>  
>      bdrv_parent_drained_end(bs);
>      bdrv_drain_invoke(bs, false);
> -    bdrv_drain_recurse(bs);
>      aio_enable_external(bdrv_get_aio_context(bs));
>  }
>  
> @@ -400,7 +399,6 @@ void bdrv_drain_all_end(void)
>          aio_enable_external(aio_context);
>          bdrv_parent_drained_end(bs);
>          bdrv_drain_invoke(bs, false);
> -        bdrv_drain_recurse(bs);
>          aio_context_release(aio_context);
>      }
>  
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo Bonzini Dec. 6, 2017, 11:06 a.m. | #2
On 06/12/2017 11:53, Kevin Wolf wrote:
> The device is drained, so there is no point in waiting for requests at
> the end of the drained section. Remove the bdrv_drain_recurse() calls
> there.
> 
> The bdrv_drain_recurse() calls were introduced in commit 481cad48e5e
> in order to call the the .bdrv_co_drain_end() driver callback. This is
> now done by a separate bdrv_drain_invoke() call.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block/io.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/block/io.c b/block/io.c
> index 390d463c71..5fdb92a15e 100644
> --- a/block/io.c
> +++ b/block/io.c
> @@ -299,7 +299,6 @@ void bdrv_drained_end(BlockDriverState *bs)
>  
>      bdrv_parent_drained_end(bs);
>      bdrv_drain_invoke(bs, false);
> -    bdrv_drain_recurse(bs);
>      aio_enable_external(bdrv_get_aio_context(bs));
>  }
>  
> @@ -400,7 +399,6 @@ void bdrv_drain_all_end(void)
>          aio_enable_external(aio_context);
>          bdrv_parent_drained_end(bs);
>          bdrv_drain_invoke(bs, false);
> -        bdrv_drain_recurse(bs);
>          aio_context_release(aio_context);
>      }
>  
> 

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

Patch

diff --git a/block/io.c b/block/io.c
index 390d463c71..5fdb92a15e 100644
--- a/block/io.c
+++ b/block/io.c
@@ -299,7 +299,6 @@  void bdrv_drained_end(BlockDriverState *bs)
 
     bdrv_parent_drained_end(bs);
     bdrv_drain_invoke(bs, false);
-    bdrv_drain_recurse(bs);
     aio_enable_external(bdrv_get_aio_context(bs));
 }
 
@@ -400,7 +399,6 @@  void bdrv_drain_all_end(void)
         aio_enable_external(aio_context);
         bdrv_parent_drained_end(bs);
         bdrv_drain_invoke(bs, false);
-        bdrv_drain_recurse(bs);
         aio_context_release(aio_context);
     }