Public bug reported: with certain version of iproute2 spawning of vm with vhost-user ports will fail do to a device not found error generated by trying to set the mtu on a vhost-user port us the ip command.
this bug is present in stable/kilo, stable/liberty and master and i would like to ask that it be back ported if accepted and fixed in master. when using vhost-user with ovs-dpdk the vhost-user port is plugged into ovs by nova using a non atomic call to linux_net.create_ovs_vif_port to add an ovs port followed by a second call to linux_net.ovs_set_vhostuser_port_type to update the port type. see: https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637-L640 the reuse of the create_ovs_vif_port has an untended concequece of introducing an error where the ip tool is invoked to try and set the mtu on the userspace vhost-user interface which dose not exist as a kernel netdev. https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1376 this results in the in the call to set_device_mtu throwing an exception as the ip comand exits with code 1 https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1337-L1339 as a result the second function call to ovs_set_vhostuser_port_type is never maid and the vm fails to boot. to resolve this issue i would like to introduce a new function to inux_net.py create_ovs_vhostuser_port which will create the vhostuser port as an atomic action and will not set the mtu similar to the impentation in the os-vif vhost-user driver https://github.com/jaypipes/vif_plug_vhostuser/blob/master/vif_plug_vhostuser/linux_net.py#L34-L46 an alternitive solution would be to add "1" to the retrun code check here https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1339 or catch the exception here https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637 however neither solve the underlying cause. this was observed with kilo openstack on ubuntu 14.04 with ovs-dpdk deployed with puppet/fule. ** Affects: nova Importance: Undecided Assignee: sean mooney (sean-k-mooney) Status: New ** Changed in: nova Assignee: (unassigned) => sean mooney (sean-k-mooney) ** Description changed: - with certain version of iproute2 spawning of vm with vhost-user ports will fail do to a + with certain version of iproute2 spawning of vm with vhost-user ports will fail do to a device not found error generated by trying to set the mtu on a vhost-user port us the ip command. this bug is present in stable/kilo, stable/liberty and master and i would like to ask that it be back ported if accepted and fixed in master. when using vhost-user with ovs-dpdk the vhost-user port is plugged into ovs by nova using - a non atomic call to linux_net.create_ovs_vif_port to add an ovs port followed by + a non atomic call to linux_net.create_ovs_vif_port to add an ovs port followed by a second call to linux_net.ovs_set_vhostuser_port_type to update the port type. see: https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637-L640 the reuse of the create_ovs_vif_port has an untended concequece of introducing an error where the ip tool is invoked to try and set the mtu on the userspace vhost-user interface which dose not exist - as a kernel netdev. + as a kernel netdev. https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1376 this results in the in the call to set_device_mtu throwing an exception as the ip comand exits with code 1 https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1337-L1339 as a result the second function call to ovs_set_vhostuser_port_type is never maid and the vm fails to boot. to resolve this issue i would like to introduce a new function to inux_net.py - create_ovs_vhostuser_port which will create the vhostuser port as an atomic action + create_ovs_vhostuser_port which will create the vhostuser port as an atomic action and will not set the mtu similar to the impentation in the os-vif vhost-user driver https://github.com/jaypipes/vif_plug_vhostuser/blob/master/vif_plug_vhostuser/linux_net.py#L34-L46 - - an alternitive solution would be to add "1" to the retrun code check here https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1339 or catch the exception here https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637 however neither solve the underlying cause. - this was observed on ubuntu 14.04 when trying to deploy ovs-dpdk with - kilo using puppet/fule. + an alternitive solution would be to add "1" to the retrun code check + here + https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1339 + or catch the exception here + https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637 + however neither solve the underlying cause. + + this was observed with kilo openstack on ubuntu 14.04 with ovs-dpdk + deployed with puppet/fule. -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1533876 Title: plug_vhostuser may fail due to device not found error when setting mtu Status in OpenStack Compute (nova): New Bug description: with certain version of iproute2 spawning of vm with vhost-user ports will fail do to a device not found error generated by trying to set the mtu on a vhost-user port us the ip command. this bug is present in stable/kilo, stable/liberty and master and i would like to ask that it be back ported if accepted and fixed in master. when using vhost-user with ovs-dpdk the vhost-user port is plugged into ovs by nova using a non atomic call to linux_net.create_ovs_vif_port to add an ovs port followed by a second call to linux_net.ovs_set_vhostuser_port_type to update the port type. see: https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637-L640 the reuse of the create_ovs_vif_port has an untended concequece of introducing an error where the ip tool is invoked to try and set the mtu on the userspace vhost-user interface which dose not exist as a kernel netdev. https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1376 this results in the in the call to set_device_mtu throwing an exception as the ip comand exits with code 1 https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1337-L1339 as a result the second function call to ovs_set_vhostuser_port_type is never maid and the vm fails to boot. to resolve this issue i would like to introduce a new function to inux_net.py create_ovs_vhostuser_port which will create the vhostuser port as an atomic action and will not set the mtu similar to the impentation in the os-vif vhost-user driver https://github.com/jaypipes/vif_plug_vhostuser/blob/master/vif_plug_vhostuser/linux_net.py#L34-L46 an alternitive solution would be to add "1" to the retrun code check here https://github.com/openstack/nova/blob/master/nova/network/linux_net.py#L1339 or catch the exception here https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L637 however neither solve the underlying cause. this was observed with kilo openstack on ubuntu 14.04 with ovs-dpdk deployed with puppet/fule. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1533876/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp