I used a recent version of the softwrae stack from Disco
- qemu 3.1
- libvirt 5.0
- openvswitch 2.11
With that I had a guest with an OVS device like that:
<interface type='bridge'>
<mac address='52:54:00:22:57:fd'/>
<source network='ovsbr0' bridge='ovsbr0'/>
<virtualport type='openvswitch'>
<parameters interfaceid='f44ac4e9-fe46-48b8-920c-7ba13dd024ba'/>
</virtualport>
<target dev='vnet1'/>
<model type='virtio'/>
<driver name='vhost' queues='4'/>
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
</interface>
Not too different to your's I'd think.
The OVS is trivial just having this interface atm.
$ sudo ovs-vsctl show
596674ef-e4cd-471f-9708-9caa5737961c
Bridge "ovsbr0"
Port "eno49"
Interface "eno49"
Port "ovsbr0"
Interface "ovsbr0"
type: internal
Port "vnet1"
Interface "vnet1"
ovs_version: "2.11.0"
$ ip link show dev vnet1
93: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master
ovs-system state UNKNOWN mode DEFAULT group default qlen 1000
link/ether fe:54:00:22:57:fd brd ff:ff:ff:ff:ff:ff
I have a started a second guest on the same vswitch (to check traffic
from the first guest later on).
Now lets delete that port:
$ sudo ovs-vsctl del-port ovsbr0 vnet1
$ sudo ovs-vsctl show
596674ef-e4cd-471f-9708-9caa5737961c
Bridge "ovsbr0"
Port "vnet3"
Interface "vnet3"
Port "eno49"
Interface "eno49"
Port "ovsbr0"
Interface "ovsbr0"
type: internal
ovs_version: "2.11.0"
Ok the OVS device is gone.
Obviously traffic on that interface is dead now, but the guest is still alive
and happy.
The host dev is still there:
$ ip link show dev vnet1
93: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN
mode DEFAULT group default qlen 1000
link/ether fe:54:00:22:57:fd brd ff:ff:ff:ff:ff:ff
Removing that as well as suggested
$ sudo ip link del vnet1
$ ip link show dev vnet1
Device "vnet1" does not exist.
The guest still is up and running, while traffic still won't work for obvious
reasons.
Now lets trigger the hot-unplug of the device.
$ virsh detach-device guest-openvswitch-1 net.xml
Device detached successfully
The guest is still happy and alive.
It lost the device (since we detached it) but that is ok and intentional.
** Bug watch added: Red Hat Bugzilla #1242383
https://bugzilla.redhat.com/show_bug.cgi?id=1242383
** Bug watch added: Red Hat Bugzilla #1151306
https://bugzilla.redhat.com/show_bug.cgi?id=1151306
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1812822
Title:
Guest crashed when detaching the ovs interface device
Status in Ubuntu on IBM z Systems:
New
Status in linux package in Ubuntu:
Incomplete
Status in qemu package in Ubuntu:
Incomplete
Bug description:
When detaching one openvswitch interface device with virsh detach-device, if
the port has been deleted from the ovs and the interface device has been
deleted. The virsh detach-device will fail with "error: Unable to read from
monitor: Connection reset by peer", the qemu is terminated and the log shows "
UNSETVNETLE ioctl() failed, File descriptor in bad state".
[Background] This error is originally found from the openstack KVM CI tempest
test. By investigating I found it's introduced by one ovs-vif patch, which
deletes the ovs port and delete the interface before detaching the device. You
can find the commit from https://bugs.launchpad.net/os-vif/+bug/1801072
Reproduced:
root@xxxx:~# ovs-vsctl del-port br0 tap9273235a-dd
root@xxxx:~# ip link del tap9273235a-dd
The interface device tap9273235a-dd has been removed from the host(ifconfg,
ovs-vsctl show) and can be found in the guest.(logon the guest, ip a it's in
down state)
root@xxxx:~# virsh detach-device kvm net.xml
error: Failed to detach device from net.xml
error: Unable to read from monitor: Connection reset by peer
The qemu has terminated and the log in /var/log/libvirt/qemu/kvm.log
TUNSETVNETLE ioctl() failed: File descriptor in bad state.
2019-01-18 08:16:11.304+0000: shutting down, reason=crashed
It seems the qemu tried to handle this interface, but in fact it has been
deleted. qemu couldn't read the file and give the error.
But I don't think the guest should be crashed directly for the file
descriptor error.
Environment:
Ubuntu 16.04.5 LTS
Linux (EC12) 4.4.0-141-generic
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.5~cloud0)
libvirtd (libvirt) 4.0.0
net.xml
<interface type='bridge'>
<mac address='52:54:00:fb:5c:46'/>
<source bridge='br0'/>
<virtualport type='openvswitch'>
<parameters interfaceid='9273234d-9ad4-4ecf-8869-d63ac17a0e6d'/>
</virtualport>
<target dev='tap9273235a-dd'/>
<model type='virtio'/>
<mtu size='1450'/>
<alias name='net1'/>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0005'/>
</interface>
kvm.xml
<domain type='kvm' id='31'>
<name>kvm</name>
<uuid>59f71b47-16e4-401d-9d33-30bc1605a84a</uuid>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='s390x' machine='s390-ccw-virtio-bionic'>hvm</type>
<boot dev='hd'/>
</os>
<cpu>
<topology sockets='1' cores='1' threads='1'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-s390x</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/root/xenial-minimal.qcow2'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
</disk>
<console type='pty' tty='/dev/pts/2'>
<source path='/dev/pts/2'/>
<target type='sclp' port='0'/>
<alias name='console0'/>
</console>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
</memballoon>
<panic model='s390'/>
</devices>
<seclabel type='dynamic' model='apparmor' relabel='yes'>
<label>libvirt-59f71b47-16e4-401d-9d33-30bc1605a84a</label>
<imagelabel>libvirt-59f71b47-16e4-401d-9d33-30bc1605a84a</imagelabel>
</seclabel>
<seclabel type='dynamic' model='dac' relabel='yes'>
<label>+0:+0</label>
<imagelabel>+0:+0</imagelabel>
</seclabel>
</domain>
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1812822/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp