[libvirt] [BUG] Re: [2/6] loadvm: improve tests before bdrv_snapshot_goto()

Hello, Am Dienstag 03 August 2010 06:44:26 schrieb Kevin Wolf:
From: Miguel Di Ciurcio Filho <miguel.filho@gmail.com>
This patch improves the resilience of the load_vmstate() function, doing further and better ordered tests.
This patch broke restoring not-running VMs using libvirt-0.8.7 with qemu-0.14: When the domain is not running while taking a snpshot, the sn.vm_state_size == 0: 2021 } else if (sn.vm_state_size == 0) { (gdb) print sn $6 = {id_str = "1", '\0' <repeats 126 times>, name = "pre-update-flash", '\0' <repeats 239 times>, vm_state_size = 0, date_sec = 1302698007, date_nsec = 711909000, vm_clock_nsec = 0}
The [old] process: ... - run bdrv_snapshot_goto() on devices - if fails, give an warning and goes to the next (not good!) - if fails on the VM state device, return zero (not good!) - check if the requested snapshot exists on the device that saves the VM state and the state is not zero - if fails return -error
Previously the qcow2 image was still reverted to the old state, so on the next start of the domain the qcow2 image would be in the state of the snapshot
New behavior: ... - check if the requested snapshot exists on the device that saves the VM state and the state is not zero - if fails return -error ... - run snapshot_goto() on devices
Now the qcow2 image is not reverted and when the domain is started, it is NOT in the state of the snapshot. I can't decide if this regression is an Qemu bug or libvirt should be adapted to this new behavior. I found the Bug also reported with Ubuntu and created a Bug in our own German bugtracker: <https://bugs.launchpad.net/qemu/+bug/726619> <https://forge.univention.org/bugzilla/show_bug.cgi?id=22221> Sincerely Philipp Hahn -- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/

Am 14.04.2011 11:10, schrieb Philipp Hahn:
Hello,
Am Dienstag 03 August 2010 06:44:26 schrieb Kevin Wolf:
From: Miguel Di Ciurcio Filho <miguel.filho@gmail.com>
This patch improves the resilience of the load_vmstate() function, doing further and better ordered tests.
This patch broke restoring not-running VMs using libvirt-0.8.7 with qemu-0.14: When the domain is not running while taking a snpshot, the sn.vm_state_size == 0:
[...]
Previously the qcow2 image was still reverted to the old state, so on the next start of the domain the qcow2 image would be in the state of the snapshot
[...]
Now the qcow2 image is not reverted and when the domain is started, it is NOT in the state of the snapshot.
I can't decide if this regression is an Qemu bug or libvirt should be adapted to this new behavior.
Ouch. I wouldn't have expected that libvirt relies on this qemu bug. When libvirt doesn't use the VM state but boots a fresh VM, it should call qemu-img snapshot -a for the disks rather than using the loadvm monitor command. Kevin

On 04/14/2011 03:29 AM, Kevin Wolf wrote:
Am 14.04.2011 11:10, schrieb Philipp Hahn:
Reviving an old thread...
Hello,
Am Dienstag 03 August 2010 06:44:26 schrieb Kevin Wolf:
From: Miguel Di Ciurcio Filho<miguel.filho@gmail.com>
This patch improves the resilience of the load_vmstate() function, doing further and better ordered tests.
This patch broke restoring not-running VMs using libvirt-0.8.7 with qemu-0.14: When the domain is not running while taking a snpshot, the sn.vm_state_size == 0:
[...]
Previously the qcow2 image was still reverted to the old state, so on the next start of the domain the qcow2 image would be in the state of the snapshot
[...]
Now the qcow2 image is not reverted and when the domain is started, it is NOT in the state of the snapshot.
I can't decide if this regression is an Qemu bug or libvirt should be adapted to this new behavior.
Ouch. I wouldn't have expected that libvirt relies on this qemu bug. When libvirt doesn't use the VM state but boots a fresh VM, it should call qemu-img snapshot -a for the disks rather than using the loadvm monitor command.
Libvirt should be using 'qemu-img snapshot -a' before reverting to a snapshot made via 'qemu-img snapshot -c'; I'm writing the patch now. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (3)
-
Eric Blake
-
Kevin Wolf
-
Philipp Hahn