libvirt: Data corruptor live migrating BFV instance with config disk
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
Matthew Booth | ||
Ocata |
Fix Committed
|
High
|
Matt Riedemann | ||
Pike |
In Progress
|
High
|
Matthew Booth |
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_
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.
tags: | added: libvirt volumes |
Changed in nova: | |
importance: | Undecided → High |
Changed in nova: | |
assignee: | Matthew Booth (mbooth-9) → Matt Riedemann (mriedem) |
Changed in nova: | |
assignee: | Matt Riedemann (mriedem) → melanie witt (melwitt) |
Changed in nova: | |
assignee: | melanie witt (melwitt) → Matthew Booth (mbooth-9) |
Changed in nova: | |
assignee: | Matthew Booth (mbooth-9) → Matt Riedemann (mriedem) |
Changed in nova: | |
assignee: | Matt Riedemann (mriedem) → Matthew Booth (mbooth-9) |
Fix proposed to branch: master /review. openstack. org/507202
Review: https:/