device_path not saved into bdm.connection_info during pre_live_migration
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Undecided
|
Lee Yarwood | ||
Train |
In Progress
|
Undecided
|
Unassigned | ||
Ussuri |
In Progress
|
Undecided
|
Unassigned | ||
Victoria |
In Progress
|
Undecided
|
Unassigned | ||
Wallaby |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Description
===========
Various block based volume drivers attempt to save a device_path back into the stashed connection_info stored within Nova's block device mappings *after* connecting a volume to the underlying host. Thanks to the indirection caused by the various data structures used between the virt and compute layers this isn't actually saved into the underlying block device mapping database record during a typical attach flow until we get back into the compute and driver block device layer:
However when an instance is being live migrated these volumes are connected as part of pre_live_migration on the destination and no attempt is made to save the updates made to the connection_info of the volume into the database. This isn't a massive problem as os-brick can for the most part lookup the device during future operations but it is obviously inefficient.
This was initially hit in bug #1936439 but that bug is now being used to track in a trivial DEBUG log change while this bug will track in the underlying fix for the above issue.
Steps to reproduce
==================
* Attach an iSCSI/FC/NVME etc volume to an instance
* Live migrate the instance
* Confirm that device_path isn't present in the connection_info stashed in the bdm
Expected result
===============
device_path is stashed in the connection_info of the bdm
Actual result
=============
device_path isn't stashed in the connection_info of the bdm
Environment
===========
1. Exact version of OpenStack you are running. See the following
list for all releases: http://
master
2. Which hypervisor did you use?
(For example: Libvirt + KVM, Libvirt + XEN, Hyper-V, PowerKVM, ...)
What's the version of that?
libvirt
2. Which storage type did you use?
(For example: Ceph, LVM, GPFS, ...)
What's the version of that?
LVM/iSCSI/FC/NVMe, any block based volume backends.
3. Which networking type did you use?
(For example: nova-network, Neutron with OpenVSwitch, ...)
N/A
Logs & Configs
==============
See bug #1936439
Related fix proposed to branch: master /review. opendev. org/c/openstack /nova/+ /804229
Review: https:/