]> xenbits.xensource.com Git - libvirt.git/commitdiff
bhyve: fix disks address allocation
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Sun, 28 Aug 2016 12:45:08 +0000 (15:45 +0300)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Mon, 29 Aug 2016 06:37:06 +0000 (09:37 +0300)
As bhyve currently doesn't use controller addressing and simply
uses 1 implicit controller for 1 disk device, the scheme looks the
following:

 pci addrees -> (implicit controller) -> disk device

So in fact we identify disk devices by pci address of implicit
controller and just pass it this way to bhyve in a form:

 -s pci_addr,ahci-(cd|hd),/path/to/disk

Therefore, we cannot use virDeviceInfoPCIAddressWanted() because it
does not expect that disk devices might need PCI address assignment.

As a result, if a disk was specified without address, it will not be
generated and domain will to start.

Until proper controller addressing is implemented in the bhyve
driver, force each disk to have PCI address generated if it was not
specified by user.

src/bhyve/bhyve_device.c

index 8373a5f2c3f0386ee09efb1c1482753683109a82..ca30e9f462bb7fc46967b1fc9bc2df87e50dc19d 100644 (file)
@@ -107,7 +107,8 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
     }
 
     for (i = 0; i < def->ndisks; i++) {
-        if (!virDeviceInfoPCIAddressWanted(&def->disks[i]->info))
+        if (def->disks[i]->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
+            !virPCIDeviceAddressIsEmpty(&def->disks[i]->info.addr.pci))
             continue;
         if (virDomainPCIAddressReserveNextSlot(addrs,
                                                &def->disks[i]->info,