[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 0/6] Mirrored writes using blockdev-transaction
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 0/6] Mirrored writes using blockdev-transaction |
Date: |
Thu, 1 Mar 2012 12:21:42 +0100 |
This implements all ingredients to establish mirrored writes.
The drive-reopen command that is used to terminate mirrored writes
is not included in this series.
Tested with the following scenarios:
a) mirror only
1) create base.qcow2 and start QEMU with it
2) Execute the following QMP command
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-transaction", "arguments":
{'actions': [
{ 'type': 'mirror', 'data' :
{ 'device': 'ide0-hd0', 'target': '/home/pbonzini/mirror.qcow2' } } ] } }
{ "execute": "cont" }
3) hibernate the guest (this requires an IDE disk and -cpu kvm64,-kvmclock)
4) restart the guest with mirror.qcow2
b) atomic snapshot+mirror
1) start QEMU with an existing image test.img
2) Execute the following QMP command
{ "execute": "qmp_capabilities" }
{ "execute": "blockdev-transaction", "arguments":
{'actions': [
{ 'type': 'snapshot', 'data' :
{ 'device': 'ide0-hd0', 'snapshot-file': '/home/pbonzini/base.qcow2' } },
{ 'type': 'mirror', 'data' :
{ 'device': 'ide0-hd0', 'target': '/home/pbonzini/mirror.qcow2' } } ] } }
{ "execute": "cont" }
3) hibernate the guest (this requires an IDE disk and -cpu kvm64,-kvmclock)
4) check that mirror.qcow2 has test.img as the base
5) restart the guest with base.qcow2
6) restart the guest with mirror.qcow2
v1->v2:
Removed wrong assertions in patches 3 and 6
Move new_image_file and other variables inside the while loop (Federico)
Rename new_source_file to new_source (Federico)
Fix image name in error message (Federico)
Fixed documentation in qapi-schema.json (Federico)
Fixed documentation and example in qmp-commands.hx (Eric)
Added back AIO (Stefan), with fixes to cancellation
Marcelo Tosatti (1):
Add blkmirror block driver
Paolo Bonzini (5):
fix format name for backing file
qapi: complete implementation of unions
rename blockdev-group-snapshot-sync
add reuse field
add mirroring to blockdev-transaction
Makefile.objs | 2 +-
block/blkmirror.c | 239 +++++++++++++++++++++++++++++++++++++++++++++
blockdev.c | 114 ++++++++++++++--------
qapi-schema-test.json | 10 ++
qapi-schema.json | 51 ++++++++--
qmp-commands.hx | 68 +++++++++----
scripts/qapi-types.py | 5 +
scripts/qapi-visit.py | 31 ++++++-
test-qmp-input-visitor.c | 18 ++++
test-qmp-output-visitor.c | 34 +++++++
10 files changed, 496 insertions(+), 76 deletions(-)
create mode 100644 block/blkmirror.c
--
1.7.7.6
- [Qemu-devel] [PATCH v2 0/6] Mirrored writes using blockdev-transaction,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 1/6] fix format name for backing file, Paolo Bonzini, 2012/03/01
- [Qemu-devel] [PATCH v2 2/6] qapi: complete implementation of unions, Paolo Bonzini, 2012/03/01
- [Qemu-devel] [PATCH v2 4/6] add reuse field, Paolo Bonzini, 2012/03/01
- [Qemu-devel] [PATCH v2 5/6] Add blkmirror block driver, Paolo Bonzini, 2012/03/01
- [Qemu-devel] [PATCH v2 3/6] rename blockdev-group-snapshot-sync, Paolo Bonzini, 2012/03/01
- [Qemu-devel] [PATCH v2 6/6] add mirroring to blockdev-transaction, Paolo Bonzini, 2012/03/01
- Re: [Qemu-devel] [PATCH v2 0/6] Mirrored writes using blockdev-transaction, Luiz Capitulino, 2012/03/01