← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1719362] Re: libvirt: Data corruptor live migrating BFV instance with config disk

 

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

commit ea9bf5216be60fb3fa1704cf6257adca4e634cb1
Author: Matthew Booth <mbooth@xxxxxxxxxx>
Date:   Mon Sep 25 17:32:14 2017 +0100

    libvirt: Don't VIR_MIGRATE_NON_SHARED_INC without migrate_disks
    
    If we specify block migration, but there are no disks which actually
    require block migration we call libvirt's migrateToURI3() with
    VIR_MIGRATE_NON_SHARED_INC in flags and an empty migrate_disks in
    params. Libvirt interprets this to be the default block migration
    behaviour of "block migrate all writeable disks". However,
    migrate_disks may only be empty because we filtered attached volumes
    out of it, in which case libvirt will block migrate attached volumes.
    This is a data corruptor.
    
    This change addresses the issue at the point we call migrateToURI3().
    As we never want the default block migration behaviour, we can safely
    remove the flag if the list of disks to migrate is empty.
    
    Change-Id: I9b545ca8aa6dd7b41ddea2d333190c9fbed19bc1
    Resolves-bug: #1719362


** 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/1719362

Title:
  libvirt: Data corruptor live migrating BFV instance with config disk

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  When live migrating a BFV instance with a config disk, the API
  currently requires block migration to be specified due to the local
  storage requirement. This doesn't make sense on a number of levels.

  Before calling migrateToURI3() in this case, the libvirt driver
  filters out all disks which it shouldn't migrate, which is both of
  them: the config drive because it's read-only and we already copied it
  with scp, and the root disk because it's a volume. It calls
  migrateToURI3() with an empty migrate_disks in params, and
  VIR_MIGRATE_NON_SHARED_INC in flags (because block-migration).

  There's a quirk in the behaviour of the libvirt python bindings here:
  it doesn't distinguish between an empty migrate_disks list, and no
  migrate_disks list. Both use the default behaviour of "block migrate
  all writable disks". This will include the attached root volume. As
  the root volume is simultaneously attached to both ends of the
  migration, one of which is running guest, this a data corruptor.

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


References