Comment 12 for bug 1890501

Revision history for this message
Lee Yarwood (lyarwood) wrote : Re: Soft reboot after live-migration reverts instance to original source domain XML

Anyway I've reproduced against devstack now and verified that the attached patch works for me:

I've created two bfv instances using the LVM/iSCSI c-vol backend that os-brick is presenting as raw /dev/sd* devices to Nova. b8acff7f-7430-40f8-b67f-5f51dcf07299 running on controller and 45302dcc-906f-4d47-b774-45165a867fca running on subnode.

stack@controller $ sudo virsh domblklist b8acff7f-7430-40f8-b67f-5f51dcf07299
 Target Source
--------------------
 vda /dev/sdb

stack@subnode $ sudo virsh domblklist 45302dcc-906f-4d47-b774-45165a867fca
 Target Source
--------------------
 vda /dev/sdb

stack@controller $ openstack server migrate --os-compute-api-version 2.30 --live-migration \
--host controller.example.com 45302dcc-906f-4d47-b774-45165a867fca

stack@controller $ sudo virsh domblklist 45302dcc-906f-4d47-b774-45165a867fca
 Target Source
--------------------
 vda /dev/sdc

stack@controller $ sudo virsh dumpxml 45302dcc-906f-4d47-b774-45165a867fca > original.xml
stack@controller $ openstack server reboot --soft 45302dcc-906f-4d47-b774-45165a867fca
stack@controller $ sudo virsh dumpxml 45302dcc-906f-4d47-b774-45165a867fca > soft.xml
stack@controller $ sudo virsh domblklist 45302dcc-906f-4d47-b774-45165a867fca
 Target Source
--------------------
 vda /dev/sdb

stack@controller $ diff -u original.xml soft.xml

$ diff -u original.xml soft.xml
--- original.xml 2020-08-06 11:30:36.611368640 -0400
+++ soft.xml 2020-08-06 11:30:57.531787186 -0400
@@ -1,23 +1,23 @@
-<domain type='kvm' id='6'>
+<domain type='kvm' id='7'>
   <name>instance-00000004</name>
   <uuid>45302dcc-906f-4d47-b774-45165a867fca</uuid>
   <metadata>
     <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
- <nova:package version="21.1.0"/>
- <nova:name>test</nova:name>
- <nova:creationTime>2020-08-06 15:29:32</nova:creationTime>
- <nova:flavor name="m1.tiny">
- <nova:memory>512</nova:memory>
- <nova:disk>1</nova:disk>
- <nova:swap>0</nova:swap>
- <nova:ephemeral>0</nova:ephemeral>
- <nova:vcpus>1</nova:vcpus>
- </nova:flavor>
- <nova:owner>
- <nova:user uuid="c7bfad6fb6cc45778d2eb63642eb10d5">admin</nova:user>
- <nova:project uuid="6b4564ddd49242ecad343e41e6bf134f">admin</nova:project>
- </nova:owner>
- </nova:instance>
+ <nova:package version="21.1.0"/>
+ <nova:name>test</nova:name>
+ <nova:creationTime>2020-08-06 15:29:32</nova:creationTime>
+ <nova:flavor name="m1.tiny">
+ <nova:memory>512</nova:memory>
+ <nova:disk>1</nova:disk>
+ <nova:swap>0</nova:swap>
+ <nova:ephemeral>0</nova:ephemeral>
+ <nova:vcpus>1</nova:vcpus>
+ </nova:flavor>
+ <nova:owner>
+ <nova:user uuid="c7bfad6fb6cc45778d2eb63642eb10d5">admin</nova:user>
+ <nova:project uuid="6b4564ddd49242ecad343e41e6bf134f">admin</nova:project>
+ </nova:owner>
+ </nova:instance>
   </metadata>
   <memory unit='KiB'>524288</memory>
   <currentMemory unit='KiB'>524288</currentMemory>
@@ -59,7 +59,7 @@
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
     <disk type='block' device='disk'>t
       <driver name='qemu' type='raw' cache='none' io='native'/>
- <source dev='/dev/sdc'/>
+ <source dev='/dev/sdb'/>
       <backingStore/>
       <target dev='vda' bus='virtio'/>
       <serial>878ba969-13dc-4fc1-b6c3-48e2b05db256</serial>
@@ -117,8 +117,8 @@
     </rng>
   </devices>
   <seclabel type='dynamic' model='selinux' relabel='yes'>
- <label>system_u:system_r:svirt_t:s0:c459,c924</label>
- <imagelabel>system_u:object_r:svirt_image_t:s0:c459,c924</imagelabel>
+ <label>system_u:system_r:svirt_t:s0:c487,c991</label>
+ <imagelabel>system_u:object_r:svirt_image_t:s0:c487,c991</imagelabel>
   </seclabel>
   <seclabel type='dynamic' model='dac' relabel='yes'>
     <label>+107:+107</label>

stack@controller $ openstack server reboot --hard 45302dcc-906f-4d47-b774-45165a867fca
stack@controller $ sudo virsh domblklist 45302dcc-906f-4d47-b774-45165a867fca
 Target Source
--------------------
 vda /dev/sdc

I ran through this again after patching n-cpu on both hosts using a new instance 46668d49-d9e7-4953-b88d-8e642ac4360e and the XML persists correctly:

stack@controller $ git am ~/0001-libvirt-Provide-VIR_MIGRATE_PARAM_PERSIST_XML-during.patch
stack@controller $ sudo systemctl restart devstack@n-*

stack@subnode $ git am ~/0001-libvirt-Provide-VIR_MIGRATE_PARAM_PERSIST_XML-during.patch
stack@subnode $ sudo systemctl restart devstack@n-*

stack@controller $ openstack server migrate --os-compute-api-version 2.30 --live-migration --host controller.example.com 46668d49-d9e7-4953-b88d-8e642ac4360e

stack@controller $ sudo virsh dumpxml 46668d49-d9e7-4953-b88d-8e642ac4360e > original.xml
stack@controller $ sudo virsh domblklist 46668d49-d9e7-4953-b88d-8e642ac4360e
 Target Source
--------------------
 vda /dev/sdc

stack@controller $ openstack server reboot --soft 46668d49-d9e7-4953-b88d-8e642ac4360e
stack@controller $ sudo virsh dumpxml 46668d49-d9e7-4953-b88d-8e642ac4360e > soft.xml
stack@controller $ sudo virsh domblklist 46668d49-d9e7-4953-b88d-8e642ac4360e
 Target Source
--------------------
 vda /dev/sdc
$ diff -u original.xml soft.xml
--- original.xml 2020-08-06 12:22:45.076125282 -0400
+++ soft.xml 2020-08-06 12:22:55.031329078 -0400
@@ -1,23 +1,23 @@
-<domain type='kvm' id='13'>
+<domain type='kvm' id='14'>
   <name>instance-00000005</name>
   <uuid>46668d49-d9e7-4953-b88d-8e642ac4360e</uuid>
   <metadata>
     <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
- <nova:package version="21.1.0"/>
- <nova:name>test</nova:name>
- <nova:creationTime>2020-08-06 16:13:26</nova:creationTime>
- <nova:flavor name="m1.tiny">
- <nova:memory>512</nova:memory>
- <nova:disk>1</nova:disk>
- <nova:swap>0</nova:swap>
- <nova:ephemeral>0</nova:ephemeral>
- <nova:vcpus>1</nova:vcpus>
- </nova:flavor>
- <nova:owner>
- <nova:user uuid="c7bfad6fb6cc45778d2eb63642eb10d5">admin</nova:user>
- <nova:project uuid="6b4564ddd49242ecad343e41e6bf134f">admin</nova:project>
- </nova:owner>
- </nova:instance>
+ <nova:package version="21.1.0"/>
+ <nova:name>test</nova:name>
+ <nova:creationTime>2020-08-06 16:13:26</nova:creationTime>
+ <nova:flavor name="m1.tiny">
+ <nova:memory>512</nova:memory>
+ <nova:disk>1</nova:disk>
+ <nova:swap>0</nova:swap>
+ <nova:ephemeral>0</nova:ephemeral>
+ <nova:vcpus>1</nova:vcpus>
+ </nova:flavor>
+ <nova:owner>
+ <nova:user uuid="c7bfad6fb6cc45778d2eb63642eb10d5">admin</nova:user>
+ <nova:project uuid="6b4564ddd49242ecad343e41e6bf134f">admin</nova:project>
+ </nova:owner>
+ </nova:instance>
   </metadata>
   <memory unit='KiB'>524288</memory>
   <currentMemory unit='KiB'>524288</currentMemory>
@@ -117,8 +117,8 @@
     </rng>
   </devices>
   <seclabel type='dynamic' model='selinux' relabel='yes'>
- <label>system_u:system_r:svirt_t:s0:c543,c672</label>
- <imagelabel>system_u:object_r:svirt_image_t:s0:c543,c672</imagelabel>
+ <label>system_u:system_r:svirt_t:s0:c40,c378</label>
+ <imagelabel>system_u:object_r:svirt_image_t:s0:c40,c378</imagelabel>
   </seclabel>
   <seclabel type='dynamic' model='dac' relabel='yes'>
     <label>+107:+107</label>