Looks like this is fixed in master. commit af957387547b05ed6dc4d84c10cca42700a7aeda
Author: Zhang Haoyu <zhan...@sangfor.com> Date: Mon Sep 29 16:38:02 2014 +0800 snapshot: fix referencing wrong variable in while loop in do_delvm The while loop variabal is "bs1", but "bs" is always passed to bdrv_snapshot_delete_by_id_or_name. Broken in commit a89d89d, v1.7.0. On Tue, Jul 14, 2015 at 12:32 AM, Marcus <shadow...@gmail.com> wrote: > Ok, I seem to have fixed it. I can submit a patch, but some input would be > appreciated. In savevm.c, we have two functions: > > void hmp_delvm(Monitor *mon, const QDict *qdict), which my libvirt is > using > > static int del_existing_snapshots(Monitor *mon, const char *name) > > > These look to have the same origins. My guess was that perhaps the hmp > version was first, and the second was a copy for QMP, or perhaps vice > versa. At any rate, I changed hmp_delvm to call del_existing_snapshots: > > void hmp_delvm(Monitor *mon, const QDict *qdict) > > { > > const char *name = qdict_get_str(qdict, "name"); > > del_existing_snapshots(mon, name); > > } > > And the issue went away. My only concern with this is that hmp_delvm does > a slightly different thing, it first calls find_vmstate_bs() which seems > to check if the block devices support snapshots. del_existing_snapshots > does this slightly differently. If I can get feedback on that I'd > appreciate it. Also, I'll look around for patch submission guidelines, but > if someone can point me in the right direction I'd appreciate it as well. > > Thanks > > > > On Mon, Jul 13, 2015 at 11:29 PM, Marcus <shadow...@gmail.com> wrote: > >> Ok, this is weird. It looks like it dies on the first disk, which is the >> only one that actually gets its snapshot removed. Perhaps it is processing >> the first disk a second time? >> >> # virsh qemu-monitor-command i-2-38-VM --hmp 'delvm 1' >> >> Error while deleting snapshot on device 'virtio-disk0': Can't find the >> snapshot >> >> On Mon, Jul 13, 2015 at 10:28 PM, Marcus <shadow...@gmail.com> wrote: >> >>> Hi all, >>> >>> I've recently been toying with VM snapshots, and have ran into an >>> issue. Given a VM with multiple disks, it seems a snapshot-create followed >>> by a snapshot-delete will only remove the qcow2 snapshot for the first disk >>> (or perhaps just the disk that contains the memory), not all of the disk >>> snapshots it created. Is this something people are aware of? >>> >>> In searching around, I found a bug report where snapshot-creates >>> would fail due to the qcow2 snapshot ids being inconsistent. That looks >>> like it is patched for 2.4 qemu ( >>> http://lists.nongnu.org/archive/html/qemu-devel/2015-03/msg04963.html), >>> this bug would trigger that one by leaving IDs around that are inconsistent >>> between member disks, but is not the same. >>> >>> At first I was snooping around the libvirt lists looking for an >>> answer, but found in the code that they're simply calling the qemu monitor >>> to handle snapshot deletes on active VMs. >>> >>> # virsh snapshot-create 7 >>> >>> Domain snapshot 1436792720 created >>> >>> >>> # virsh snapshot-list 7 >>> >>> Name Creation Time State >>> >>> ------------------------------------------------------------ >>> >>> 1436792720 2015-07-13 06:05:20 -0700 running >>> >>> >>> # virsh domblklist 7 >>> >>> Target Source >>> >>> ------------------------------------------------ >>> >>> vda >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/e4d6e885-1382-40bc-890b-ad9c8b51a7a5 >>> >>> vdb >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/7033e4c6-5f59-4325-b7e0-ae191e12e86c >>> >>> >>> # qemu-img snapshot -l >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/e4d6e885-1382-40bc-890b-ad9c8b51a7a5 >>> >>> Snapshot list: >>> >>> ID TAG VM SIZE DATE VM CLOCK >>> >>> 1 1436792720 173M 2015-07-13 06:05:20 00:01:10.938 >>> >>> >>> # qemu-img snapshot -l >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/7033e4c6-5f59-4325-b7e0-ae191e12e86c >>> >>> Snapshot list: >>> >>> ID TAG VM SIZE DATE VM CLOCK >>> >>> 1 1436792720 0 2015-07-13 06:05:20 00:01:10.938 >>> >>> >>> # virsh snapshot-delete 7 1436792720 >>> >>> Domain snapshot 1436792720 deleted >>> >>> >>> # qemu-img snapshot -l >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/e4d6e885-1382-40bc-890b-ad9c8b51a7a5 >>> >>> # qemu-img snapshot -l >>> /mnt/2a270ef3-f389-37a4-942f-380bed9f70aa/7033e4c6-5f59-4325-b7e0-ae191e12e86c >>> >>> Snapshot list: >>> >>> ID TAG VM SIZE DATE VM CLOCK >>> >>> 1 1436792720 0 2015-07-13 06:05:20 00:01:10.938 >>> >> >> >