[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 14/18] block: prepare bdrv_reopen_multiple to releas
From: |
Paolo Bonzini |
Subject: |
[Qemu-block] [PATCH 14/18] block: prepare bdrv_reopen_multiple to release AioContext |
Date: |
Thu, 13 Oct 2016 19:34:18 +0200 |
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 <address@hidden>
---
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
- Re: [Qemu-block] [PATCH 09/18] nfs: use bdrv_poll_while and bdrv_wakeup, (continued)
- [Qemu-block] [PATCH 11/18] aio: introduce qemu_get_current_aio_context, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 10/18] sheepdog: use bdrv_poll_while and bdrv_wakeup, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 13/18] replication: pass BlockDriverState to reopen_backing_file, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 12/18] iothread: detach all block devices before stopping them, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 14/18] block: prepare bdrv_reopen_multiple to release AioContext,
Paolo Bonzini <=
- [Qemu-block] [PATCH 15/18] block: only call aio_poll on the current thread's AioContext, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 17/18] qemu-thread: introduce QemuRecMutex, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 16/18] iothread: release AioContext around aio_poll, Paolo Bonzini, 2016/10/13
- [Qemu-block] [PATCH 18/18] aio: convert from RFifoLock to QemuRecMutex, Paolo Bonzini, 2016/10/13