[pve-devel] [PATCH qemu-server] Fix #1717: delete snapshot when vm running and drive not attached
Alexandre DERUMIER
aderumier at odiso.com
Wed Jul 4 07:16:02 CEST 2018
any comment ?
----- Mail original -----
De: "aderumier" <aderumier at odiso.com>
À: "pve-devel" <pve-devel at pve.proxmox.com>
Cc: "aderumier" <aderumier at odiso.com>
Envoyé: Samedi 30 Juin 2018 13:18:49
Objet: [PATCH qemu-server] Fix #1717: delete snapshot when vm running and drive not attached
if we try to delete a snapshot, and that is disk from the snapshot
is not attached anymore (unused), we can't delete the snapshot
with qemu snapshot delete command (for storage which use it (qcow2,rbd,...))
example:
...
unused0: rbd:vm-107-disk-3
[snap1]
...
scsi2: rbd:vm-107-disk-3,size=1G
-> die
qmp command 'delete-drive-snapshot' failed - Device 'drive-scsi2' not found
If drive is not attached, we need to use the storage snapshot delete command
---
PVE/QemuServer.pm | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index d6efb3a..31152b6 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -4197,6 +4197,20 @@ sub qemu_volume_snapshot_delete {
my $running = check_running($vmid);
+ if($running) {
+
+ my $running_volids = {};
+ my $conf = PVE::QemuConfig->load_config($vmid);
+
+ foreach_drive($conf, sub {
+ my ($ds, $drive) = @_;
+
+ return if drive_is_cdrom($drive);
+ my $running_volids->{$drive->{file}} = 1;
+ });
+ $running = undef if !$running_volids->{$volid};
+ }
+
if ($running && do_snapshots_with_qemu($storecfg, $volid)){
vm_mon_cmd($vmid, "delete-drive-snapshot", device => $deviceid, name => $snap);
} else {
--
2.11.0
More information about the pve-devel
mailing list