]> git.proxmox.com Git - qemu.git/commit - block.c
qapi: Introduce blockdev-group-snapshot-sync command
authorJeff Cody <jcody@redhat.com>
Tue, 28 Feb 2012 20:54:06 +0000 (15:54 -0500)
committerKevin Wolf <kwolf@redhat.com>
Wed, 29 Feb 2012 14:48:33 +0000 (15:48 +0100)
commit8802d1fdd4b73e02ce13fb3a233c64c1913634ab
tree30492b35aea065cd13d6ce18073049d7d3435057
parent64ca6aee4f06a3af869e5e09f0afeb6721966875
qapi: Introduce blockdev-group-snapshot-sync command

This is a QAPI/QMP only command to take a snapshot of a group of
devices. This is similar to the blockdev-snapshot-sync command, except
blockdev-group-snapshot-sync accepts a list devices, filenames, and
formats.

It is attempted to keep the snapshot of the group atomic; if the
creation or open of any of the new snapshots fails, then all of
the new snapshots are abandoned, and the name of the snapshot image
that failed is returned.  The failure case should not interrupt
any operations.

Rather than use bdrv_close() along with a subsequent bdrv_open() to
perform the pivot, the original image is never closed and the new
image is placed 'in front' of the original image via manipulation
of the BlockDriverState fields.  Thus, once the new snapshot image
has been successfully created, there are no more failure points
before pivoting to the new snapshot.

This allows the group of disks to remain consistent with each other,
even across snapshot failures.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c
block.h
block_int.h
blockdev.c
qapi-schema.json