[libvirt] [PATCH] bhyve: fix disks address allocation
Laine Stump
laine at laine.org
Sun Aug 28 17:21:50 UTC 2016
On 08/28/2016 08:45 AM, Roman Bogorodskiy wrote:
> 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 not implemented in the bhyve
s/not// :-)
> driver, force each disk to have PCI address generated if it was not
> specified by user.
> ---
> src/bhyve/bhyve_device.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c
> index 8373a5f..ca30e9f 100644
> --- a/src/bhyve/bhyve_device.c
> +++ b/src/bhyve/bhyve_device.c
> @@ -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,
ACK.
More information about the libvir-list
mailing list