On Wed, Mar 31, 2021 at 02:11:40PM +0200, Michal Privoznik wrote: > 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. Oh, right I was mis-understanding the scenario. I've always thought if we wanted to support use of resources from other namespaces, then that would involve use of a namespace="$PID" attribute to identify the namespace. <source type='unix' namespace="523532" path='/var/lib/vhost_sockets/sock7f9a971a-cf3' mode='server'/> IOW, libvirt could enter the namespace, and then talk to the OVS db.sock at its normal location. It would be bit strange having namespace refer to a different NS for the OVS, but using the path=/var/lib/..... from the current namespace, but as long as we define the semantics clearly its not the end of the world. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|