yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #69019
[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