[libvirt] BUG: attaching - detaching network device only works 7 times

Daniel P. Berrange berrange at redhat.com
Thu Apr 15 11:50:51 UTC 2010


On Thu, Apr 15, 2010 at 07:34:54AM -0400, Stefan Berger wrote:
> "Daniel P. Berrange" <berrange at redhat.com> wrote on 04/15/2010 05:22:22 
> AM:
> 
> >
> > 
> > Please respond to "Daniel P. Berrange"
> > 
> > On Wed, Apr 14, 2010 at 08:16:22PM -0400, Stefan Berger wrote:
> > > With the current tip: While extending a test case I found that 
> attaching
> > > and detaching the following network device works only 7 times with the
> > > below script:
> > > 
> > >     <interface type='bridge'>
> > >       <source bridge='static'/>
> > >       <mac address='52:54:00:4d:a2:58'/>
> > >       <target dev='attach0'/>
> > >     </interface>
> > > 
> > > 
> > > let c=1; while test 1; do virsh attach-device acl attach.xml ; virsh
> > > detach-device acl attach.xml; echo ${c}; let c=c+1; done
> > > 
> > > Then the following error occurs:
> > > 
> > > error: Failed to attach device from attach.xml
> > > error: operation failed: parsing pci_add reply failed: Too Many NICs
> > > failed to add macaddr=52:54:00:4d:a2:58,vlan=1,name=net1
> > > 
> > > It looks like the detachment of the device is not done by qemu?
> > 
> > Yeah, sounds like it - what version of QEMU do you have ? 
> > 
> 
> rpm -q --whatprovides /usr/bin/qemu-kvm
> qemu-system-x86-0.12.3-6.fc13.x86_64

It looks like PCI device delete is completely fubar in qemu 0.12.x to me

# qemu-kvm -monitor stdio
QEMU 0.12.1 monitor - type 'help' for more information
(qemu) device_add lsi,id=foo
(qemu) info qtree
bus: main-system-bus
  type System
  dev: i440FX-pcihost, id ""
    bus: pci.0
      type PCI
      dev: lsi53c895a, id "foo"
        bus-prop: addr = 04.0
        bus-prop: romfile = <null>
        bus-prop: rombar = 1
        class SCSI controller, addr 00:04.0, pci id 1000:0012 (sub 1af4:1000)
        bar 0: i/o at 0xffffffffffffffff [0xfe]
        bar 1: mem at 0xffffffffffffffff [0x3fe]
        bar 2: mem at 0xffffffffffffffff [0x1ffe]
        bus: foo.0
          type SCSI
...snip...
(qemu) device_del foo
(qemu) info qtree
bus: main-system-bus
  type System
  dev: i440FX-pcihost, id ""
    bus: pci.0
      type PCI
      dev: lsi53c895a, id "foo"
        bus-prop: addr = 04.0
        bus-prop: romfile = <null>
        bus-prop: rombar = 1
        class SCSI controller, addr 00:04.0, pci id 1000:0012 (sub 1af4:1000)
        bar 0: i/o at 0xffffffffffffffff [0xfe]
        bar 1: mem at 0xffffffffffffffff [0x3fe]
        bar 2: mem at 0xffffffffffffffff [0x1ffe]
        bus: foo.0
          type SCSI
...snip...


Notice 'device_del' completed without error, but didn't actually delete
the device. The same seems to be true of 'pci_del' :-(


Even if that wasn't broken though, I don't see how NIC hotplug would work
in your scenario. That error message about Too Many NICs is becuase the
'nd_table' in QEMU's net.c has all fields set 'used = 1'. I don't see any
code which ever sets 'used = 0'.

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list