qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]