← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1703629] Re: Evacuation fails for instances with PCI devices due to missing migration

 

Reviewed:  https://review.openstack.org/484381
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=b930336854bffec1bb81b6d67079a4df59e0af19
Submitter: Zuul
Branch:    master

commit b930336854bffec1bb81b6d67079a4df59e0af19
Author: Steven Webster <steven.webster@xxxxxxxxxxxxx>
Date:   Mon Jun 12 17:10:03 2017 -0400

    Fix instance evacuation with PCI devices
    
    update_port_binding_for_instance() now checks that a valid migration
    object exists as a parameter before any mapping between old/new PCI
    devices can occur.  A migration should be present in the case of a
    cold migration, resize, or evacuation.
    
    An evacuation (being a special case of a rebuild) however, will not
    pass a migration to update_port_binding_for_instance, as it
    is called directly from setup_instance_network().  This calling function
    does not currently take a migration parameter, even though one will
    certainly exist for an evacuation.
    
    This commit adds an optional migration parameter to
    setup_instance_network_on_host() and passes any migration object to
    the port update routine.
    
    Closes-Bug: #1703629
    Related-Bug: #1677621
    Related-Bug: #1630698
    
    Change-Id: I4e394c8d275995eac4b049a7b1329ea90f2394be


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

-- 
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/1703629

Title:
  Evacuation fails for instances with PCI devices due to missing
  migration

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  Description
  ===========

  The fix for bug https://bugs.launchpad.net/nova/+bug/1677621 enforced
  a requirement for a migration object to be present in the call to
  update_port_binding_for_instance() in order to do any mapping from old
  PCI devices to new PCI devices when an instance is
  migrated/resized/evacuated.

  During an evacuation, a migration is created, but never passed down to
  update_port_binding_for_instance().

  This can cause an instance to be spawned on the new host with an
  incorrect (PCI) port binding.

  This can happen even with the proposed fix to related bug #1630698.

  Steps to reproduce
  ==================

  Two node setup
  - Launch an instance with PCI-PT or SR-IOV port bindings
  - Stop nova-compute on the destination host
  - nova evacuate <instance>

  Expected result
  ===============

  The instance should migrate to a new host (provided resources are
  available) with an updated port binding using PCI device(s) on the new
  host.

  Actual result
  =============

  Instance launched using port bindings from the old host.

  
  Environment
  ===========

  2. Which hypervisor did you use?
     libvirt

  3. Which networking type did you use?
     - Affects neutron with openvswitch

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1703629/+subscriptions


References