]> git.proxmox.com Git - qemu-server.git/commitdiff
add lsi controller hotplug
authorDerumier Alexandre <aderumier@odiso.com>
Fri, 20 Jan 2012 10:42:06 +0000 (11:42 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 23 Jan 2012 08:13:01 +0000 (09:13 +0100)
Signed-off-by: Derumier Alexandre <aderumier@odiso.com>
PVE/QemuServer.pm

index eb077f10714a34c0824e0e64bc02546fc9887a86..ab7698ecbcc66c228daf49a21a81ea651396110c 100644 (file)
@@ -2295,6 +2295,14 @@ sub vm_deviceplug {
            return undef;
         }
     }
+
+    if ($deviceid =~ m/^(lsi)(\d+)$/) {
+        my $pciaddr = print_pci_addr($deviceid);
+        my $devicefull = "lsi,id=$deviceid$pciaddr";
+        qemu_deviceadd($vmid, $devicefull);
+        return undef if(!qemu_deviceaddverify($vmid, $deviceid));
+    }
+
     return 1;
 }
 
@@ -2310,6 +2318,11 @@ sub vm_deviceunplug {
         qemu_devicedel($vmid, $deviceid);
         return undef if !qemu_devicedelverify($vmid, $deviceid);
     }
+
+    if ($deviceid =~ m/^(lsi)(\d+)$/) {
+        return undef if !qemu_devicedel($vmid, $deviceid);
+    }
+
     return 1;
 }
 
@@ -2389,6 +2402,20 @@ sub qemu_devicedelverify {
     return undef;
 }
 
+sub qemu_findorcreatelsi {
+    my ($storecfg, $conf, $vmid, $device) = @_;
+
+    my $maxdev = 7;
+    my $controller = int($device->{index} / $maxdev);
+    my $lsiid="lsi$controller";
+    my $devices_list = vm_devices_list($vmid);
+
+    if(!defined($devices_list->{$lsiid})) {
+       return undef if !vm_deviceplug($storecfg, $conf, $vmid, $lsiid);
+    }
+    return 1;
+}
+
 sub vm_start {
     my ($storecfg, $vmid, $statefile, $skiplock) = @_;