[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 7/7] blockdev: Add "device IO" op blocker during
From: |
Fam Zheng |
Subject: |
[Qemu-block] [RFC PATCH 7/7] blockdev: Add "device IO" op blocker during snapshot transaction |
Date: |
Wed, 6 May 2015 19:23:39 +0800 |
Signed-off-by: Fam Zheng <address@hidden>
---
blockdev.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/blockdev.c b/blockdev.c
index 5eaf77e..859fa2e 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1398,6 +1398,7 @@ typedef struct ExternalSnapshotState {
BlockDriverState *old_bs;
BlockDriverState *new_bs;
AioContext *aio_context;
+ Error *blocker;
} ExternalSnapshotState;
static void external_snapshot_prepare(BlkTransactionState *common,
@@ -1519,6 +1520,9 @@ static void external_snapshot_prepare(BlkTransactionState
*common,
if (ret != 0) {
error_propagate(errp, local_err);
}
+
+ error_setg(&state->blocker, "snapshot in progress");
+ bdrv_op_block(state->old_bs, BLOCK_OP_TYPE_DEVICE_IO, state->blocker);
}
static void external_snapshot_commit(BlkTransactionState *common)
@@ -1536,6 +1540,9 @@ static void external_snapshot_commit(BlkTransactionState
*common)
bdrv_reopen(state->new_bs, state->new_bs->open_flags & ~BDRV_O_RDWR,
NULL);
+ bdrv_op_unblock(state->old_bs, BLOCK_OP_TYPE_DEVICE_IO, state->blocker);
+ error_free(state->blocker);
+
aio_context_release(state->aio_context);
}
--
1.9.3
- [Qemu-block] [RFC PATCH 0/7] Fix transactional snapshot with virtio-blk dataplane, Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 1/7] block: Add op blocker type "device IO", Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 2/7] block: Block "device IO" during bdrv_drain and bdrv_drain_all, Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 3/7] block: Add op blocker notifier list, Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 4/7] block-backend: Add blk_op_blocker_add_notifier, Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 5/7] virtio-blk: Move complete_request to 'ops' structure, Fam Zheng, 2015/05/06
- [Qemu-block] [RFC PATCH 7/7] blockdev: Add "device IO" op blocker during snapshot transaction,
Fam Zheng <=
- [Qemu-block] [RFC PATCH 6/7] virtio-blk: Don't handle output when there is "device IO" op blocker, Fam Zheng, 2015/05/06
- Re: [Qemu-block] [RFC PATCH 0/7] Fix transactional snapshot with virtio-blk dataplane, Stefan Hajnoczi, 2015/05/07