On Fri, Mar 22, 2013 at 06:52:46PM +0100, Guido Günther wrote: > f946462e14ac036357b7c11ce5c23f94a3ee4e49 changed behavior by settings > VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI upfront. If we do so before invoking > qemuDomainPCIAddressEnsureAddr we merely try to set the PCI slot via > qemuDomainPCIAddressReserveSlot instead reserving a new address via > qemuDomainPCIAddressSetNextAddr which fails with > > $ ~/run-tck-test domain/200-disk-hotplug.t > ./scripts/domain/200-disk-hotplug.t .. # Creating a new transient domain > ./scripts/domain/200-disk-hotplug.t .. 1/5 # Attaching the new disk > /var/lib/jenkins/jobs/libvirt-tck-build/workspace/scratchdir/200-disk-hotplug/extra.img > > # Failed test 'disk has been attached' > # at ./scripts/domain/200-disk-hotplug.t line 67. > # died: Sys::Virt::Error (libvirt error code: 1, message: internal error > unable to reserve PCI address 0:0:0.0 > # ) > --- > v2 merely fixes a typo in $subject.
Ping? I'm sorry for being that impatient but I'd really love to see the TCK tests switch back to green (at least for a while). Cheers, -- Guido > -- Guido > > src/qemu/qemu_hotplug.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index de9edd4..b978b97 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -226,7 +226,6 @@ int qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, > disk->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW; > else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) > disk->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390; > - else disk->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; > } > > for (i = 0 ; i < vm->def->ndisks ; i++) { > @@ -253,7 +252,8 @@ int qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, > if (qemuDomainCCWAddressAssign(&disk->info, priv->ccwaddrs, > !disk->info.addr.ccw.assigned) < > 0) > goto error; > - } else if (disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { > + } else if (!disk->info.type || > + disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { > if (qemuDomainPCIAddressEnsureAddr(priv->pciaddrs, &disk->info) > < 0) > goto error; > } > @@ -291,14 +291,17 @@ int qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, > } > } > } > - } else if (disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI){ > + } else if (!disk->info.type || > + disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { > virDevicePCIAddress guestAddr = disk->info.addr.pci; > ret = qemuMonitorAddPCIDisk(priv->mon, > disk->src, > type, > &guestAddr); > - if (ret == 0) > + if (ret == 0) { > + disk->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; > memcpy(&disk->info.addr.pci, &guestAddr, sizeof(guestAddr)); > + } > } > qemuDomainObjExitMonitor(driver, vm); > > -- > 1.7.10.4 > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list