qemu/block
Liu Yuan 859e5553a4 sheepdog: fix loadvm operation
Currently the 'loadvm' opertaion works as following:
1. switch to the snapshot
2. mark current working VDI as a snapshot
3. rely on sd_create_branch to create a new working VDI based on the snapshot

This works not the same as other format as QCOW2. For e.g,

qemu > savevm # get a live snapshot snap1
qemu > savevm # snap2
qemu > loadvm 1 # This will steally create snap3 of the working VDI

Which will result in following snapshot chain:

base <-- snap1 <-- snap2 <-- snap3
          ^
          |
      working VDI

snap3 was unnecessarily created and might be annoying users.

This patch discard the unnecessary 'snap3' creation. and implement
rollback(loadvm) operation to the specified snapshot by
1. switch to the snapshot
2. delete working VDI
3. rely on sd_create_branch to create a new working VDI based on the snapshot

The snapshot chain for above example will be:

base <-- snap1 <-- snap2
          ^
          |
      working VDI

Cc: qemu-devel@nongnu.org
Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
Reviewed-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-04-26 13:37:51 +02:00
..
blkdebug.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
blkverify.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
bochs.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
cloop.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
commit.c block: fix null-pointer bug on error case in block commit 2013-01-17 10:51:11 +01:00
cow.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
curl.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
dmg.c block: Make find_image_format safe with NULL filename 2013-03-22 17:51:32 +01:00
gluster.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
iscsi.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
linux-aio.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
Makefile.objs block: Add support for Secure Shell (ssh) block device. 2013-04-15 10:18:05 +02:00
mirror.c block: Add driver-specific options for backing files 2013-04-22 10:27:59 +02:00
nbd.c Merge remote-tracking branch 'kwolf/for-anthony' into staging 2013-04-22 08:08:22 -05:00
parallels.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
qcow2-cache.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qcow2-cluster.c qcow2: Gather clusters in a looping loop 2013-03-28 11:52:44 +01:00
qcow2-refcount.c qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount 2013-04-05 18:58:05 +02:00
qcow2-snapshot.c qcow2: flush in qcow2_update_snapshot_refcount() 2013-03-15 16:07:50 +01:00
qcow2.c qcow2: allow sub-cluster compressed write to last cluster 2013-04-22 10:27:58 +02:00
qcow2.h aes: move aes.h from include/block to include/qemu 2013-04-13 13:51:57 +02:00
qcow.c qcow: allow sub-cluster compressed write to last cluster 2013-04-22 10:27:58 +02:00
qed-check.c qed: mark image clean after repair succeeds 2012-08-10 10:25:12 +02:00
qed-cluster.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-gencb.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-l2-cache.c qed: do not evict in-use L2 table cache entries 2012-03-12 15:14:06 +01:00
qed-table.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qed.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
qed.h block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
raw-aio.h block: make discard asynchronous 2013-01-15 10:03:47 +01:00
raw-posix.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
raw-win32.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
raw.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
rbd.c rbd: Fix use after free in rbd_open() 2013-04-26 13:26:28 +02:00
sheepdog.c sheepdog: fix loadvm operation 2013-04-26 13:37:51 +02:00
ssh.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
stream.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
vdi.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
vmdk.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
vpc.c block: Add options QDict to .bdrv_open() 2013-03-15 16:07:49 +01:00
vvfat.c block: Remove filename parameter from .bdrv_file_open() 2013-04-22 11:34:35 +02:00
win32-aio.c win32-aio: use iov utility functions instead of open-coding them 2013-01-18 09:57:51 +01:00