All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 00/10] Mirrored block writes
@ 2012-03-06 17:55 Paolo Bonzini
  2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 01/10] use QSIMPLEQ_FOREACH_SAFE when freeing list elements Paolo Bonzini
                   ` (10 more replies)
  0 siblings, 11 replies; 21+ messages in thread
From: Paolo Bonzini @ 2012-03-06 17:55 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, fsimonce, eblake, stefanha, lcapitulino

v4 includes Federico's drive-reopen (patch 10) command, fixes another
small bug in Jeff's code (patch 2), and tweaks the union handling for
older compilers.

v3 tested with the following scenarios, v4 only d/e:

a) mirror only

1) create base.qcow2 and starat QEMU with it

2) Execute the following QMP command

{ "execute": "qmp_capabilities" }
{ "execute": "transaction", "arguments":
  {'actions': [
    { 'type': 'drive-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) Same as (a) with drive-mirror command.


c) streaming to new image

1) start QEMU with an existing image test.img

2) execute the following HMP commands

drive_mirror -s ide0-hd0 /home/pbonzini/mirror.qed qed
block_stream ide0-hd0

3) shut down the guest (sorry, this took a looong time and I forgot to
hibernate here)

4) move away the base image

5) restart the guest with mirror.qed


d) atomic snapshot+mirror (QMP only):

1) start QEMU with an existing image test.img

2) Execute the following QMP command

{ "execute": "qmp_capabilities" }
{ "execute": "transaction", "arguments":
  {'actions': [
    { 'type': 'blockdev-snapshot-sync', 'data' :
      { 'device': 'ide0-hd0', 'snapshot-file': '/home/pbonzini/base.qcow2' } },
    { 'type': 'drive-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


e) simple snapshot with snapshot_blkdev and snapshot_blkdev -n.

v3->v4:
	avoid literals with anonymous unions in them, add "void *data" to
	all unions (Mark Wu); add drive-reopen (Federico); new patch to fix
	use-after-free in group snapshots; patch splitting nits (Eric).

v2->v3:
        replace reuse argument with NewImageMode enum and mode argument;
        renamed all commands and actions; implemented blockdev-snapshot-sync
        in terms of group snasphots; added new drive-mirror command and
        HMP equivalent.

Federico Simoncelli (1):
  Add the drive-reopen command

Marcelo Tosatti (1):
  Add blkmirror block driver

Paolo Bonzini (8):
  use QSIMPLEQ_FOREACH_SAFE when freeing list elements
  fix format name for backing file
  qapi: complete implementation of unions
  rename blockdev-group-snapshot-sync
  add mode field to blockdev-snapshot-sync transaction item
  qmp: convert blockdev-snapshot-sync to a wrapper around transactions
  add mirroring to transaction
  add drive-mirror command and HMP equivalent

 Makefile.objs             |    2 +-
 block/blkmirror.c         |  239 +++++++++++++++++++++++++++++++++++++++++++++
 blockdev.c                |  202 +++++++++++++++++++++++++++-----------
 hmp-commands.hx           |   47 ++++++++-
 hmp.c                     |   45 ++++++++-
 hmp.h                     |    2 +
 qapi-schema-test.json     |   10 ++
 qapi-schema.json          |  143 +++++++++++++++++++++++----
 qmp-commands.hx           |  135 +++++++++++++++++++++-----
 scripts/qapi-types.py     |    6 +
 scripts/qapi-visit.py     |   31 ++++++-
 test-qmp-input-visitor.c  |   18 ++++
 test-qmp-output-visitor.c |   34 +++++++
 13 files changed, 804 insertions(+), 110 deletions(-)
 create mode 100644 block/blkmirror.c

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2012-03-14 14:27 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-06 17:55 [Qemu-devel] [PATCH v4 00/10] Mirrored block writes Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 01/10] use QSIMPLEQ_FOREACH_SAFE when freeing list elements Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 02/10] fix format name for backing file Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 03/10] qapi: complete implementation of unions Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 04/10] rename blockdev-group-snapshot-sync Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 05/10] add mode field to blockdev-snapshot-sync transaction item Paolo Bonzini
2012-03-06 17:55 ` [Qemu-devel] [PATCH v4 06/10] qmp: convert blockdev-snapshot-sync to a wrapper around transactions Paolo Bonzini
2012-03-06 17:56 ` [Qemu-devel] [PATCH v4 07/10] Add blkmirror block driver Paolo Bonzini
2012-03-06 17:56 ` [Qemu-devel] [PATCH v4 08/10] add mirroring to transaction Paolo Bonzini
2012-03-06 17:56 ` [Qemu-devel] [PATCH v4 09/10] add drive-mirror command and HMP equivalent Paolo Bonzini
2012-03-06 17:56 ` [Qemu-devel] [PATCH v4 10/10] Add the drive-reopen command Paolo Bonzini
2012-03-13 20:48   ` Eric Blake
2012-03-14  0:14     ` Federico Simoncelli
2012-03-14  9:34       ` Kevin Wolf
2012-03-14 13:11         ` Eric Blake
2012-03-14 14:30           ` Kevin Wolf
2012-03-14 13:29         ` Federico Simoncelli
2012-03-14  9:17     ` Kevin Wolf
2012-03-14  9:19       ` Paolo Bonzini
2012-03-14  9:35         ` Kevin Wolf
2012-03-09 15:36 ` [Qemu-devel] [PATCH v4 00/10] Mirrored block writes Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.