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

Reply via email to