提交 25ee22bd 编写于 作者: R Roman Bogorodskiy

bhyve: fix disks address allocation

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.
上级 67af358d
...@@ -107,7 +107,8 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def, ...@@ -107,7 +107,8 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
} }
for (i = 0; i < def->ndisks; i++) { 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; continue;
if (virDomainPCIAddressReserveNextSlot(addrs, if (virDomainPCIAddressReserveNextSlot(addrs,
&def->disks[i]->info, &def->disks[i]->info,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册