1. I'm sure I'm using the same libvirt and qemu. 2. Here are the files:
Domxml of the VM running with packages from the repository(before attaching NIC):
<domain type='kvm' id='10'> <name>vm1</name> <uuid>54028863-6910-44ac-a843-a61083e65b70</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu>1</vcpu> <cputune> <shares>1020</shares> </cputune> <sysinfo type='smbios'> <system> <entry name='manufacturer'>Red Hat</entry> <entry name='product'>RHEV Hypervisor</entry> <entry name='version'>17-1</entry> <entry name='serial'>53D19F64-D663-A017-8922-003048C440B8_00:30:48:c4:40:b8</entry> <entry name='uuid'>54028863-6910-44ac-a843-a61083e65b70</entry> </system> </sysinfo> <os> <type arch='x86_64' machine='pc-0.14'>hvm</type> <smbios mode='sysinfo'/> </os> <features> <acpi/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>Conroe</model> <topology sockets='1' cores='1' threads='1'/> </cpu> <clock offset='variable' adjustment='0' basis='utc'> <timer name='rtc' tickpolicy='catchup'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source startupPolicy='optional'/> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <disk type='file' device='disk' snapshot='no'> <driver name='qemu' type='raw' cache='none' error_policy='stop' io='threads'/> <source file='/rhev/data-center/3ade04e6-2ce0-46c4-94f9-8af8f3e8aff2/9d07cb97-50d5-499b-90d7-b33673aa6de2/images/ae1866ba-6d87-4851-8a25-bd107a355edd/4f4fd109-0922-461c-8096-a8deb878e1f6'/> <target dev='vda' bus='virtio'/> <serial>ae1866ba-6d87-4851-8a25-bd107a355edd</serial> <boot order='1'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <interface type='bridge'> <mac address='00:1a:4a:1e:31:00'/> <source bridge='ovirtmgmt'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <console type='pty' tty='/dev/pts/1'> <source path='/dev/pts/1'/> <target type='virtio' port='0'/> <alias name='console0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channels/vm1.com.redhat.rhevm.vdsm'/> <target type='virtio' name='com.redhat.rhevm.vdsm'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <input type='mouse' bus='ps2'/> <graphics type='spice' port='5900' tlsPort='5901' autoport='yes' listen='0' keymap='en-us' passwdValidTo='1970-01-01T00:00:01'> <listen type='address' address='0'/> </graphics> <video> <model type='qxl' vram='65536' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> <seclabel type='none'/> </domain>
The device attached (extracted from vdsm.log):
<interface type="bridge"> <mac address="00:1a:4a:1e:31:0e"/> <model type="virtio"/> <source bridge="ovirtmgmt"/> </interface>
Domxl After Adding the device(hotplug):
<domain type='kvm' id='10'> <name>vm1</name> <uuid>54028863-6910-44ac-a843-a61083e65b70</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu>1</vcpu> <cputune> <shares>1020</shares> </cputune> <sysinfo type='smbios'> <system> <entry name='manufacturer'>Red Hat</entry> <entry name='product'>RHEV Hypervisor</entry> <entry name='version'>17-1</entry> <entry name='serial'>53D19F64-D663-A017-8922-003048C440B8_00:30:48:c4:40:b8</entry> <entry name='uuid'>54028863-6910-44ac-a843-a61083e65b70</entry> </system> </sysinfo> <os> <type arch='x86_64' machine='pc-0.14'>hvm</type> <smbios mode='sysinfo'/> </os> <features> <acpi/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>Conroe</model> <topology sockets='1' cores='1' threads='1'/> </cpu> <clock offset='variable' adjustment='0' basis='utc'> <timer name='rtc' tickpolicy='catchup'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source startupPolicy='optional'/> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <disk type='file' device='disk' snapshot='no'> <driver name='qemu' type='raw' cache='none' error_policy='stop' io='threads'/> <source file='/rhev/data-center/3ade04e6-2ce0-46c4-94f9-8af8f3e8aff2/9d07cb97-50d5-499b-90d7-b33673aa6de2/images/ae1866ba-6d87-4851-8a25-bd107a355edd/4f4fd109-0922-461c-8096-a8deb878e1f6'/> <target dev='vda' bus='virtio'/> <serial>ae1866ba-6d87-4851-8a25-bd107a355edd</serial> <boot order='1'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <interface type='bridge'> <mac address='00:1a:4a:1e:31:00'/> <source bridge='ovirtmgmt'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='bridge'> <mac address='00:1a:4a:1e:31:0e'/> <source bridge='ovirtmgmt'/> <target dev='vnet1'/> <model type='virtio'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </interface> <console type='pty' tty='/dev/pts/1'> <source path='/dev/pts/1'/> <target type='virtio' port='0'/> <alias name='console0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channels/vm1.com.redhat.rhevm.vdsm'/> <target type='virtio' name='com.redhat.rhevm.vdsm'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <input type='mouse' bus='ps2'/> <graphics type='spice' port='5900' tlsPort='5901' autoport='yes' listen='0' keymap='en-us' passwdValidTo='1970-01-01T00:00:01'> <listen type='address' address='0'/> </graphics> <video> <model type='qxl' vram='65536' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> <seclabel type='none'/> </domain>
VM domxml when running vdsm from git (before trying to attach a NIC):
<domain type='kvm' id='11'> <name>vm1</name> <uuid>54028863-6910-44ac-a843-a61083e65b70</uuid> <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> <vcpu>1</vcpu> <cputune> <shares>1020</shares> </cputune> <sysinfo type='smbios'> <system> <entry name='manufacturer'>Red Hat</entry> <entry name='product'>RHEV Hypervisor</entry> <entry name='version'>17-1</entry> <entry name='serial'>53D19F64-D663-A017-8922-003048C440B8_00:30:48:c4:40:b8</entry> <entry name='uuid'>54028863-6910-44ac-a843-a61083e65b70</entry> </system> </sysinfo> <os> <type arch='x86_64' machine='pc-0.14'>hvm</type> <smbios mode='sysinfo'/> </os> <cpu mode='custom' match='exact'> <model fallback='allow'>Conroe</model> <topology sockets='1' cores='1' threads='1'/> </cpu> <clock offset='variable' adjustment='0' basis='utc'> <timer name='rtc' tickpolicy='catchup'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source startupPolicy='optional'/> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <disk type='file' device='disk' snapshot='no'> <driver name='qemu' type='raw' cache='none' error_policy='stop' io='threads'/> <source file='/rhev/data-center/3ade04e6-2ce0-46c4-94f9-8af8f3e8aff2/9d07cb97-50d5-499b-90d7-b33673aa6de2/images/ae1866ba-6d87-4851-8a25-bd107a355edd/4f4fd109-0922-461c-8096-a8deb878e1f6'/> <target dev='vda' bus='virtio'/> <serial>ae1866ba-6d87-4851-8a25-bd107a355edd</serial> <boot order='1'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <interface type='bridge'> <mac address='00:1a:4a:1e:31:00'/> <source bridge='ovirtmgmt'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <console type='pty' tty='/dev/pts/1'> <source path='/dev/pts/1'/> <target type='virtio' port='0'/> <alias name='console0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channels/vm1.com.redhat.rhevm.vdsm'/> <target type='virtio' name='com.redhat.rhevm.vdsm'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channels/vm1.org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0'/> <alias name='channel1'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <alias name='channel2'/> <address type='virtio-serial' controller='0' bus='0' port='3'/> </channel> <input type='mouse' bus='ps2'/> <graphics type='spice' port='5900' tlsPort='5901' autoport='yes' listen='0' keymap='en-us' passwdValidTo='1970-01-01T00:00:01'> <listen type='address' address='0'/> </graphics> <video> <model type='qxl' vram='65536' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> <seclabel type='none'/> </domain>
Device XML (Extracted from vdsm.log):
<interface type="bridge"> <mac address="00:1a:4a:1e:31:0f"/> <model type="virtio"/> <source bridge="ovirtmgmt"/> </interface>
Hope it helps, Itzik
-----Original Message----- From: Dan Kenigsberg [mailto:danken@redhat.com] Sent: יום ה 16 אוגוסט 2012 11:07 To: Itzik Brown Cc: vdsm-devel@lists.fedorahosted.org Subject: Re: [vdsm] Problem hotplugging an Interface
On Wed, Aug 15, 2012 at 10:03:44AM +0000, Itzik Brown wrote:
Hi,
I installed vdsm latest git version. When trying to hotplug a new NIC the operation fails.
Here are some lines from vdsmd.log
Thread-480::DEBUG::2012-08-15 11:50:52,150::libvirtvm::1398::vm.Vm::(hotplugNic) vmId=`54028863-6910-44ac-a843-a61083e65b70`::Hotplug NIC xml: <interface type="bridge"> <mac address="00:1a:4a:1e:31:0c"/> <model type="virtio"/> <source bridge="ovirtmgmt"/>
</interface>
Thread-480::ERROR::2012-08-15 11:50:52,297::libvirtvm::1403::vm.Vm::(hotplugNic) vmId=`54028863-6910-44ac-a843-a61083e65b70`::Hotplug failed Traceback (most recent call last): File "/usr/share/vdsm/libvirtvm.py", line 1401, in hotplugNic self._dom.attachDevice(nicXml) File "/usr/share/vdsm/libvirtvm.py", line 487, in f ret = attr(*args, **kwargs) File "/usr/lib64/python2.7/site-packages/vdsm/libvirtconnection.py", line 82, in wrapper ret = f(*args, **kwargs) File "/usr/lib64/python2.7/site-packages/libvirt.py", line 400, in attachDevice if ret == -1: raise libvirtError ('virDomainAttachDevice() failed', dom=self) libvirtError: internal error unable to execute QEMU command 'device_add': Bus 'pci.0' does not support hotplugging
OS: Fedora17 VDSM Packages: vdsm-4.10.0-0.313.git8bedc7e.fc17.x86_64 vdsm-xmlrpc-4.10.0-0.313.git8bedc7e.fc17.noarch vdsm-python-4.10.0-0.313.git8bedc7e.fc17.x86_64 Libvirt: libvirt-0.9.11.4-3.fc17.x86_64 QEMU: qemu-common-1.0.1-1.fc17.x86_64
Trying to attach the NIC using virsh fails as well:
virsh -c qemu+tcp://localhost/system attach-device vm1 --file /tmp/1.xml error: Failed to attach device from /tmp/1.xml error: internal error unable to execute QEMU command 'device_add': Bus 'pci.0' does not support hotplugging
When running with VDSM from ovirt repository with the following packages the hotplug of the NIC works: vdsm-xmlrpc-4.10.0-6.fc17.noarch vdsm-4.10.0-6.fc17.x86_64 vdsm-python-4.10.0-6.fc17.x86_64
Excuse me for doubting this report, but are you perfectly sure that you are using the same qemu and libvirt with this version of vdsm?
Could you post here the domxml and the device xml produced by the two versions of vdsm? I would like to hunt down the differences.