SR-IOV: sometimes a port may hang in BUILD state
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mirantis OpenStack |
Fix Released
|
Medium
|
Oleg Bondarev | ||
neutron |
Fix Released
|
Medium
|
Oleg Bondarev |
Bug Description
Scenario:
1) vfio-pci driver is used for VFs
2) 2 ports are created in neutron with binding type 'direct'
3) VMs are spawned and deleted on 2 compute nodes using pre-created ports
4) one neutron port may be bound to different compute nodes at different
moments
5) for some reason (probably a bug, but current bug is not about it)
vfio-pci is not properly handling VF reset after VM deletion and for
sriov agent it looks like some port's MAC is still mapped to some PCI
slot though the port is not bound to the node
6) sriov agent requests port info from server with
get_
7) in this case neutron server sets this port to BUILD, though it may be
bound to another host:
def _get_new_
port = port_context.
if not host or host == port_context.host:
if port['status'] != new_status:
8) after processing, the agent notifies server with update_
9) server detects port's and agent's host mismatch and doesn't update status of the port
10) port stays in BUILD state
A simple fix would be to specify host at step 6 - in this case neutron server won't set port's status to BUILD because of host mismatch.
description: | updated |
description: | updated |
Changed in mos: | |
milestone: | none → 9.2-mu-3 |
assignee: | nobody → Oleg Bondarev (obondarev) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in mos: | |
status: | In Progress → Fix Committed |
Changed in neutron: | |
milestone: | none → pike-rc1 |
Fix proposed to branch: master /review. openstack. org/480997
Review: https:/