Reviewed:  https://review.openstack.org/499203
Committed: 
https://git.openstack.org/cgit/openstack/neutron/commit/?id=b184558ab6a61571160346818dcf220d925c5b30
Submitter: Jenkins
Branch:    master

commit b184558ab6a61571160346818dcf220d925c5b30
Author: Moshe Levi <mosh...@mellanox.com>
Date:   Wed Aug 30 18:35:48 2017 +0300

    ovs mech: bind only if user request switchdev
    
    In I77650be5f04775a72e2bdf694f93988825a84b72 we added
    vnic_type direct to the ovs mechanism drivers supported
    vnic_types. This cause problems when working with ovs and sriovnicswitch
    mechanism drivers in that order.  In this case the ovs will bind
    the direct port instead of the sriovnicswitch.
    
    This change make ovs mech driver to bind the direct port only
    if user requested --binding-profile '{"capabilities": ["switchdev"]}'
    in the direct port if a user don't request this capability the SR-IOV
    legacy NIC mode is used.
    
    When enable-sriov-nic-features will be implemented in nova and
    libvirt will expose the switchdev capability then nova will be
    able to select a host which supports SR-IOV nic with switchdev
    mode.
    
    [1] - 
https://review.openstack.org/#/c/435954/11/specs/pike/approved/enable-sriov-nic-features.rst
    [2] - https://www.redhat.com/archives/libvir-list/2017-August/msg00583.html
    
    Closes-Bug: #1713590
    
    Change-Id: I0b5f062bcbf02381bdf4f694fc039f9bb17a2db5


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1713590

Title:
  Plugging VFs no longer works without a readable phys_switch_id

Status in neutron:
  Fix Released

Bug description:
  Attempting to plug a VF fails with the following stack trace in the
  nova compute logs:

  2017-08-28 17:50:34.716 2843 ERROR os_vif 
[req-9fe05e3e-f7ae-4b2d-be27-90d81fe0b9fd 66e36d5620c24020ac6fa6fb8e580b6c 
df21f729c47347b299783a4c1f83e774 - default default] Failed to plug vif 
VIFHostDevice(active=False,address=fa:16:3e:de:b2:7d,dev_address=0000:0b:11.0,dev_type='ethernet',has_traffic_filtering=True,id=b5858ca0-c315-4b2a-b1a9-82a5b508bf2f,network=Network(19c75cc1-a553-4d3d-9a1a-9ad010102e31),plugin='ovs',port_profile=VIFPortProfileOVSRepresentor,preserve_on_delete=True):
 PciDeviceNotFoundById: PCI device 0000:0b:11.0 not found
  2017-08-28 17:50:34.716 2843 ERROR os_vif Traceback (most recent call last):
  2017-08-28 17:50:34.716 2843 ERROR os_vif   File 
"/usr/lib/python2.7/site-packages/os_vif/__init__.py", line 77, in plug
  2017-08-28 17:50:34.716 2843 ERROR os_vif     plugin.plug(vif, instance_info)
  2017-08-28 17:50:34.716 2843 ERROR os_vif   File 
"/usr/lib/python2.7/site-packages/vif_plug_ovs/ovs.py", line 191, in plug
  2017-08-28 17:50:34.716 2843 ERROR os_vif     self._plug_vf_passthrough(vif, 
instance_info)
  2017-08-28 17:50:34.716 2843 ERROR os_vif   File 
"/usr/lib/python2.7/site-packages/vif_plug_ovs/ovs.py", line 163, in 
_plug_vf_passthrough
  2017-08-28 17:50:34.716 2843 ERROR os_vif     pci_slot, pf_interface=True, 
switchdev=True)
  2017-08-28 17:50:34.716 2843 ERROR os_vif   File 
"/usr/lib/python2.7/site-packages/vif_plug_ovs/linux_net.py", line 373, in 
get_ifname_by_pci_address
  2017-08-28 17:50:34.716 2843 ERROR os_vif     raise 
exception.PciDeviceNotFoundById(id=pci_addr)
  2017-08-28 17:50:34.716 2843 ERROR os_vif PciDeviceNotFoundById: PCI device 
0000:0b:11.0 not found
  2017-08-28 17:50:34.716 2843 ERROR os_vif 

  
  It appears that patch https://review.openstack.org/#/c/484051/ altered 
get_ifname_by_pci_address() always run a new helper function _is_switchdev() 
(it appears that it is assumed that switchdev should always be True). This 
causes plugging VFs on systems with drivers that do not support a readable 
phys_switch_id to fail.

  I ran the code interactively on the host system to determine the
  actual exception:

  >>> f = open('/sys/class/net/enp11s17/phys_switch_id', 'r')
  >>> print f.readline()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  IOError: [Errno 95] Operation not supported

  From what I can tell, this should also cause plugging to fail on
  systems that have no phys_switch_id file at all.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1713590/+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