[pve-devel] [PATCH] don't try to hotplug disk if a disk already	exist.
    Alexandre Derumier 
    aderumier at odiso.com
       
    Wed Aug 27 16:29:05 CEST 2014
    
    
  
Currenly it's working with virtio-blk because we check in QemuServer::vm_deviceplug
if the virtio pci controller virtioX exist. (listing pci devices wih qmp)
But it don't work with scsi disk, because hotplugged devices are disks,
and not pci controller
This break update for disk throttle for example.
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/API2/Qemu.pm |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 985a9f8..1c64ca7 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -759,12 +759,16 @@ my $vmconfig_update_disk = sub {
 	$rpcenv->check_vm_perm($authuser, $vmid, undef, ['VM.Config.Disk']);
     }
 
+    my $old_volid = undef;
+
     if ($conf->{$opt}) {
 
 	if (my $old_drive = PVE::QemuServer::parse_drive($opt, $conf->{$opt}))  {
 
 	    my $media = $drive->{media} || 'disk';
 	    my $oldmedia = $old_drive->{media} || 'disk';
+	    $old_volid = $drive->{file};
+
 	    die "unable to change media type\n" if $media ne $oldmedia;
 
 	    if (!PVE::QemuServer::drive_is_cdrom($old_drive) &&
@@ -822,8 +826,7 @@ my $vmconfig_update_disk = sub {
 	    }
 	}
 
-    } else { # hotplug new disks
-
+    } elsif (!$old_volid) { # hotplug new disks
 	die "error hotplug $opt" if !PVE::QemuServer::vm_deviceplug($storecfg, $conf, $vmid, $opt, $drive);
     }
 };
-- 
1.7.10.4
    
    
More information about the pve-devel
mailing list