Re: [Qemu-block] [PATCH 14/18] block: prepare bdrv_reopen_multiple to release AioContext

2016-10-16 Thread Stefan Hajnoczi
On Thu, Oct 13, 2016 at 07:34:18PM +0200, Paolo Bonzini wrote:
> After the next patch bdrv_drain_all will have to be called without holding any
> AioContext.  Prepare to do this by adding an AioContext argument to
> bdrv_reopen_multiple.
> 
> Signed-off-by: Paolo Bonzini 
> ---
>  block.c   | 4 ++--
>  block/commit.c| 2 +-
>  block/replication.c   | 3 ++-
>  include/block/block.h | 2 +-
>  qemu-io-cmds.c| 2 +-
>  5 files changed, 7 insertions(+), 6 deletions(-)

Reviewed-by: Stefan Hajnoczi 


signature.asc
Description: PGP signature


[Qemu-block] [PATCH 14/18] block: prepare bdrv_reopen_multiple to release AioContext

2016-10-13 Thread Paolo Bonzini
After the next patch bdrv_drain_all will have to be called without holding any
AioContext.  Prepare to do this by adding an AioContext argument to
bdrv_reopen_multiple.

Signed-off-by: Paolo Bonzini 
---
 block.c   | 4 ++--
 block/commit.c| 2 +-
 block/replication.c   | 3 ++-
 include/block/block.h | 2 +-
 qemu-io-cmds.c| 2 +-
 5 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/block.c b/block.c
index 7f3e7bc..fbe485c 100644
--- a/block.c
+++ b/block.c
@@ -2082,7 +2082,7 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue 
*bs_queue,
  * to all devices.
  *
  */
-int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp)
+int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error 
**errp)
 {
 int ret = -1;
 BlockReopenQueueEntry *bs_entry, *next;
@@ -2131,7 +2131,7 @@ int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, 
Error **errp)
 Error *local_err = NULL;
 BlockReopenQueue *queue = bdrv_reopen_queue(NULL, bs, NULL, bdrv_flags);
 
-ret = bdrv_reopen_multiple(queue, &local_err);
+ret = bdrv_reopen_multiple(bdrv_get_aio_context(bs), queue, &local_err);
 if (local_err != NULL) {
 error_propagate(errp, local_err);
 }
diff --git a/block/commit.c b/block/commit.c
index 9f67a8b..499ecca 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -251,7 +251,7 @@ void commit_start(const char *job_id, BlockDriverState *bs,
  orig_overlay_flags | BDRV_O_RDWR);
 }
 if (reopen_queue) {
-bdrv_reopen_multiple(reopen_queue, &local_err);
+bdrv_reopen_multiple(bdrv_get_aio_context(bs), reopen_queue, 
&local_err);
 if (local_err != NULL) {
 error_propagate(errp, local_err);
 block_job_unref(&s->common);
diff --git a/block/replication.c b/block/replication.c
index af47479..c6962e2 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -355,7 +355,8 @@ static void reopen_backing_file(BlockDriverState *bs, bool 
writable,
 }
 
 if (reopen_queue) {
-bdrv_reopen_multiple(reopen_queue, &local_err);
+bdrv_reopen_multiple(bdrv_get_aio_context(bs),
+ reopen_queue, &local_err);
 error_propagate(errp, local_err);
 }
 }
diff --git a/include/block/block.h b/include/block/block.h
index 876a1e7..ba4318b 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -218,7 +218,7 @@ BlockDriverState *bdrv_open(const char *filename, const 
char *reference,
 BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue,
 BlockDriverState *bs,
 QDict *options, int flags);
-int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp);
+int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error 
**errp);
 int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp);
 int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
 BlockReopenQueue *queue, Error **errp);
diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
index 3a3838a..dbe0413 100644
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -1956,7 +1956,7 @@ static int reopen_f(BlockBackend *blk, int argc, char 
**argv)
 qemu_opts_reset(&reopen_opts);
 
 brq = bdrv_reopen_queue(NULL, bs, opts, flags);
-bdrv_reopen_multiple(brq, &local_err);
+bdrv_reopen_multiple(bdrv_get_aio_context(bs), brq, &local_err);
 if (local_err) {
 error_report_err(local_err);
 } else {
-- 
2.7.4