[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/20] block: prepare bdrv_reopen_multiple to release
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PULL 14/20] block: prepare bdrv_reopen_multiple to release AioContext |
Date: |
Fri, 28 Oct 2016 22:49:19 +0800 |
From: Paolo Bonzini <address@hidden>
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 <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Fam Zheng <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 3bd8356..02aeaaf 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -360,7 +360,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 a9d7c0d..84257ab 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
- [Qemu-devel] [PULL 05/20] block: change drain to look only at one child at a time, (continued)
- [Qemu-devel] [PULL 05/20] block: change drain to look only at one child at a time, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 04/20] block: add BDS field to count in-flight requests, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 06/20] qed: Implement .bdrv_drain, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 07/20] block: introduce BDRV_POLL_WHILE, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 09/20] nfs: use BDRV_POLL_WHILE, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 08/20] nfs: move nfs_set_events out of the while loops, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 11/20] aio: introduce qemu_get_current_aio_context, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 10/20] sheepdog: use BDRV_POLL_WHILE, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 12/20] iothread: detach all block devices before stopping them, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 13/20] replication: pass BlockDriverState to reopen_backing_file, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 14/20] block: prepare bdrv_reopen_multiple to release AioContext,
Fam Zheng <=
- [Qemu-devel] [PULL 15/20] qemu-io: acquire AioContext, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 16/20] qemu-img: call aio_context_acquire/release around block job, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 18/20] iothread: release AioContext around aio_poll, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 17/20] block: only call aio_poll on the current thread's AioContext, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 19/20] qemu-thread: introduce QemuRecMutex, Fam Zheng, 2016/10/28
- [Qemu-devel] [PULL 20/20] aio: convert from RFifoLock to QemuRecMutex, Fam Zheng, 2016/10/28
- Re: [Qemu-devel] [PULL 00/20] Block patches, Peter Maydell, 2016/10/31