[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