[Libvirt] Attach qemu commands to an running xml domain
Michal Privoznik
mprivozn at redhat.com
Wed Mar 31 12:11:40 UTC 2021
On 3/31/21 1:36 PM, Daniel P. Berrangé wrote:
> On Wed, Mar 31, 2021 at 01:09:32PM +0200, Michal Privoznik wrote:
>> On 3/30/21 11:35 AM, Waleed Musa wrote:
>>> Hi all,
>>>
>>> I see in libvirt you are supporting attach/detach devices to existing
>>> xml domain using *attachDeviceFlags *and *detachDeviceFlags *APIs.
>>> Now we are adding some qemu command to the xml domain related to some
>>> interfaces using alias names before starting the VM, but we will face an
>>> issue with hot plug such devices, so I have two question here:
>>>
>>> 1. Is it applicable to set the alias names for interfaces because I saw
>>> it's ignored when I add it to xml domain before starting the VM?
>>> 2. Is there a way or API to attach qemu commands to running domain as
>>> you are doing in attaching the device using *attachDeviceFlags?*
>>>
>>> *Example of my xml*
>>> *<domain type='kvm' id='5'
>>> xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
>>> *
>>> * <devices>
>>> *
>>> <interface type='vhostuser'>
>>> <mac address='fa:16:3e:ac:12:4c'/>
>>> <source type='unix'
>>> path='/var/lib/vhost_sockets/sockbbb6bbe9-eb5' mode='server'/>
>>> <target dev='tapbbb6bbe9-eb'/>
>>> <model type='virtio'/>
>>> <driver queues='4' rx_queue_size='512' tx_queue_size='512'/>
>>> <alias name='net0'/>
>>> <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
>>> function='0x0'/>
>>> </interface>
>>> * </devices>
>>> *
>>> * <qemu:commandline>*
>>> <qemu:arg value='-set'/>
>>> <qemu:arg value='device.net0.page-per-vq=on'/>
>>> <qemu:arg value='-set'/>
>>> <qemu:arg value='device.net0.host_mtu=8942'/>
>>> * </qemu:commandline>*
>>> *</domain>*
>>
>> Is this perhaps related to the following bug?
>>
>> "interface type='vhostuser' libvirtError: Cannot set interface MTU"
>> https://bugzilla.redhat.com/show_bug.cgi?id=1940559
>>
>> Are you trying to work around it? I am discussing with Moshe how libvirt can
>> help, but honestly, I don't like the solution I proposed.
>>
>> Long story short, the interface is in different container (among with OVS
>> bridge) and thus when we query ovs-vsctl it connects to the system one and
>> doesn't find that interface. What I proposed was to allow specifying path to
>> ovs db.socket but this would need to be done o per domain basis.
>
> If it is possible to specify a ovs db.socket path in the XML, then
> why can't this path simply be bind mounted to the right location
> in the first place.
Because then you'd override the path for system wide OVS. I mean, by
default the socket is under /var/run/openvswitch/db.sock and if you have
another OVS running inside a container you can expose it under
/prefix/var/run/openvswitch/db.sock. ovs-vsctl allows this by --db=$path
argument.
Michal
More information about the libvir-list
mailing list