[Bug 1892132] Fix merged to os-vif (stable/ussuri)

OpenStack Infra 1892132 at bugs.launchpad.net
Mon Sep 6 12:52:54 UTC 2021


Reviewed:  https://review.opendev.org/c/openstack/os-vif/+/765967
Committed: https://opendev.org/openstack/os-vif/commit/1226d46cc8bde9531821c68465a05292528142f0
Submitter: "Zuul (22348)"
Branch:    stable/ussuri

commit 1226d46cc8bde9531821c68465a05292528142f0
Author: Mamduh Alassi <mamduhala at mellanox.com>
Date:   Wed Aug 12 16:24:47 2020 +0300

    Fix - os-vif fails to get the correct UpLink Representor
    
    Till kernel 5.7 PF and VF representors are exposed as virtual device.
    They are not linked to its parent PCI device like how uplink
    representor is linked.
    
    Starting from kernel 5.8 due to new change [1] the PF and VF representors are
    linked to their parent PCI device, and so "get_ifname_by_pci_address" fails
    to get the correct UpLink Representor.
    
    This patch modifys the behviour of "get_ifname_by_pci_address" to
    check the physical port name of the netdev in
    vf_pci_addr_path/physfn/net to match the formart for the uplink "p\d+".
    
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=123f0f53dd64b67e34142485fe866a8a581f12f1
    
    Closes-Bug: #1892132
    Change-Id: I49f6ae3f0e6bfbf555c8284bfd70371ce90da0c7
    (cherry picked from commit a28aafa796378b8a36ccb51d2c0010a44f622d14)

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to python-os-vif in Ubuntu.
https://bugs.launchpad.net/bugs/1892132

Title:
  Failure to get the correct UpLink Representor

Status in os-vif:
  Fix Released
Status in os-vif victoria series:
  Fix Committed
Status in libvirt package in Ubuntu:
  Fix Released
Status in python-os-vif package in Ubuntu:
  Fix Released
Status in libvirt source package in Focal:
  Fix Committed
Status in python-os-vif source package in Focal:
  In Progress
Status in libvirt source package in Groovy:
  Won't Fix
Status in python-os-vif source package in Groovy:
  Won't Fix
Status in libvirt source package in Hirsute:
  Fix Committed
Status in python-os-vif source package in Hirsute:
  Fix Released
Status in libvirt source package in Impish:
  Fix Released
Status in python-os-vif source package in Impish:
  Fix Released

Bug description:
  [Impact] 
  An update to the mlx5_core driver [1] which will be made available to users of stable releases both through HWE kernels and DKMS packages provided by NVIDIA/Mellanox [2] makes some assumptions about sysfs layout made by OS-VIF and Libvirt apparent.

  To allow users with this hardware to continue to enjoy their existing
  systems with the most recent drivers updates are required to os-vif
  and libvirt.

  Without this update these systems will stop functioning when upgrading
  to the new mlx5_core driver.

  [Test Plan]
  Note: Hardware making use of the mlx5_core driver with support for HWOL is required to test these changes.

  1. Deploy OpenStack on machines with HWOL enabled using kernel without [1]
  2. Create an instance using an HWOL port
  3. Confirm the instance can start and that it has connectivity
  4. Upgrade to kernel with [1] and re-confirm

  [Regression Potential]
  For OS-VIF the changes are made to code paths used exclusively by consumers of this type of hardware and HWOL enabled. They are also made in a backward compatible way so that it works both with the old and new driver.

  For Libvirt the change is made in such a way that it will behave as
  before when used to look up hardware that populates net/phys_port_id.
  When used with hardware that do not populate net/phys_port_id but use
  net_phys_port_name instead, which is typical for the hardware in
  question, the new behavior is used.

  [Original Bug Description]
  Due to new kernel patch here [1], the PF and VF representors are linked to their parent PCI device.

  Old Structure:
  The structure of VF's PCI Address/physfn/net contains only the PF of that VF

  $ ls /sys/bus/pci/devices/<vf-pci-addre>/physfn/net/
  enp2s0f0

  $ ls -l /sys/class/net
  ...
  lrwxrwxrwx 1 root root 0 Aug 17 11:11 enp2s0f0_0 -> ../../devices/virtual/net/enp2s0f0_0
  lrwxrwxrwx 1 root root 0 Aug 17 11:11 enp2s0f0_1 -> ../../devices/virtual/net/enp2s0f0_1
  lrwxrwxrwx 1 root root 0 Aug 17 11:11 enp2s0f0_2 -> ../../devices/virtual/net/enp2s0f0_2
  lrwxrwxrwx 1 root root 0 Aug 17 11:11 enp2s0f0_3 -> ../../devices/virtual/net/enp2s0f0_3
  ...

  New Structure:
  The structure of VF's PCI Address/physfn/net contains the PF of that VF and the VF representors

  $ ls /sys/bus/pci/devices/<vf-pci-addre>/physfn/net/
  enp3s0f0  enp3s0f0_0  enp3s0f0_1  enp3s0f0_2  enp3s0f0_3

  $ ls -l /sys/class/net
  ...
  lrwxrwxrwx. 1 root root    0 Aug 17 08:43 enp3s0f0_0 -> ../../devices/pci0000:00/0000:00:02.0/0000:03:00.0/net/enp3s0f0_0
  lrwxrwxrwx. 1 root root    0 Aug 17 08:43 enp3s0f0_1 -> ../../devices/pci0000:00/0000:00:02.0/0000:03:00.0/net/enp3s0f0_1
  lrwxrwxrwx. 1 root root    0 Aug 17 08:43 enp3s0f0_2 -> ../../devices/pci0000:00/0000:00:02.0/0000:03:00.0/net/enp3s0f0_2
  lrwxrwxrwx. 1 root root    0 Aug 17 08:43 enp3s0f0_3 -> ../../devices/pci0000:00/0000:00:02.0/0000:03:00.0/net/enp3s0f0_3
  ...

  [1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=123f0f53dd64b67e34142485fe866a8a581f12f1
  [2] https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed

To manage notifications about this bug go to:
https://bugs.launchpad.net/os-vif/+bug/1892132/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list