From 720150f3189648712fc50efd1cca0a39076722a9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 27 Oct 2016 12:49:02 +0200 Subject: block: prepare bdrv_reopen_multiple to release AioContext 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. Reviewed-by: Stefan Hajnoczi Reviewed-by: Fam Zheng Signed-off-by: Paolo Bonzini Message-Id: <1477565348-5458-15-git-send-email-pbonzini@redhat.com> Signed-off-by: Fam Zheng --- qemu-io-cmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'qemu-io-cmds.c') diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c index 3a3838a079..dbe04136f3 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 { -- cgit v1.2.3 From 15afd94a0470dcace6c73d7187a0602188bfd21c Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 27 Oct 2016 12:49:03 +0200 Subject: qemu-io: acquire AioContext Signed-off-by: Paolo Bonzini Reviewed-by: Fam Zheng Message-Id: <1477565348-5458-16-git-send-email-pbonzini@redhat.com> Signed-off-by: Fam Zheng --- qemu-io-cmds.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'qemu-io-cmds.c') diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c index dbe04136f3..4750e9ab93 100644 --- a/qemu-io-cmds.c +++ b/qemu-io-cmds.c @@ -2216,6 +2216,7 @@ static const cmdinfo_t help_cmd = { bool qemuio_command(BlockBackend *blk, const char *cmd) { + AioContext *ctx; char *input; const cmdinfo_t *ct; char **v; @@ -2227,7 +2228,10 @@ bool qemuio_command(BlockBackend *blk, const char *cmd) if (c) { ct = find_command(v[0]); if (ct) { + ctx = blk ? blk_get_aio_context(blk) : qemu_get_aio_context(); + aio_context_acquire(ctx); done = command(blk, ct, c, v); + aio_context_release(ctx); } else { fprintf(stderr, "command \"%s\" not found\n", v[0]); } -- cgit v1.2.3