[pve-devel] [PATCH] hot-unplug : don't unplug disks if hotplug config option < 2.

Alexandre Derumier aderumier at odiso.com
Wed Feb 20 15:53:44 CET 2013


Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/QemuServer.pm |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index fb672eb..5e02734 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -165,8 +165,10 @@ my $confdesc = {
     },
     hotplug => {
         optional => 1,
-        type => 'boolean',
+        type => 'integer',
         description => "Allow hotplug for disk and network device",
+        minimum => 0,
+        maximum => 2,
         default => 1,
     },
     reboot => {
@@ -2591,6 +2593,14 @@ sub vm_deviceunplug {
     my $devices_list = vm_devices_list($vmid);
     return 1 if !defined($devices_list->{$deviceid});
 
+    if ($deviceid =~ m/^(net)(\d+)$/) {
+        return undef if !qemu_netdevdel($vmid, $deviceid);
+        qemu_devicedel($vmid, $deviceid);
+        return undef if !qemu_devicedelverify($vmid, $deviceid);
+    }
+    
+    return 1 if (!$conf->{hotplug} || (defined($conf->{hotplug}) && $conf->{hotplug} < 2));
+
     die "can't unplug bootdisk" if $conf->{bootdisk} && $conf->{bootdisk} eq $deviceid;
 
     if ($deviceid =~ m/^(virtio)(\d+)$/) {
@@ -2608,12 +2618,6 @@ sub vm_deviceunplug {
         return undef if !qemu_drivedel($vmid, $deviceid);
     }
 
-    if ($deviceid =~ m/^(net)(\d+)$/) {
-        return undef if !qemu_netdevdel($vmid, $deviceid);
-        qemu_devicedel($vmid, $deviceid);
-        return undef if !qemu_devicedelverify($vmid, $deviceid);
-    }
-
     return 1;
 }
 
-- 
1.7.10.4




More information about the pve-devel mailing list