]> git.proxmox.com Git - mirror_qemu.git/commit
block: Fix blockdev-snapshot error handling
authorKevin Wolf <kwolf@redhat.com>
Thu, 2 Mar 2017 14:26:18 +0000 (15:26 +0100)
committerKevin Wolf <kwolf@redhat.com>
Tue, 7 Mar 2017 13:53:28 +0000 (14:53 +0100)
commit067acf28d1d726059f994356f25e054ce2926acf
tree751726429485f8a66b96915dad5114c3ec5df27d
parent88f9d1b3d2fa8df276b2f75dcbd7fb78ed08be20
block: Fix blockdev-snapshot error handling

For blockdev-snapshot, external_snapshot_prepare() accepts an arbitrary
node reference at first and only checks later whether it already has a
backing file. Between those places, other errors can occur.

Therefore checking in external_snapshot_abort() whether state->new_bs
has a backing file is not sufficient to tell whether bdrv_append() was
already completed or not. Trying to undo the bdrv_append() when it
wasn't even executed is wrong.

Introduce a new boolean flag in the state to fix this.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
blockdev.c